ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

五万字,快速读完《图解TCP/IP》核心内容!!!(建议收藏)

2021-10-24 11:01:25  阅读:183  来源: 互联网

标签:协议 IP 网络 TCP 地址 图解 路由


目录

1. 网络基础知识

1.1 计算机网络出现的背景

1.2 计算机与网络发展的7个阶段

1.3 协议

1.4 协议由谁规定

1.5 协议分层与OSI参考模型

1.6 OSI参考模型通讯处理举例

1.7 传输方式的分类

1.8 地址

1.9 网络的构成要素

1.10 现代网络实态

2.TCP/IP基础知识

2.1 TCP/IP出现的背景与历史

2.2 TCP/IP的标准化

2.3 互联网基础知识

2.4 TCP/IP基础模型

2.5 TCP/IP分层模型与通信实例

3. 数据链路

3.1 数据链路的作用

3.2 数据链路相关技术

3.3 以太网

3.4 无线通信

3.5 PPP

3.6 其他数据链路

3.7 公共网络

4.IP协议

4.1 IP即网络协议

4.2 IP基础知识

4.3 IP地址的基础知识

4.4 路由控制

4.5 IP分割与再构成处理

4.6 IPv6

4.7 IPv4 首部

4.8 IPv6 首部格式

5.IP协议相关技术

5.1 仅凭IP无法完成通信

5.2 DNS

5.3 APR

5.4 ICMP

5.5 DHCP

5.6 NAT

5.7 IP隧道

5.8 其他IP相关技术

6.TCP与UDP

6.1 传输层的作用

6.2 端口号

6.3 UDP

6.4 TCP

6.5 其他传输层协议

6.6 UDP首部的格式

6.7 TCP首部格式(强烈建议看看原文P222)

7.路由协议

7.1 路由控制的定义

7.2 路由控制范围

7.3 路由算法

7.4 RIP

7.5 OSPF

7.6 BGP

7.7 MPLS

8.应用协议

8.1 应用层协议概要

8.2 远程登陆

8.3 文件传输

8.4 电子邮件

8.5 WWW

8.6 网络管理

8.7 其他应用层协议

9.网络安全

9.1 TCP/IP与网络安全

9.2 网络安全构成要素

9.3 加密技术基础

9.4 安全协议

10.关于本博客


1. 网络基础知识

1.1 计算机网络出现的背景

最早出现的计算机是美国军方为了计算导弹落点而产生的,体积很大,很难普及,随着技术的发展计算机越来越普及和多样化,这时候就需要实现计算机的信息交流。

起初计算机以独立模式使用计算机,为了信息交流,将一台台计算机连接在一起,形成一个计算机网络,人们便可以以网络互联模式使用计算机。

计算机网络根据规模又分为广域网(WAN,Wide Area Network)和局域网(LAN,Local Area Network)。

局域网:一栋楼或大学校园中有限的,狭小的,区域内网络。

广域网:跨接相距较远的计算机或局域网的网络。

计算机网络好比一个人的神经系统。一个人身上的所有感觉都经神经传递到大脑。与之类似,世界各地的信息也通过网络传递到每个人的计算机中。

1.2 计算机与网络发展的7个阶段

20世纪50年代          批处理时代

为了让更多的人使用计算机,出现了批处理系统。所谓批处理,是指事先将用户程序和数据装入卡带或磁带,并由计算机按照一定的顺序读取,使用户所要执行的这些程序和数据能够一并批量得到处理的方式。

这个时代的计算机主要用于大规模计算或处理,并不是普通人就能使用的工具。

20世纪60年代          分时系统时代

指多个终端与同一个计算机连接,允许多个用户同时使用一台计算机的系统。

当时计算机造价昂贵,分时系统的产生实现了“一人一机”的目的,让用户感觉好像“完全是自己在使用一台计算机一样。”这也体现了分时系统的独占性。

这个时代,小型机也随即产生,办公场所和工厂也逐渐引入计算机。

20世纪70年代          计算机间通讯时代

这时计算机体积趋于小型化,为了提高效率,人们开始研究计算机之间的通信的技术。计算机与计算机之间由通讯线路连接,人们可以通过此技术读取另一台计算机中的数据,从而极大地缩短了传送数据的时间。

20世纪80年代          计算机网络时代

到了80年代,一种能够互联多种计算机的网络随之诞生,它能够让各式各样的计算机相互连接,从大型的超级计算机到小型的个人电脑。

20世纪90年代          互联网普及时代

这时,专注于信息处理的公司和大学已为每一位员工或研究人员分配了一台计算机,形成了“一人一机”的环境。但这种环境成本不菲,人们渴望连接不同厂商的计算机建立一个成本更低的网络环境,而连接异构型计算机的通信网络技术就是我们所看到的互联网技术。

面临互联网的广泛应用,各家厂商不仅力图保证自家产品的互联性,还着力于让自己的网络技术不断与互联网技术兼容。

 个人电脑在诞生之初可以说是一种单机模式的工具,而现在它则被更广泛地应用于互联网的访问。而且,无论相距多远,世界各地的人只要接入互联网,就可以通过个人电脑实现即时沟通与交流。

2000年                      以互联网为中心的时代

互联网的普及和发展对通讯领域产生了巨大的影响,许多技术都向互联网靠拢。

2010年                      无论何时何地一切皆TCP/IP的网络时代

从“单纯建立连接”到“安全建立连接”。

互联网是由许多独立发展的网络通讯技术融合而成,使它们之间不断融合并实现统一的正是TCP/IP技术。那什么是TCP/IP技术呢?

TCP/IP是通讯协议的统称。下面我们来学习“协议”的概念。

1.3 协议

在计算机网络与信息通信领域里,人们经常提及“协议”一词。互联网常用的具有代表性的协议有IP,TCP,HTTP等。

“计算机网络体系结构”将这些网络协议进行了系统的归纳。TCP/IP就是IP,TCP,HTTP等协议的集合。可用于互联网和局域网。

简单来说,协议就是计算机与计算机之间通过网络实现通信时实现达成的一种“约定”。这种“约定”使那些由不同厂商的设备,不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。

协议就好比是一种语言,两人之间谈话的协议(语言)不同,就无法将数据(所说的话)传递给对方。

 计算机没人智能,所以在设计计算机程序与硬件时,要充分考虑通讯过程中可能会遇到的各种异常以及对异常的处理。在实际遇到问题时,正在通讯的计算机之间也必须具备相应的设备和程序来应对异常。

 分组交换是指将大数据分割为一个个的叫包(Packet)的较小单位进行传输的方法。这里所说的包,如同我们平常在邮局里见到的邮包。分组交换就是将大数据分装为一个个这样的邮包交给对方。

1.4 协议由谁规定

在计算机通信诞生之初,系统化和标准化并未得到重视,每家计算机厂商都出产各自的网络产品来实现计算机通信。对于协议的标准化,分层化等事宜没有特别强烈的意识。

随着计算机重要性的不断提高,很多公司逐渐意识到兼容性的重要意义。人们开始着手研究使不同厂商生产的异构机型也能够互相通信的技术。

 为了实现协议的标准化,国际标准化组织(ISO)制定了一个OSI(开放式通信系统互联参考模型),本文讲解的TCP/IP协议作为互联网上的一种标准,也作为行业标准,俨然已成为全世界所广泛应用的通讯协议。

1.5 协议分层与OSI参考模型

OSI模型将通讯协议中必要的协议分为7层。通过这些分层,使得那些复杂的网络协议更加简单化。

在分层中,每个分层都接收由它下一层所提供的特定服务,并且负责为自己的上一次提供特定的服务。上下层之间进行交互时所遵循的约定叫做“接口”,同一层之间的交互所遵循的约定叫做“协议”

为了更好的理解上图,我们以电话聊天为例,下图中A与C正在通过电话(通讯设备)用汉语(语言协议)聊天。 

 

分层可以将每个分层独立使用,即使系统中某些分层发生变化,也不会波及整个系统,通过分层可以细分通讯功能。

下面我们来认识OSI参考模型

OSI参考协议是一个“模型”,它也只是对各层的作用做了一系列粗略的界定,并没有对协议和接口进行详细的定义。对学习和设计协议只起到一个引导的作用。

各个分层的作用 

应用层:为应用程序提供服务并规定应用层程序中通信相关的细节。包括文件传输,电子邮件,远程登录(虚拟终端)等协议。

表示层:将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转按为上层能够处理的格式。因此它主要负责数据格式的转换。

具体来说,就是将设备固有的数据格式转换为网络标准传输格式。不同设备对同一比特流解释的结果可能会不同。因此,使它们保持一致是这一层的主要作用。

会话层:负责建立和断开通信连接(数据流动的運辑通路),以及数据的分割等数据传输相关的管理。传输层:起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。

网络层:将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某一个地址。因此这一层主要负责寻址和路由选择。

数据链路层:负责物理层面上互连的、节点之间的通信传输。例如与1个以太网相连的2个节点之间的通信。将0、1序列划分为具有意义的数据桢传送给对端(数捆桢的生成与接收)。

物理层:负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换。

1.6 OSI参考模型通讯处理举例

(这一小节博主只介绍了关键流程,强烈建议下来有空看看书,对理解很有帮助)

下面举例说明7层网络模型的功能。假设使用主机A的用户A要给使用主机B的用户B发来一封电子邮件。

发送端从上到下按照顺序传输数据,接收端由下至上按照顺序传输顺序。

在每个分层上,在处理由上一层传过来的数据时可以附上当前分层协议所必须的“首部”信息。然后接收端对收到的数据进行数据“首部”与“内容”的分离,再转发给上一分层,最终将发送端的数据恢复原状。

1.7 传输方式的分类

网络与通信中可以根据其数据发送方法进行多种分类,下面我们来介绍几种。

通过网络发送数据,大致可分为面向有连接与面向无连接两种类型。

 面向有连接型中,在发送数据之前,需要在收发主机之前连接一条通信线路。面向有连接型就好像人平常打电话,输入完对方电话号码播出之后,只有对方端拿起电话才是真正通话。

面向无连接型则不要求建立和断开连接。发送端可于任何时间发送数据,接收端则永远不知道自己会在何时从哪里接收数据,因此,接收端需要时常确认是否收到了数据。就好像邮差一样,负责处理邮件业务的营业员,不需要确认收件人的详细地址是否真的存在,也不需要确认收件人是否真的能收到包裹,只需要发件人有一个寄件地址就可以办理邮寄包裹的业务。

目前,网络通信方式大致分为两种——电路交换和分组交换。(这里博主本想简单概括,但还是需要大家结合图片耐心细读~)

前者多用于过去的电话网,后者是一种较新的通信方式,TCP/IP协议就是采用了分组交换技术。

在电路交换中,交换机主要负责数据的中转处理。计算机首先被连接到交换机上,而交换机与交换机之间则有众多通信线路再继续连接。因此计算机之间在发送数据时,需要通过交换机与目标主机建立通信电路。我们将连接电路称为建立连接。建立好连接后,用户可以一直使用这条电路,直到该连接被断开为止。

如果某条电路只是用来连接两台计算机的通信线路,就意味着只需在这两台计算机之间实现通信,因此这两台计算机是可以独占线路进行数据传输的。但是,如果一条电路上连接了多台计算机,而这些计算机之间需要相互传递数据,就会出现新的问题。鉴于一台计算机在收发信息时会独占整个电路,其他计算机只能等待这台计算机处理结束以后才有机会使用这条线路收发数据。并且在此过程中,谁也无法预测某一台计算机的数据传输从何时开始又在何时结束。如果并发用户数超过交换机之间的通信线路数,就意味着通信根本无法实现。

为此,人们想出了一个新的方法,即让连接到通信电路的计算机将所要发送的数据分成多个数据包,按照一定的顺序排列之后分别发送。这就是分组交换。有了分组交换,数据被纸分后,所有的计算机就可以一齐收发数据,这样也就提高了通信线路的利用率。由于在分组的过程中,已经在每个分组的首部写人了发送端和接收端的地址,所以即使同一条线路同时为多个用户提供服务,也可以明确区分每个分组数据发往的目的地,以及它是与哪台计算机进行的通信。

                                                         (图为分组交换)

 在分组交换中,由分组交换机(路由器)连接通信线路。分组交换的大致处理过程是:发送端计算机将数据分组发送给路由器,路由器收到这些分组数据以后,缓存到自己的缓冲区,然后再转发给目标计算机。因此,分组交换也有另一个名称:蓄积交换。路由器接收到数据以后会按照顺序缓存到相应的队列当中,再以先进先出的顺序将它们逐一发送出去”。在分组交换中,计算机与路由器之间以及路由器与路由器之间通常只有一条通信线路。因此,这条线路其实是一条共享线路。

在电路交换中,计算机之间的传输速度不变。然而在分组交换中,通信线路的速度可能会有所不同。根据网络拥堵的情况,数据达到目标地址的时间有长有短。另外,路由器的缓存饱和或溢出时,甚至可能会发生分组数据丢失,无法发送到对端的情况。

网络通信当中,也可以根据目标地址的个数及后续的行为对通信进行分类。如广播多播就是这种分类的产物。

分为单播,广播,多播,任播。

单播:比如早先的固定电话,1对1通信。

广播:典型例子就是电视播放,将电视信号一齐发送非非特定的多个接受对象。

多播:和广播类似,不同的是要限定某一组主机为接收端。

任播:在特定的多台主机中选出一台作为接受端。

1.8 地址

通讯过程中,发送端和接收端可以被视为通信主体。它们都能由一个所谓的“地址”的信息标识出来。当人们使用电话时,电话号码就相当于“地址”。

在实际的网络通信中,每一层的协议所使用的地址都不尽相同,例如在TCP/IP通信中使用MAC地址,IP地址,端口号等信息作为OSI模型不同层的地址标识。

一个地址必须明确地表示一个主体对象,在同一个通信网络中不允许由两个相同地址的通信主体存在,这就是地址的唯一性。 

在1:1的单播中可以理解,那如何理解多播,广播,任播呢?如何做到通过一个地址访问多个设备?

这种情况下,接收端设备可能不止一个,为此,可以对这些由多个设备组成的一组通信赋予同一个具有唯一特性的地址。从而接收对象。就好比

当地址总数越来越多时,如何高效的从中找出通信的目标地址成为一个重要的问题。为此人们发现地址除了具有唯一性还需要具有层次性。

其实电话和信件通信中就有了地址分层的概念。电话地址包含国家区号和国内区号,通信地址包含国名,省名,市名和区名等,正是有了这些层次分类才能更加快速的定位某一个地址。

此外,MAC地址和IP地址在标识一个通信主体时虽然具有唯一性,但是它们当中只有IP地址具有层次性。

那IP地址时如何实现分层的呢?(原文P36可加强理解)

一方面,IP地址由网络号和主机号两部分组成,即使IP地址不同,若主机号不同,网络号相同,说明它们处于同一个网段。通常,处于同一网段的主机也都属于同一个部门或集团组织。另一方面,网络号相同的主机在组织结构,供应商类型和地域分布都比较集中,也为IP寻址带来了极大的方便,这也是为什么说IP地址具有层次性的原因。

1.9 网络的构成要素

 搭建一套网络环境要涉及各种各样的电缆和网络设备。在此仅介绍连接计算机与计算机的硬件设备。 

问:计算机网络是指计算机与计算机相连而组成的网络。那么现实中计算机之间又是怎样连接的呢?

答:计算机之间通过电缆相互连接,电缆有很多种,双绞线电缆,光纤电缆,同轴电缆,串行电缆等,根据数据链路(相互直连的设备之间进行通信所涉及的协议及其网络。为此,有众多介质与之对应)的不同选用的电缆类型也不尽相同,而媒介本身也可以被划分为电波,微波等不同类型的电磁波。

现在我们来认识一硬件,网卡。任何一台计算机连接网络时,必须使用网卡(全称是网络接口卡)。网络接口卡(NIC)有时也被叫做网络适配器,网卡,LAN卡。

现在许多设备都已内置网卡,如果没有配置网卡,至少得外接一个拓展槽以便插入网卡。

接下来我们来认识中继器———是OSI模型的第一层,物理层面延长网络的设备。由电缆传来的电信号或光信号经由中继器的波形调整和放大再传给另一个电缆。

一般而言,中继器两端连接的是相同的通信媒介,但有的中继器也可以完成不同媒介之间的传递工作。中继器的网络距离并非无限延长,例如一个10Mbps的以太网最多可以由4个中继器分段连接,而一个100Mbps的以太网则最多只能连接两个中继器。

有些中继器可以提供多个端口服务。这种中继器被称作中继集线器或集线器。因此,集线器也可以看作是多口集线器,每个端口都可以成为一个中继器。

网桥/2层交换机

网桥在OSI模型的第2层———数据链路层面上连接两个网络的设备。它能够识别数据链路层的数据帧(与分组数据意思大致相同,但是在数据链路层习惯称为帧),并将这些数据帧临时储存于内存,再重新生成信号作为一个全新的帧转发给另一个网段。

数据帧中有一个数据位叫做FCS,用以检测数据是否正确送达目的地,用以检测数据是否送达目的地。网桥通过检测这个值,将那些损坏的值丢弃。此外,网桥还能通过地址自学机制和过滤功能控制网络流量。

有些网桥能够判断是否将数据报文转发给相邻的网段,这种网桥称为自学式网桥。这类网桥会记住曾经通过自己转发的所有的数据帧的MAC地址,并保存到自己的内存表里,来判断哪个网段中包含持有哪类MAC地址的设备。(很聪明有没有?)

 以太网中使用的交换集线器现在基本也属于网桥的一种,交换集线器中连接电缆的每个端口都能提供类似网桥的功能。

路由器/3层交换机

 路由器是在OSI模型的第3层———网络层面连接两个网络,并对分组报文进行转发的设备。网桥是根据物理地址(MAC地址)进行处理,而路由器/3层交换机则是根据IP地址进行处理的。路由器可以连接到不同的数据链路。

4·~7层交换机

 4·~7层交换机负责处理OSI模型中从传输层到数据层的数据。如果有TCP/IP分层模型,4~7层交换机就是以TCP等协议的传输层机器上面的应用层为基础,分析收发数据,并对其进行特定的处理。

我们来举例一种4~7层交换机模型,对于一个并发访问量非常大的企业级Web站点,使用一台服务器不足以满足前端的访问需求,需要架设多台服务器来分担。为了能通过同一个URL将前端访问分发到后台多个服务器上,可以在这些服务器的前端加一个负载均衡器。这个负责均衡器就是4~7层交换机的一种。

网关

 网关是OSI模型中负责从传输层到应用层的数据进行转换和转发的设备。网关不仅转发数据还对数据进行转换,它通常会使用一个表示层或应用层网关,在两个不能进行直接通信的协议之间通信,最终实现两者之间的通信。

一个典型的例子就是互联网邮件和手机邮件之间的转换服务,为什么连到互联网的电脑与手机之间能够互发邮件呢?

互联网和手机设置了一道网关,网关负责读取完各种不同的协议后,对它们逐一进行合理的转换,再将相应的数据转发出去,这样一来不用电子邮件的协议也可以互相发邮件。

1.10 现代网络实态

我们以交通道路为例说明现实当中的网络配置。

高速公路的“骨干”或“核心”相当于计算机网络的中心,人们 通常选用高速路由器相互连接使之快速传递大量数据。

网络中相应于高速公路出入口的部分被称为“边缘网络”,常用的设备有多功能路由器和3层交换机。

高速公路出入口连接出国道,省道,从而可以直接通往市区街道对应计算机网络中连接“边缘网络”的部分叫做“接入层”或“汇聚层”。

问:那实际的互联网通信是怎么构成的呢?

 答:人们在连接互联网时,一般会选用互联网接入服务。联网之后,汇集到无线局域网路由器和最近交换器和最近交换机的通信会再次被连接到前面所提到的“接入层”,甚至还有可能通过“边缘网络”或“主干网”实现与目标地址间的通信。

手机开机就会和最近的基站发生无线通信,基站上有手机基站天线,基站本身也相当于网络的“接入层”。基站收集发通信请求被汇集到控制中心(“边缘网络”),之后会再被接入到互联通信控制中心的主干网。

 接下来我们从信息发布者的角度来看网络,网络信息传播的以往的主流做法是个人或企业自己制作网站(主页)部署到服务器中将所要发布的信息公之于众。现在,通过博客,托管主机的方式被更多人选择。

2.TCP/IP基础知识

2.1 TCP/IP出现的背景与历史

目前,计算机网络领域中,TCP/IP协议可谓名气最大,使用范围最广。那TCP/IP协议是如何在短时间内获得如此广泛普及的呢?

还记得我们刚开始说的吗?计算机通信技术最早是美国军方为了计算导弹落点而产生的一项技术,在20世纪60年代,以美国国防局为中心的组织展开了类似的研究。

美国国防局希望通信时即使遭到了敌方的破坏,也可以通过迂回的方式实现通信,使通信不间断。

分组交换技术不仅能实现军工防卫的应用,还可以使多个用户同一时间共享同一条通信线路,降低了搭建线路的成本。

 

1969年,为验证分组交换技术的实用性,研究人员搭建了一套网络在研究所和高校之间,这套网络被称为ARPANET,也是全球互联网的鼻祖。这也说明基于分组交换技术的通信方法是可行的。

20世纪70年代,ARPANET的一个研究机构研发出了TCP/IP,直到1982年,TCP/IP才被最终定下来,于1983年成为ARPANET网络唯一指定的协议。

1980年,ARPANET中的很多大学与研究机构开始使用一种叫做BSD UNIX的操作系统, 由于BSD UNIX实现了TCP/IP协议,所以很快在1983年,TCP/IP被ARPANET正式采用。

由于当时局域网,UNIX工作站,TCP/IP构建网络盛行,那些大学和研究机构也逐渐开始将ARPANET连接到了NSFnet网络,此后,基于TCP/IP而形成的世界性范围的网络——互联网诞生了。以连接UNIX主机的形式连接各个终端节点,这一主要方式使互联网得到了迅速的普及。

互联网最初是用于实验和研究,到了1990逐渐被引入公司企业和一般家庭。也出现了专门提供互联网接入服务的公司(ISP),这些都使互联网得到了更为广泛的普及。

连接到互联网可以以www获取世界各处的信息,可以通过电子邮箱进行交流,还可以向全世界发布自己的信息,互联网使人们的生活变得更加多姿多彩,因此商用互联网得到广泛的普及。

2.2 TCP/IP的标准化

为什么OSI协议并没有得到普及,真正被广泛使用的是TCP/IP协议?究其原因,是由TCP/IP的标准化所致。

从字面意思上讲,有人认为TCP/IP是指TCP与IP两种协议,实际生活中有时也确实是指这两种协议,但很多时候,它只是利用IP通信时所必要用到的协议群的统称。

问:TCP/IP的标准化和其他的有什么不同呢?

答:在于它的开放性和实用性。

开放性:首先,TCP/IP协议是由IETF讨论制定的,而IETF本身是一个允许任何人加入进行讨论的组织。其次,TCP/IP标准化过程中的首要任务是实现真正能够通信的技术。难怪有人打趣说“TCP/IP简直就是先开发程序,后写规格标准。”

实用性:标准化的协议能否被实际采用可行性较强。

那些需要标准化的协议,被人们列入RFC文档并在互联网公布。RFC不仅记录了协议规范内容,还包含了协议的实现和运用的相关信息,以及实验方面的信息。

RFC文档通过编号组织每个协议的标准化请求,RFC的编码是既定的,一旦成为某一RFC的内容,就不能再对其进行任意修改。不论扩展还是从新发行都需要一个新的RFC文档,重新发行时旧的文档作废,新的文档会明确规定扩展了那个已有的文档以及要作废哪个文档。

这时,就有人觉得每当修改时都要产生新的编号太麻烦,为此,人们采用STD方式管理编号。STD用来记载哪个编号制定哪个协议,因此,同一个协议的规范内容即便发生了变化也不会导致STD编号发生变化,今后协议内容更改不会改变STD编号,但有可能导致某个STD下的RFC编号视情况有所增减。

与STD相似,有FYI也开始标注编号组织,为了方便人们检索,在每个编号里覆盖了所涉及的RFC编号,即使更新内容,编号也不会发生变化。

问:那标准化流程是怎样的呢?(原书P58,这里建议看看)

答:TCP/IP的一个协议的标准化一定要经过IETF讨论,虽然一年只组织三次会议,但是日常都会通过邮件组的形式进行讨论。

流程分为互联网草稿阶段,提议标准阶段,草稿标准阶段,标准阶段四个阶段。

2.3 互联网基础知识

说到“互联网”家喻户晓,但互联网到底是什么呢?

internet指的是多个网络连接使其构成一个更大的网络,所以internet一词本意为网际网。现在“互联网”已经是一个专属名词了,对应的英文单词是“The Internet”。

TCP/IP是互联网的协议。

互联网一词原意是网际网,连接一个又一个网络。那么连接全世界的互联网也是如此。较小范围的网络之间相连组成机构内部的网络,机构内部的网络之间相连再形成区域网络,而各个区域网络之间再互联,最终就形成了连接全世界的互联网。因此,互联网是一个有层次的网络。

互联网中的每个网络都是由骨干网和末端网组成的。每个网络之间通过网络控制中心(NOC)相连,如果网络的运营商不同,它的网络连接方式和使用方法也会不同,连接这种网络需要有IX的支持。总之,互联网就是众多异构的网络通过IX互连的一个巨型网络。

 连接互联网需要向ISP或区域网提出申请,公司企业或家庭申请入网只要联系ISP签约即可。(或许就等于找人接宽带吧...)

2.4 TCP/IP基础模型

我们聊了太多TCP/IP,那它究竟是什么呢?本节对其做一个简单的介绍。

TCP/IP和OSI参考模型

 两者相比,OSI模型更注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发那种程序”。

硬件(物理层)

TCP/IP的最底层是负责数据传输的硬件,相当于以太网或电话线路等物理层的设备。

网络接口层(数据链路层)(这里的网络接口层对应图的网卡层)

网络接口层是利用以太网中的数据链路进行通信,因此属于接口层。也就是说,把它当作让NIC起作用的“驱动程序”也无妨。计算机添加外设或拓展卡需要相应驱动的支持。因此,人们常常还需要在操作系统的基础上安装一些驱动软件以便使用这些附加硬件。

互联网层(网络层)

互联网层使用IP协议,相当于OSI模型中的第3层网络层。IP协议基于IP地址转发分包数据。

TCP/IP分层中的互联网层与传输层通常由操作系统提供。尤其是路由器,它必须得实现通过互联网层转发分组数据的功能。此外,连接互联网的所有主机和路由器都必须实现IP的功能,其他连接互联网的网络设备(如网桥,中继器或集线器)就没必要一定实现IP或TCP的功能。

IP

IP是跨越网络传输数据包,使整个互联网都能收到数据的协议。IP协议使数据能够发送到地球的另一端,这期间它使用IP地址作为主机的标识。虽然IP也是分组交换的一种协议,但是他不具有重发机制。因此,属于非可靠传输协议。

ICMP

IP数据包在发送途中一旦发生异常导致无法到达对端目标地址时,需要给发送端一个发生异常的通知。ICMP就是为这一功能而制定的,它有时也被用来诊断网络的健康情况。

APR

从分组数据包的IP地址中解析出物理地址(MAC地址)的一种协议。

传输层

TCP/IP的传输层有两个具有代表性的协议,该层的功能本身与OSI参考模型的传输层类似。

 传输层最主要的功能就是能够让应用程序之间实现通信,计算机内部通常同一时间运行着多个程序,为此,必须分清是哪些程序与哪些程序在进行通信,识别这些应用程序的是端口号。

TCP

TCP是一种面向有连接的传输层协议,它可以保证两端通信主机之间的通信可达。 TCP 能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。此外, TCP 还能够有效利用带宽,缓解网络拥堵。然而,为了建立与断开连接,有时它需要至少7次的发包收包,导致网络流量的浪费。此外,为了提高网络的利用率, TCP 协议中定义了各种各样复杂的规范,因此不利于视频会议(音频、视频的数据量既定)等场合使用。

UDP

UDP和TCP不同,它是一种面向无连接的传输层协议,因为面向无连接的特性,UDP不会关注对端是否真的收到了数据,可以在应用程序中实现此功能。UDP常用于分组数据较少或多播,广播通信以及视频通信等多媒体领域。

应用层(会话层以上的分层)

TCP/IP的分层中,将OSI模型中会话层,表示层和应用层的功能都集中到了应用程序来实现。

 TCP/IP应用的架构绝大多数属于客户端/服务端模型,提供服务的程序叫服务端,接收服务的程序叫客户端。在这种通信模式中,提供服务的程序会预先被部署到主机上,等待接收任何时刻客户可能发送的要求。客户端可以随时发送请求给服务端,有时服务端可能会有处理异常,超出负载等情况,这时客户可以在等待片刻后重发一次请求。

WWW

WWW(万维网)可以说是互联网能够如此普及的一个重要原动力。用户在一种叫做游览器的软件上借助鼠标和键盘就可以轻轻松松地在网上冲浪(从今天来看,这个解释真的感觉好古老~)。
游览器和服务端通信使用的协议是HTTP,所传输数据的主要格式是HTML。WWW中的HTTP属于OSI应用层的协议,而HTML属于表示层的协议。

电子邮件

 电子邮件就是在网络上发送信件,发送电子邮件用到的协议叫做SMTP。最初,人们只能发送文本格式的电子邮件,但现在,电子邮件格式由MIME协议拓展以后,就可以发送声音,图像等各式各样的信息,甚至修改邮件文字的大小,颜色。

文件传输(FTD)

 文件传输是指将保存在其他计算机硬盘上的文件转移到本地的硬盘上,或将本地硬盘的文件传送到其他机器硬盘上的意思。该过程使用的协议叫做FTP,FTP很早就已经投入使用,传输过程中可以选择用二进制还是文本方式。

在FTP中进行文件传输时会建立两个TCP连接,分别是发出传输请求时所要用到的控制连接与实际传输数据时所要用到的连接。(属于OSI会话层的功能)

远程登陆(TELNET与SSH)

 远程登陆是指登录到远程的计算机上,使那台计算机上的程序得以运行的一种功能。TCP/IP网络中远程登陆常用TELNET与SSH两种协议。

网络管理(SNMP)

TCP/IP中进行网络管理时,采用SNMP协议。使用SNMP管理的主机,网桥,路由器等称作SNMP代理,而进行管理的那一段叫做管理器,SNMP正是这个管理器和代理所要用的协议。

在 SNMP 的代理端,保存着网络接口的信息、通信数据量、异常数据量以及 设备温度等信息。这些信息可以通过 MIB ( Management Information Base )访问。因此,在 TCP / IP 的网络管理中, SNMP 属于应用协议, MIB 属于表示层协议。

一个网络范围越大,结构越复杂,就越需要对其进行有效的管理。而 SNMF 可以让管理员及时检查网络拥堵情况,及早发现故障,也可以为以后扩大网络收集必要的信息。
 

2.5 TCP/IP分层模型与通信实例

TCP/IP是如何在媒介上传输的呢?本节介绍使用TCP/IP时,从应用层到物理媒介为止数据处理的流程。

数据包首部

 每个分层中,都会对所发送的数据附加一个首部,包含了该层必要的信息,如发送的目标地址以及协议相关信息。通常,为协议提供的信息是包首部,所要发送的内容是数据

论包、帧、数据报、段、消息

以上五个述语都用来表述数据的单位,大致区分如下:

可以说是全能性述语。用于表示数据链路层中包的单位。而数据报是 I 和 UDP 等网絡层以上的分层中包的单位。则表示 TCP 数据流中的信息。最后,消息是指应用协议中数据的单位。

问:如何实现数据包的发送呢?

 答:

经过数据链路的包

分组数据包经过以太网的数据链路时的大致流程如下图

 每个包首部中至少都会包含两个信息:一个是发送端和接收端的地址,另一个是上一层的协议类型。

经过每个协议分层时,都必须有识别包发送端和接收端的信息。以太网会用MAC地址,IP会用IP地址,而TCP/UDP会用端口号作为识别两端主机的地址。

此外,每个分层的包首部中还包含一个识别位,它是用来标识上一层协议的种类信息,例如以太网的包首部中的以太网类型,IP中的协议类型以及TCP/IP中两个端口的端口号等都起着标识协议类型的作用。

3. 数据链路

3.1 数据链路的作用

数据链路,指的是OSI参考模型中的数据链路层,有时也指以太网,无线局域网等通信手段。

虽然TCP/IP对数据链路未作定义,但数据链路对深入理解TCP/IP有着至关重要的作用。

数据链路层处理的数据也不是单纯的0,1序列,该层把他们集合为一个叫做“帧“的块,然后在进行传输。

本章介绍数据链路层的相关技术,包括MAC寻址,介质共享,非公共网络,分组交换,环路检测,VLAN等。也会涉及作为传输方式的数据链路,如以太网,WLAN,PPP等概念。数据链路也可被视为网络传输中的最小单位。

在以太网与 FDDI ( Fiber Distributed Data Interface ,光纤分布式数据接口)的规范中,不仅包含0SI参考模型的第2层数据链路层,也规定了第1层物理层的规格。在 ATM ( Asynchronous Transfer Mode ,异步传输方式)的规范中,还包含了第3层网络层的一部分功能。

 数据链路层的段是指一个被分割的网络,根据使用者的不同,含义也不禁相同。

网络拓朴

网络的连接和构成的形态称为网络拓扑,网络拓扑包括总线型,环型,星型,网状型等。拓扑一词不仅适用于直观可见的配线方式上,也用于逻辑上网络的组成结构,两者有时可能不一致。

3.2 数据链路相关技术

MAC地址用于识别数据链路中互联的节点。

MAC地址长48比特,在使用网卡(NIC)的情况下,MAC地址一般会被烧入到ROM中,因此,任何一个网卡的MAC地址都是唯一的。

 关于厂商识别码,每个NIC厂商都有特定唯一的识别数字。

在全世界,MAC地址也并不总是唯一的,实际上,即使MAC地址相同,只要不是同属同一个数据链路就不会出现问题。

从通信介质的使用方法来看,网络可分为共享介质层和非共享介质层。

 共享介质层是指多个设备共享一个通信介质的一种网络(以太网,FDDI)。设备之间使用同一个载波信息进行发送与接收,并有必要对介质进行控制访问。

有两种介质访问控制方式:一种是争用方式,另一种是令牌传递方式

争用方式

争用方式是指争夺数据传输的权力,也叫CSMA(载波监听多路访问),这种方式令网络的各个站(节点)采用先到先得的方式占用信道发送数据,如多个站同时发送帧,则会产生冲突现象。

在一部分以太网当中,采用了改良CSMA的另一种方式——CSDA/CD方式,要求每个站提前检查冲突,一旦发生冲突,则尽早释放信道。工作原理如下:

如果载波信道上没有数据流动,则任何站都可以发送数据。

检查是否会发生冲突。一且发生冲突时,放弃发送数据,同时立即释放载波信道。

放弃发送以后,随机延时一段时间,再重新争用介质,重新发送帧。

令牌传递方式 

 令牌传递方式是沿着令障环发送一种叫做“令牌”的特殊报文,是控制传输的一种方式。只有获得令牌的站オ能发送数据。这种方式有两个特点:一是不全有冲突,二是每个站都有通过平等循环获得令牌的机会。因此,即使网络拥堵也不会导致性能下降。

非共享介质网络 

非共享介质网络不共享介质,是对介质采用专用的一种传输控制方式。在这种方式下,每个站直连交换机,由交换机负责转发数据帧。

根据MAC地址转发 (有点多,得细看一下)

 在使用同轴电缆的以太网(10BASE5、10BASE2)等介质共享网络中,同一时间只能有一台主机发送数据。当连网的主机数量增加时,通信性能会明显下降。若将集线器或集中器等设备以星型连接,就出现了一款新的网络设备一交換集线器,这是一种将非介质共享型网络中所使用的交換机用在以太网中的技术,交换集线器也叫做以太网交换机。

以太网交换机就是持有多个端口”的网桥。它们根据數据链路层中每个帧的目标 MAC 地址,决定从哪个网络接口发送数据。这时所参考的、用以记录发送接口的就叫做转发表( Forwarding Table )。

这种转发表的内容不需要使用者在每个终端或交换机上手工设置,而是可以自动生成。数据链路层的每个通过点在接到包时,会从中将源 MAC 地址以及曾经接收该地址发送的数据包的接口作为对应关系记录到转发表中。以某个 MAC 地址作为源地址的包由某一接口接收,实质可以理解该 MAC 地址就是该接口的目标。因此也可以说,以该 MAC 地址作为目标地址的包,经由该接口送出即可。这一过程也叫自学过程。

交换机转发方法有存储转发直通转发。前者可以表面转发错误帧,后者延迟较短。

环路检测技术

通过网桥连接网络时,一且出现环路该如何处理?这与网络的拓扑结构和所使用的网桥种类有直接关系。最坏的情况下,数据帧会在环路中被一而再再而三地持续转发。而一且这种数据帧越积越多将会导致网络瘫痪。

 解决网络中的环状问题,具体有生成树和源路由两种方式。只要搭建合适的网桥,在发生某一处路由故障时绕行,可以提高容灾能力。

生成树方式

每个网桥必须在每1~10秒内相互交换BPDU包,从而判断哪些端口使用哪些不使用,以便消除环路。一旦发生故障就会自动切换通信线路,利用那些没有被使用的端口继续进行传输。

以某一个端口为构造树的根,并对每个端口设置权重,指定优先使用哪些端口以及发生问题时该使用那些端口。

生成树法其实与计算机和路由器的功能没有关系,但是只要有生成树的功能就足以消除环路。

但这种生成树有一个弊端,就是在发生故障切换网络时需要几十秒的时间,为了解决这一问题,有RSTP的方法,该方法可以将时间缩短到几秒之内。

源路由法 

源路由法最早由IBM提出,以解决令牌环网络问题。该办法可以判断发送数据的源地址是通过哪个网桥实现传输的,并将帧写入RIF。网桥则根据这个RIF信息发送帧给目标地址。在这种机制中发送端本身必须具备源路由的功能。

VLAN

进行网络管理的时候,时常会遇到分散网络负载、变换部署网络设备的位置等情况。而有时管理员在做这些操作时,不得不修改网络的拓扑结构,这也就意味着必须进行硬件线路的改造。然而,如果采用带有 VLAN 技术的网桥,就不用实际修改网络布线,只需修改网络的结构即可。
问:那么VLAN究竟是什么?

答:下图交换器根据端口区分了多个网段,从而区分了广播数据的范围,减少了网络负载并提高了网络的安全性。(图为简单的VLAN)

 对这种VLAN进行了拓展,又定义了TAG VLAN,该标准允许包含跨越异构交换机的网段。TAG VLAN中对每个网段都用一个VLAN ID的标签进行唯一标识。在交换机传输帧时,在以太网首部加入这个VID标签,根据这个值决定将数据帧发送给哪个网段。

 尽管通过VLAN技术的可以实现不修改布线,只实现网段即可。但有时物理结构与逻辑网络结构也可能会出现不一致的情况,不宜管理,为此应加强对网段构成及网络运行等的管理。

3.3 以太网

数据链路层最著名,广泛的莫过于以太网。普及的原因是规范简单,易于实现且成本较为低廉。

以太网的连接形式

在以太网普及之初,一般采用多台终端使用同一根同轴电缆的共享介质型连接方式。

现在,随着互联设备的处理能力以及传输速度的提高,一般都采用终端与交换机之间独占电缆的方式实现以太网通信。 

 以太网的分类

以太网因通信电缆的不同及通信速度差异,衍生出了众多不同的以太网类型。

 以太网帧格式

以太网帧前端有一个叫做前端码的部分,它由0,1数字交替组合而成,表示一个以太网帧的开始,也是对端网卡能够确保与其同步的标志。前端码末尾是一个叫SFD的域,它的值是“11”,在这个域后就是以太网帧的本体。前端码与STD合起来占8个字节。

以太网帧本体的前端就是以太网的首部,它总共占14个字节。分别是6个字节的目标MAC地址,6个字节的源MAC地址以及2个字节的上层协议类型。 

紧随帧头后面的是数据。一个数据帧所能容纳的最大数据范围是46~1500个字节。帧尾是一个叫做 FCS ( Frame Check Sequence ,帧检验序列)的4个字节。

在目标 MAC 地址中存放了目标工作站的物理地址。源 MAC 地址中则存放构造以太网帧的发送端工作站的物理地址。

类型通常跟数据一起传送,它包含用以标识协议类型的编号,即表明以太网的再上一层网络协议的类型。在这个字段的后面,则是该类型所标识的协议首部及其数据。 

帧尾最后出现的是FCS。用它可以检测帧是否有所损坏,出现错误帧丢弃。

3.4 无线通信

无线通信通过使用电磁波,红外线,激光等方式进行传播数据。

无线通信的种类

无线通信可根据距离分为以下种类。

(这里省略了一些相关协议,感兴趣可看P96) 

使用无线LAN的注意事项

无线LAN可以自由移动,通过无线电波实现较广的范围通信。这就意味着通信范围内任何人都可以使用该无线LAN,因此会有被窃听或被篡改的危险。它还可能收到其他同频道设备(微波炉)的干扰。

蓝牙

使用2.4GHz频率无线电波的一种标准,数据传输速率在V2中能达到3Mbps,通信距离根据无线电波的信号的强弱,有1m,10m,100m三种类型。通信终端设备最多允许8台设备。

WIMAX

使用微波在公司或家庭实现无线通信的一种方式,WIMAX属于无线MAN,支持城域网范围内的无线通信。

ZigBee

主要用于家电的远程控制,是一种短距离,低功耗的无线通信技术。

3.5 PPP

PPP是点对点,即1对1的协议。PPP相当于OSI模型第二层的数据链路层。

LCP与NCP

 在开始进行数据传输前,要先建立一个PPP级连接,之后就可以进行身份认证,压缩和加密。

PPP的主要功能中包括两个协议,一个是不依赖上层的LCP协议,另一个是依赖上层的NCP协议,如果上层是IP,此时的NCP也叫IPCP。

LCP 主要负责建立和断开连接、设置最大接收单元( MRU , Maximum Receive Unit )、设置验证协议( PAP 或 CHAP )以及设置是否进行通信质量的监控。而 IPCP 则负责 I 地址设置以及是否进行 TCP / IP 首部压缩等设备 。

 PPP连接时,通常需要进行用户名密码的验证,并对两端进行双方向的验证,验证协议有两种,分别是PAP和CHAP

PAP 是 PPP 连接建立时,通过两次握手进行用户名和密码验证。其中密码以明文方式传输。因此一般用于安全要求井不很高的环境,否则会有窃听或盗用连接的危险。

 CHAP 则使用一次性密码0TP( One Time Password ),可以有效防窃听。此外,在建立连接后还可以进行定期的密码交换,用来检验对端是否中途被替换。
 

PPP的帧格式

其中标识符用来区分每个帧,PPP是基于HDLC,HDLC就是在每个帧的前后加上一个8位字节“01111110”用来区分帧。

PPPoE

 有些互联网接入服务商在以太网上利用PPPoE提供PPP功能。

在这种互联网接人服务中,通信线路由以太网模报。由于以太网越来越普及在加上它的网络设备与相应的 NIC 价格比较便宜,因而 ISP 能够提供一个单价更低的互联网按人服务。

单纯的以太网没有验证功能,也没有建立和断开连接的处理,因此无法按时计费。而如果果用 PPPoE 管理以太网连接,就可以利用 PPP 的验证等功能使各家 ISP 可以有效地管理终端用户的使用。 

3.6 其他数据链路

ATM

是以一个叫做信元(5字节首部加48字节数据)的单位进行传输的数据链路,由于线路占用时间短和能够高效传输大容量数据等特点主要用于广域网络的连接。

特点

ATM是一种面向连接的一种数据链路,它允许同时与多个对端建立通信连接。

ATM中没有类似以太网和FDDI那种发送权限的限制,它允许在任何时候发送任何数据。

ATM与上层协议

 ATM的一个信元只能发送固定的48字节数据,这48个字节的数据部分中若包含IP首部和TCP首部,则基本无法存放上层的数据。为此,一般不会单独使用ATM,而是使用上层的AAL,在上层IP是为AAL5.每个IP包被附加各层的协议首部以后,最多可以被分为192个信元发送出去。

192个信元任意一个的丢失都会导致帧检查位的报错。 

FDDI(最后这里在着重介绍FDDI) 

FDDI叫做分布式光线数据接口。曾几何时,人们为了用光纤和双绞线实现10oMbps的传输速率,在主干网或计算机之间的高速连接上广泛使用了 FDDI 。但是由于后来高速 LAN 提供了 Cbps 级的传输連率, FDDI 也就逐渐淡出了应用领域。

 FDDI 采用令牌(追加令牌)环的访向方式。令牌环访向方式在网络拥堵的情况下极容易导致网络收敛。

 FDDI 中的每个站通过光纤连接形成环状,如下图所示。 FDDI 为了防止在环在某处断开时导致整个通信的中断,采用双环的结构。双环中站叫做 DAS,单环中的站叫做 SAS 。

3.7 公共网络

前面介绍了很多局域网相关的知识,本小节旨在介绍连接公共通信服务相关的细节。

这里将介绍模拟电话路线,移动通信,ADSL,FTTH,有线电视,专线,VPN以及公共无线LAN等内容。

模拟电话线路

利用固定电话线路进行通信,电话线中的音频带宽用于拨号上网。让计算机和电话线相连需要有一个将数字信号转化为模拟信号的调制解调器(俗称“猫”),现已被淘汰。

移动通信服务 

移动通信服务包括手机和PHS服务,特点是只要在服务区范围内,就可以连接到运营商的网络。

ADSL

ADSL是对已有的模拟电话线路进行拓展的一种服务,模拟电话线路虽然也能传输高频数字通信,但是它与电信局的交换机之间只有发送音频信号时才能显示极好的传输效率,并会对其他多余频率的信号进行丢弃。尤其是在近儿年,随着电话网逐渐数字化,通过电话线路的信号再经过电信的交换机时会变成64khp左右的数字信号。因此,从理论上就无法传输64kbp更快的數字信号。然而,每个话机到电信局交换机之前的这段线路,是可以实现高速传输的。

 ADSL 正是利用话机到电信局交换机之间这段线路,附加一个叫微分离春的装置,将音频信号《低频信号)和数字信号(高频信号)隔离以免产生噪声干扰。

类似这种类型的通信方式除了 ADSL 还有其他諸如 YDSL 、 HDsL 、 SnsL 等。它们被统称为 xDSl 。 ADSL 是其中最为得及的一种方式。

 ADSL 中的线路速度根据通信方式或线路的质量以及距寓电信局的远近有所不同。从ISP到家里/办公室的速率在1.5Mbps-50Mbpe左右,而从家里/办公室到1P端的速率一般在512kbpa-2Mbpa左右。

FTTH 

是一根高速光纤直接连到用户家里或公司建筑物处的方法。 

有线电视

专线

 用户的上升专线向着价格更低,带宽更广以及多样化的方向发展。专线的连接一定是一对一的连接。

VPN

虚拟专用网络(VPN)用于连接距离较远的地域。这种服务包括IP-VPN和广域以太网

IP-VPN

意指在IP网络上建立VPN。

广域以太网

服务提供商所提供的用于连接相距较远的地域的一种服务。

IP-VPN是在 IP 层面的连接,广域以太网则是在作为数据链路层的以太网上利用 VLAN (虚拟局域网)实现 VPN 的技术。该技术还可以使用 TCP / IP 中的其他协议。

广域以太网以企业专门使用服务提供商构建的 VLAN 网络为主要形式。只要指定同一个 VLAN ,无论从哪里都能接人到同一个网络。由于广域以太网利用的是数据链路层技术,因此为了避免一些不必要的信息传输,使用者应谨慎操作。

公共无线LAN

指公开的可以使用WI-FI的服务。服务提供者可以在车站或餐饮店等人员比较密集的地方架设的一个叫做热点的无线电波接收器。使用者在这些区域使用带有无线LAN 网卡的笔记本电脑或智能手机连接上网。

其他公共无线通信服务

X25

X25网是电话网的改良版。它允许一个端点连接多个站点,传输速率为9.6kbps或64kbps。由于现在已出现其他多种网络服务,X25已经不再使用。

帧中继

帧中继是对 X25进行精简并高速化的网络。与 X25相似,它允许1对 N 的通信,一般提供64kbps~1. SMbps 的传输速率。目前由于以太网和IP-VPN的广泛应用,帧中继的用户也在逐渐减少。

ISDN

IsDN 是 Integrated Services Digital Network (综合业务数字网)的缩写。它是一种集合了电话、 FAX 、数据通信等多种类型的综合公共网络。目前它的使用者也在日趋减少。

4.IP协议

IP协议作为真个TCP/IP中至关重要的协议,负责将数据包发送给最终的目标计算机。

4.1 IP即网络协议

TCP/IP的心脏是互联网层,这一层主要由IP和ICMP两个协议组成,本章仅对IP协议进行详细说明。目前的IP4已经无法应对互联网的需求,于是出现了更高版本的IP6。

IP相当于OSI模型的第3层

IP相当于OSI参考模型的第3层——网络层。

网络层的主要功能是“实现终端节点之间的通信”,这种终端节点之间的通信也叫“点对点通信”。

从上一章知道,数据链路层的主要作用是在互联同一种数据链路的节点之间进行包传输。而一旦跨越多种数据链路,就需要借助网络层。

 主机与节点

在互联网世界中,将那些配有 IP 地址的设备叫做“主机”。这里的主机可以是超大型计算机,也可以是小型计算机。这是因为互联网在当初刚发明的时候,只能连接这类大型的想势设备,因此习慣上将配有 IP地址的设备称为“主机”。

然而,准确地说,主机的定义应该是指“配置有 IP 地址,但是不进行路由控制"的设备”。既配有 IP 地址又具有路由控制能力的设备叫做“路由器”,跟主机有所区别。而节点则是主机和路由器的统称”。

网络层和网络链路层的关系

数据链路层提供直连两个设备之间的通信功能,网络层的IP则负责在没有直连的两个网络之间进行通信传输,它们的区别又是什么呢?

就好像我们坐火车或飞机旅游,每张票只能在某一限定区间内移动。此处的“区间内”就如同通信网络上的数据链路,而这个区间内的出发地点和目的地点就如同某一个数据链路的源地址和目标地址等首部信息。整个全程的行程表的作用就相当于网络层

4.2 IP基础知识

IP大致分为三大作用模块,它们是IP寻址,路由(最终节点为止的转发),以及IP分包与组包。

IP地址属于网络层地址

通信中为了实现通信对端,必须要有一个类似于地址的识别码进行标识,MAC是标识同一种链路中不同计算机的一种识别码。网络层的IP也有这种地址信息,一般也叫IP地址。IP地址用于在“连接到网络中的所有主机识别出进行通信的目标地址”。因此,在TCP/IP通信中所有主机或路由器必须设定自己的IP地址。

不论主机与哪种数据链路层连接,其IP地址的形式都保持不变。另外,在网桥或交换集线器等物理层设备中,不需要设置IP地址。

路由控制 

将分组数据发送到最终目标地址的功能。一旦这个路由控制的运行出现异常,分组数据极有可能“迷失”,无法到达目标地址。因此,一个数据包之所以能够成功地到达最终地目标地址,全靠路由控制。

发送数据到最终目标地址 

Hop 译为中文叫“跳”。它是指网络中的一个区间。IP包正是在网络中一个个跳间被转发。因此 I 路由也叫做多跳路由。在每一个区间内决定着包在下一跳被转发的路径。

 多跳路由是指路由器或主机在转发 IP 数据包时只指定下一个路由器或主机,而不是将到最终目标地址为止的所有通路全都指定出来。因为每一个区间(跳)在转发 IP 数据包时会分别指定下一跳的操作,直至包达到最终的目标地址。如图,以乘坐火车旅游为例具体说明

可以把旅行者看成IP数据包,把车站和工作人员看成路由器。当有IP到达路由器时,路由器会先查找其目标地址,从而决定下一步应该把这个包发往那个路由器,以此往复直到找到最终的目标地址。

路由控制表

 为了将数据包发给目标主机,所有主机都维护着一张路由控制表( Routing Table )。该表记录 IP 数据在下一步应该发给哪个路由器。IP包将根据这个路由表在各个数据链路上传输。

数据链路的抽象化 

IP是实现多个数据链路之间通信的协议,数据链路根据种类的不同各有特点,对这些不同的数据链路的相异特性抽象化也是IP的重要作用之一。

不同数据链路有个最大的区别,就是它们各自的最大传输单位不同,就好像人们在邮寄包裹或行李时有各自的大小限制。

 MTU 的值在以太网中是1500字节,在 FDDI 中是4352字节,而 ATM 则为9180字节。IP 的上一层可能会要求传送比这些 MTU 更多字节的数据,因此必须在线路上传送比包长还要小的 MTU 。

为了解决这个问题,IP进行分片处理,将较大的IP包分成多个较小的IP包,到了对端目标地址以后再组合起来传给上一层。

IP属于面向无连接型

问:那么,为什么IP要采用面向无连接呢?

答:主要有两点原因;一是为了简化,二是为了提速。面向连接比起面向无连技处理相对复杂。甚至管理每个连接本身就是一个相当紧琐的事情。此外,每次通信之前都要事先建立连淡,又会降低处理速皮。需要有连接时,可以委托上一层提供此项服务。因此, I 为了实现简单化与高速化采用面向无连接的方式。

4.3 IP地址的基础知识

用 TCP / IP 通信时,用 IP 地址识别主机和路由器。为了保证正常通信,有必要为每个设备配置正确的 IP 地址。在互联网通信中,全世界都必须设定正确的 IP 地址。否则,根本无法实现正常的通信。因此, IP 地址就像是 TCP / IP 通信的一块基石。

IP地址的定义

IPv4地址由32位正整数来表示,TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制方式被处理,然而人类并不习惯采用二进制方式,需要采用一种特殊的标记方式,那就是将32位的IP地址以每8位为一组分为四组,每组以“.”隔开,再将每组数转换为十进制数。

 

IP地址由网络和主机两部分组成 

网络标识在数据链路的每个段配置不同的值,必须保证连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址,IP地址的“主机标识‘则不允许在同一个网段内重复出现。

也因此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的IP都不会重叠,即IP有了唯一性

问:那网络标识和主机标识分别是第几位呢?

答:有两种约定熟成的类型,最初两种以分类进行区别,而现在以子网掩码区分。当然,第一种情况仍然存在。

IP地址的分类 

IP地址分为A类,B类,C类,D类 四类。根据IP地址中第1位到第4位的比特对其网络标识和主机识别进行区分。

A类地址

A类IP地灶是首位以“0”开头的地址。从第1位到第8位是它的网络标识用十进制表示的话, 0.0.0.0-127.0.0.0是 A 类的网絡地址。 A 类地址的后24位相当于主机标识。因此,一个两段内可容纳的主机地址上限为16,777,214个。

B类地址

 B 类 IP 地址是前两位为“10”的地址。从第1位到第16位’是它的网络标识。用十进倒表示的话,128.0.0.1~191.255.0.0是 B 类的网络地址。 B 类地址的后16位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65,534个"。

C类地址

C 类护地址是前三位为“110”的地址。从第1位到第24位是它的网络标识。用十进制表示的话,192.168.0.0-239.255.255.0是 C 类的网络地址。 C类地址的后8位相当于主机标识。因此,一个网段内可容纳的主机地址上限为254个。

D类地址

D类护地址是前四位为“1110”的地址。从第1位到第24位是它的网络标识。用十进制表示的话,224.0.0.0-239.255.255.255是 D 类的网絡地址。D 类地址没有主机标识,常被用于多播。

广播地址 

广播地址用于在同一个链路中相互连接的主机之间发送数据包,IP地址中的主机地址部分全部设置为1,就成了广播地址。 

广播分为本地广播直接广播。在本网络内的叫做本地广播,在不同网络之间的广播叫做直接广播。

IP多播 

同时发送提高效率

多播用于将包发送给特定组内的所有主机,由于其直接使用IP协议,因此也不存在可靠传输。

人们在此之前是将广播数据发送给所有终端主机,再由这些主机IP之上的一层去判断是否有必要接收数据,造成网络上很多不必要的流量。而且广播无法穿透路由。

IP多播与地址 

多播使用D类地址,因此如果从首位开始到第4位是”1110“,就可以认为是多播地址,而剩下的28位可以成为多播的组编号。

子网掩码 

分类会造成浪费?

根据IP地址分类,倘若用“1”表示IP网络地址的比特范围,用“0”表示主机地址范围。

下面用十进制表示

 网络标识相同的计算机必须同属于网一个链路。例如,架构 B 类 I 网络时理论上-个链路内允许6万5千多台计算机连接。然而,在实际网络架构当中一般不会有在同一个链路上连接6万5千多台计算机的情况。因此,这种网络结构实际上是不存在的。

因此,直接使用 A 类或B类地址,确实有些渡费。随着互联网的覆益拖围逐渐増大,网络地址会越来越不足以应对需求,直接使用 A 类、 B 类、 C 类地址就更加显得浪费资源。为此,人们已经开始一种新的组合方式以减少这种浪费。

子网与子网掩码

现在,一个IP地址的网络标识和主机标识已不再受限于该地址的类别,而是由一个叫做“子网掩码”的识别码通过子网网络地址细分出比 A 类、B 类、C 类更小粒度的网络。这种方式实际上就是将原来 A 类、B 类 ,C 类等分类中的主机地址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。自从引人了子网以后,一个 IP 地址就有了两种识别码。一是IP地址本身,另一个是表示网络部的子网掩码。子网掩码用二进制方式表示的话,也是一个32位的数字。它对应IP地址网络标识部分的位全都为“1”,对于IP 地址主机标识的部分则全部为“0”。由此,一个IP地址可以不再受限于自己的类别,而是可以用这样的子网掩码自由地定位自己的网络标识长度。当然,子网掩码必须是IP地址的首位开始连续的"1".

对于子网掩码,目前有两种表示方式。以172.20.100.52的前26位是网络地址的情况为例,以下是其中一种表示方法,它将IP地址与子网掩码的地址分别用两行来表示。

 假定有一个B类的IP地址定义了10位子网掩码。

CIDR与VLSM

 由于地址缺乏,人们放弃IP地址的分类,采用任意长度分割IP地址的网络标识和主机标识,这种方式加做CIDR(“无类型域间选路”),根据CIDR,连续多个C类网络就可以划分到一个较大的网络。VLSM是可以随意修改组织内各个部门的子网掩码长度的机制。

全局网络和私有网络

起初,互联网中的任何一台主机或路由都必须配一个唯一的IP地址,可随着互联网的发展,如果采用唯一地址的话,会有IP地址耗尽的风险。于是出现了一种新技术,只要求在必要的时候为相应数量的设备分配唯一的IP地址。

不过让每个独立的网络各自设置IP地址也可能存在问题,于是出现了私有网路的IP地址,如下

包含在这个范围内的IP地址都属于私有IP,而在此之外的IP地址称为全局IP。

现在有很多学校、家庭、公司内部正采用在每个终端设置私有IP,而在路由器(宽带路由器)或在必要的服务器上设置全局IP地址的方法。而如果配有私有IP的地址主机连网时,则通过 NAT 进行通信。

全局地址由谁决定 

在世界范围内,全局IP由ICANN进行管理,日本则由一个叫做IPNIC的机构进行管理。

在互联网被广泛商用之前,用户只有向JPNIC申请全局IP地址才能接入互联网,随着ISP的出现,人们向其申请即可。

4.4 路由控制

发送数据包所使用的地址是网络层的地址,即IP地址。仅有IP地址还不足以实现将数据包发送到对端目标地址,在数据发送中还需要有类似于“指明路由器或主机”的信息,以便发往目标地址。保存这种信息的就是路由控制表,实现IP通信的主机和路由器都必须持有一张这样的表。

路由控制表的形成方式有两种:一种是管理员手动设置,另一种是路由器与其他路由器相互交换信息时自动刷新。

该表是由一个叫做“路由协议”的协议制作而成。

IP地址与路由控制

IP地址的网络地址部分用于进行路由控制。

路由控制表记录着网络地址与下一步应该发送至路由器的地址。

默认路由 

如果一张路由表中包含所有的网络及其子网的信息,将会造成无端的浪费,这是默认路由是很好的 选择,默认路由是指路由表中任何一个地址都能与之匹配的记录。

主机路由

“IP地址/32”被称为主机路由,它的意思是整个IP地址的所有位都将参与路由,意味着要基于主机上网卡上配置的IP地址本身,而不是基于该地址的网络地址部分进行路由。

环回地址

环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。

路由控制表的聚合(路由汇总)

利用网络地址的比特分布可以有效地进行分层配置,对被即使有多个子网掩码,对外呈现出的也是同一个网络地址,这样可以更好的构建网络。

能够缩小路由器的大小是它最大的优势,构建大规模,高性能网络,则需要尽可能削减路由表的大小。

例子中路由器 C 正是将已知192.168.2.0/24与192.168.3.0/24的网络这一信息聚合成为对“192.168.2.0/23的网络也已知”,从而进行公示。

4.5 IP分割与再构成处理

数据链路不同,MTU则相异

每种数据链路的最大传输单元(MTU)都不尽相同,下图列出了很多不同的链路及MTU。

IP报文的分片与重组

 任何一台主机都有必要对IP分片进行相应的处理,分片往往在网络上遇到比较大的报文无法一下子发送出去时才会进行处理。

经过分片之后的IP数据报在被重组的时候,只能由目标主机进行,路由器虽然做分片但不会进行重组。

路径MTU发现 

分片机制也有它的不足,它加重了路由器的处理负荷,为了更高速,网络的安全,要尽可能不用路由器进行IP数据包的分片处理,而且分片丢失会造成IP数据包的报废。为了解决这一问题,产生了一种新的技术“路径MTU的发现”。

指从发送端主机到接收端主机之间不需要分片时最大MTU的大小,即路径中存在的所有数据链路中最小的MTU。而路径MTU发现从发送主机按照路径MTU的大小将数据包分片后进行发送,就可以避免在中途的路由器进行分片处理,也可以在TCP中发送更大的包。

4.6 IPv6

IPv6的必要性

IPv6是为了根本解决IPv4地址耗尽的问题而被标准化的网际协议。IPv4的地址长度为4个8位字节,而IPv6的地址长度则是原来的4倍,一般写为8个16位字节。但替换IP地址会是更为艰巨的任务。

IPv6的特点

IPv6具有以下几个特点,这些功能的一部分在IPv4中已经得以实现。而IPv6则将这些统统作为必要的功能,减少了管理员的负担。

IP地址的扩大与路由控制表的聚合

 IP 地址依然适应互联网分层构造。分配与其地址结构相适应的 IP 地址,尽可能避免路由表膨大。

性能提升

包首部长度采用固定的值(40字节),不再采用首部检验码。简化首部结构,减轻路由器负荷。路由器不再做分片处理(通过路径 MTU 发现只由发送端主机进行分片处理)。

支持即插即用功能

即使没有 DHCP 服务器也可以实现自动分配 IP 地址。

采用认证与加密功能

应对伪造 IP 地址的网络安全功能以及防止线路窃听的功能( IPsec )。

多播、 Mobile IP 成为扩展功能

多播和 Mobile IP 被定义为IPv6的扩展功能。由此可以预期,曾在IPv4中难于应用的这两个功能在IPv6中能够顺利使用。

IPv6中IP地址的标记方法

IPv6地址长度为128位,能表示的数字高达38位,足以包含人们所能想到所有主机和路由器分配地址。

如果将IPv6也用十进制数据表示的话,是16个数字的序列。但用16个数字序列表示显得麻烦,因此,将128比特IP地址以每16比特为一组,每组用冒号(;)隔开进行标记,而且如果出现连续的0时还可以将这些0省略,并用两个冒号(::)隔开,但是一个IP地址中只允许出现一两个连续的冒号。

IPv6地址的结构 

IPv6类似IPv4,也是通过IP地址的前几位标识IP地址的种类。

在互联网通信中,使用一种全局的单播地址。它是互联网中唯一的一个地址,不需要正式分配 IP 地址。

限制型网络,即那些不与互联网直接接人的私有网络,可以使用唯一本地地址。该地址根据一定的算法生成随机数并融合到地址当中,可以像IPv4的私有地址一样自由使用。

在不使用路由器或者在同一个以太网网段内进行通信时,可以使用链路本地单播地址。而在构建允许多种类型 IP 地址的网络时,在同一个链路上也可以使用全局单播地址以及唯一本地地址进行通信。

在IPv6的环境下,可以同时将这些IP地址全都配置在同1个 NIC 上,按需灵活使用。

 全局单播地址

全局单播地址是指世界上唯一的一个地址,它是互联网通信以及各个域内部通信中最为常用的一个IPv6地址。现在IPv6的网络中所使用的格式为,n = 48,m = 16以及128-n-m = 64,即前64比特为网络标识,后64位为主机标识。

4.7 IPv4 首部

通过IP进行通信时,需要在数据的前面加入IP首部信息,IP首部中包含着用于IP协议进行分包控制时所有的必要信息。了解IP首部的结构,也就对IP提供的功能有一个详细的把握。

版本

由4个比特构成,标识标识IP首部的版本号,IPv4的版本号为4,因此值也为4。

首部长度

由4比特组成,表示首部的长度,单位为4字节,对于没有可选项的IP包,首部长度则设置为“5”。也就是说,当没有可选项时,IP首部的长度为20(4*5=20)。 

区分服务

由8比特服务,用来表明服务质量。每一为具体含义如图所示。

总长度

表示IP首部与数据部分合起来的总字节数,该字节长16比特。因此IP包的最大长度为65535(2的16次方)字节。

标识

由16比特组成,用于分片重组,同一个分片的标识值相同,不同分片的标识值不同。通常,每发一个包,它的值也逐渐递增,此外,即使ID相同,如果目标地址,源地址或协议不同的话,也会被认为是不同的分片。

标志

由3比特组成,标识被分片的相关信息。含义如下表。

 片偏移

由13比特构成,用来标识被分片的每一个分段相对于原始数据的位置。

生存时间

由8比特组成,它最初的意思是以秒为单位记录当前包在网络上应该生存的期限。然而,在实际中它是指可以中转多少个路由器的意思,没经过一个路由器,TTL会减少1,知道变成0则丢弃该包。

协议

由8比特组成,标识IP收不到 下一个首部隶属于哪个协议。

首部校验和

由8个比特构成,该字段只校验数据包的首部,不校验数据部分。它主要用来确保IP数据包不被破坏。

源地址

由32比特构成,表示发送端IP地址。

目标地址

由32比特构成,表示接收端IP地址。

可选项

长度可变

      安全级别

      源路径

      路径记录

      时间戴

填充

也称作填充物。在有可选项的情况下,首部长度可能不是32比特的整数倍。为此,通过向字段填充0,调整为32比特的整数倍。

数据

存入数据,将IP上层协议的首部也作为数据进行处理。

4.8 IPv6 首部格式

IPv6中为了减轻路由器的负担,省略了首部校验和字段。因此路由器不再需要计算校验和,从而提升了包的转发速率。

版本

与IPv4一样,由4比特构成。IPv6其版本号为6,因此在这个字段上的值为“6”.

通信量类 

相当于IPv4的TOS字段,也由8比特组成。

流标号

由20比特构成,准备用于服务质量控制。

有效载荷长度

有效载荷是指包的数据部分。

下一个首部

相当于IPv4中的协议字段,由8比特构成。

跳数限制

由8比特构成,与IPv4中的TTL意思相同。

源地址

由128比特构成,表示发送端IP地址。

目标地址

由128比特构成,表示发送端IP地址。

5.IP协议相关技术

IP旨在让最终主机收到数据包,但是在这一过程中仅仅有IP是无法实现通信的,必须还有能够解析主机名称和MAC地址的功能,以及数据包子啊发送过程中异常情况处理的功能。此外,还会涉及IP必不可少的其他功能。

本章主要介绍作为IP的辅助和扩展规范的DNS,ARP,ICMP以及DHCP等功能。

5.1 仅凭IP无法完成通信

在之前的章节,我们了解了如何利用IP实现让数据包到达最终主机的功能,但上网时我们很少直接输入IP地址。为了更便捷的访问,我们通常使用应用层是实现的地址,为了能让主机根据实际的IP地址进行通信,就有必要实现一种功能——将应用中使用的地址映射为IP地址。

5.2 DNS

我们平常在访问某个网站时不使用 I 地址,而是用一串由罗马字和点号组成的字符串。而一般用户在使用 TCP / IP 进行通信时也不使用 IP 地址。能够这样做是因有了 DNS ( Domain Name System )功能的支持。 DNS 可以将那串字符串自动转换为具体的 IP 地址。

IP地址不便记忆

TCP/IP要求每一个互联的计算机都具有其唯一的IP地址,并基于这个IP地址进行通信。但IP地址是由一串数据序列组成,并不好记。

为此,就有了一种叫做主机识别码的东西。这种识别方式是指为每台计算机赋以唯一的主机名,在进行网络通信时可以直接使用主机名称而无需输入一长串的IP地址。并且此时,系统必须自动将主机名转换为具体的IP地址。为了实现这样的功能,主机往往会利用一个叫做hosts文件才能正常使用网络。但随着网络规模的扩大,这种方式慢慢变得不再适用。

DNS的产生

在上述背景下,产生了一个可以有效管理主机名和IP地址之间对应关系的系统,那就是DNS系统。可以用来维护一个表示组织内部主机和IP地址之间对应关系的数据库。

域名的构成

在理解DNS规范时,首先要理解什么是域名,域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。

DNS的分层如下所示,由于看起来像一颗倒挂的树,人们也把这种分层结构叫做树形结构。

域名服务器和解析器(感兴趣书中P161) 

DNS查询

那么DNS查询的机制是什么呢?

解析器为了调查IP地址,向域名服务器进行查询处理,接收这个查询请求的域名服务器首先会在自己的数据库进行查找,如果有该域名对应的IP地址就返回。如果没有,则域名服务器在向上一层根域名服务器进行查询处理。

解析器和域名服务器将最新了解到的信息暂时保存在缓存里。这样,可以减少每次查询时的性能消耗。

DNS如同互联网中的分布式数据库

 DNS是一种通过主机名检索IP地址的系统。然而,它所管理的信息不仅仅是这些主机名和IP地址之间的映射信息。

它还要管理众多其他信息,例如,主机名与IP地址的对应信息叫做A记录。反之,从IP地址检索主机名称的信息叫做PTR。此外,上层或下层域名服务器IP地址的映射叫做NS记录。

在此特别需要指出的是MX记录,这类记录中注册了邮件地址与邮件接收服务器的主机名。

5.3 APR

只要确认了IP地址,就可以向这个目标地址发送IP数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个IP地址所对应的MAC地址。

ARP概要

ARP是一种解决地址问题的协议。以目标IP为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。

ARP的工作机制

那ARP是如何知道MAC地址的呢?

ARP是借助ARP请求ARP响应两种类型的包确认MAC地址的。

 主机A为了获得主机B的MAC地址,起初要通过广播发送一个ARP请求包。这个包中包含了想要了解其MAC地址的IP地址,由于广播的包可以被同一条链路上的所有主机和路由器进行解析,如果请求包的IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包返回给主机。

IP地址和MAC地址缺一不可?

是的,尽管数据链路层需要MAC就可发送,IP一个广播(浪费流量)就能发送到区间段。但发送给其他数据链路的某一个主机,就需要两者结合了。

 RARP

与ARP相反,从MAC地址定位IP地址的一种协议。

代理ARP

通常ARP包会被路由器隔离,但是使用代理ARP的路由器可以将ARP请求转发给相邻的网段。由此,两个以上网段的节点之间可以像在同一个网段中一样通信。

5.4 ICMP

辅助IP的ICMP

架构IP网络时要特别注重两点:确认网络是否正常工作,以及遇到问题时进行问题诊断。

例如,一个刚刚搭建好的网络,需要验证该网络的设置是否正确。此外,为了确保网络能够按照预期正常工作,一且遇到什么问题需要立即制止问题的蔓延。为了减轻网络管理员的负担,这些都是必不可少的功能。 ICMP 正是提供这类功能的一种协议。

ICMP 的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。有了这些功能以后,就可以获得网络是否正常、设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断。

ICMP的消息大致可以分为两类:一类是通知出错的错误信息,另一种是用于诊断的查询信息。

 

主要的ICMP信息

ICMP目标不可达信息

IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP信息,并在这个消息中显示不可达的具体原因。

ICMP目标重定向信息

如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个ICMP重定向的消息给这个主机。在这个消息中包含了最合适的路由信息和数据。这主要发生在路由器持有更好路由信息的情况下。路由器会通过这样的ICMP消息给发送端主机一个更合适的发送路由。

不过,多数情况下由于这种重定向消息成为引发问题的原因,所以往往不进行这种设置。 

ICMP目标超时信息

IP包中有一个字段叫做TTL(生存周期),它的值随着每经过一次路由器就会减1,直到减到0该IP包会被丢弃。此时,IP路由器将会发送一个ICMP超时的信息,并通知该包已被丢弃。

 ICMP目标回送信息(类型0,8)

用于进行通知的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种信息,可以向对端主机发送回送请求的消息(类型8),也可以接收对端主机发回来的回送应答消息(类型0)。

ICMPv6

ICMPv6的作用

IPv4中ICMP仅作为一个辅助功能,但在IPv6中,ICMP的作用被扩大,如果没有IPMv6,IPv6就无法实现正常通信。

ICMPv6中大致分为两类:一类是错误信息,另一类是信息消息。类型0~127属于错误消息,128~255属于信息消息。

 邻居探索

ICMPv6中从类型133至137的消息叫做邻居探索信息。邻居请求信息用于查询IPv6的地址与MAC地址的对应关系,并由邻居宣告得知MAC地址。邻居请求信息利用IPv6的多播第hi实现传输。

5.5 DHCP

DHCP实现即插即用

如果逐一为每一台计算机设置IP地址会是非常繁琐的事,于是为了实现自动设置IP地址,统一管理IP地址分配,就产生了DHCP协议。有了DHCP,即插即用变成可能。

 DHCP的工作机制

使用DHCP之前,首先要架设一台DHCP服务器,然后将DHCP所要分配的IP地址设置到服务器上。从DHCP中获取IP地址的流程,简单来说,主要分为两个阶段。

为了避免服务器故障无法分配IP地址,通常假设两台或多台DHCP服务器。

5.6 NAT

NAT定义

NAT是用于本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除转换IP地址外,还出现了可以转换TCP,UDP端口号的NAPT技术。由此可以实现一个全局IP地址与多个主机的通信。

NAT的工作机制

下图利用NAT实现通信

NAT服务器内部,有一张自动生成的用来转换地址的表。当私有网络内的多台机器同时都要与外部进行通信时,仅仅转换IP地址,人们不免担心全局IP地址是否不够用。这时采用包含端口号一起转换的方式可以解决这个问题。 

NAT-PT

现在很多互联网服务都基于IPv4,但需要在IPv6上也适用,就产生了NAT-PT规范。NAT-PT是将IPv6的首部转换为IPv4首部的一种技术。

NAT-PT有很多形式,其中最让人期待的当属DNS和IP首部替换的DNS-ALG。

NAT的潜在问题

 由于NAT都依赖于自己的转换表,因此会有如下几点限制:

  无法从 NAT 的外部向内部服务器建立连接。

  转换表的生成与转换操作都会产生一定的开销。

  通信过程中一旦 NAT 遇到异常需重新启动时,所有的 TCP 连接都将被重置。

  即使备置两台 NAT 做容灾备份, TCP 连接还是会被断开。

解决NAT的潜在问题与NAT穿越

两种办法。一种是改用IPv6,另一种是在一个没有NAT的环境里,根据所制作的应用,用户可以完全忽略NAT的存在而进行通信。

5.7 IP隧道

如下图网络环境中,网络A,B使用IPv6,虽然处于中间位置的C使用IPv4的话,网络A和网络B之间将无法直接进行通信。为了让他们之间正常通信,这时必须采用IP隧道的功能。

IP隧道可以将那些从网络A发过来的IPv6的包统和为一个数据,再为之追加一个IPv4的首部以后转发给网络C。

一般情况下,紧接着IP首部的时TCP或UDP的首部,然而,现在应用当中“IP首部的后边还是IP首部”或“IP首部的后面是IPv6的首部”等情况日益俱增。这种再网络层后面继续追加网络层首部的通信方法就叫做“IP隧道”。

 

5.8 其他IP相关技术

IP多播相关技术

在多播通信中,确认接收端是否存在非常重要。如果没有接收,发送多播消息将会造成网络流量的浪费,而确认是否有接收端,要通过 MLD 实现。它是 IPv4中IGMP和IPv6中ICMPv6的重要功能之一。

ICMP( MLD )主要有两大作用:

1.向路由器表明想要接收多播消息(并通知想接收多播的地址)。

2向交换集线器通知想要接收多播的地址。

IP任播 

IP任播主要用于报警电话110与消防电话119系统,当人们拨打110或119时,其接受电话并不是一个,而是可以拨打到一个区域管辖范围内的所有公安或消防部门,这种机制的实现,在互联网上就是IP任播。

IP任播是指那些提供同一种服务的服务器配置同一个IP地址,并与最近的服务器进行通信的一种方法。在IP任播的应用中最为有名的当属DNS根域名服务器。

IP任播听起来方便,实际上也有不少限制,例如,它无法保证将第一个和第二个包发送给同一个主机。

通信质量控制

通信质量的定义

IP协议设置的初衷是作为一个“尽力服务”的协议,是一款“没有通信服务质量保证”的协议。当通信线路出现拥堵,可能导致通信性能的下降。

随着音频和视频服务对实时性要求的逐渐提高,在使用IP通信过程中能够保证服务质量的技术收到了前所未有的追捧。

控制通信质量的机制

控制通信质量的工作机制类似于高速公路的VIP通道,对于需要保证质量的包,路由器会进行特殊处理。

显式拥挤通知

当发生网络拥挤时,发送主机应该减少数据包的发送量。为了解决这个问题,人们在IP层新增了一种使用显式拥挤通知的机制——ECN,实现拥挤通知的功能。

6.TCP与UDP

6.1 传输层的作用

TCP/IP中有两个具有代表性的传输层协议,它们分别是TCP和UDP。TCP提供可靠的通信传输,UDP则常被用于让广播和细节控制交给应用的通信传输。

传输层定义

IP首部中有一个协议字段,用来标识网络层的上一层采用的是哪一种传输层协议。

传输层的TCP和UDP,为了识别自己所传输的数据部分究竟应该发给哪个应用,也设置了这样一个编号。

以包裹为例,邮递员( IP )根据收件人地址(目标IP地址)向目的地(计算机)投递包裹( IP数据报)。包裏到达目的地以后由对方(传输层协议)根据包裘信息判断最终的接收人(接收端应用程序)。

通信协议 

TCP / IP 的众多应用协议大多以客户端/服务端的形式运行。客户端类似于客户的意思,是请求的发起端。而服务端则表示提供服务的意思,是请求的处理端。另外,作为服务端的程序有必要提前启动,准备接收客户端的请求。否则即使有客户端的请求发过来,也无法做到相应的处理。

两种传输层协议TCP和UDP 

TCP

TCP是面向连接的,可靠的流协议。流就是指不间断的数据结构。当应用程序采用TCP发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。

UDP

UDP 是不具有可靠性的数据报协议。细微的处理它会交给上是的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,却不能保证消息一定会到达。

TCP与UDP的区分

TCP可靠,UDP高效。

6.2 端口号

端口号定义

数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别 TCP / IP 网络中互连的主机和路由器。在传输层中也有这种类似于地址的擬念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。

根据端口号识别应用

一台计算机上可同时运行多个程序,传输层协议正是利用这些端口号识别本机中正在进行通信的应用程序。

通过IP地址,端口号,协议号进行通信识别

 仅凭目标端口识别某一个通信是远远不够的。

如下图所示,①和②的通信是在两台计算机上进行的。它们的目标端口号相同,都是80。例如打开两个 Web 浏览器,同时访问两个服务器上不同的页面,就会在这个浏览器跟服务器之间产生类似前面的两个通信。在这种情况下也必须严格区分这两个通信。因此可以根据源端口号加以区分。

下图中③限①的目标端口号和源端口号完全相同,但是它们各自的源 IP 地址不同。此外,还有一种情况上图中并未列出,那就是 IP 地址和端口全都一样,只是协议号(表示上层是 TCP 或 UDP 的一种编号)不同。这种情况下,也会认为是两个不同的通信。

因此, TCP / IP 或 UDP / IP 通信中通常采用5个信息来识别一个通信。它们是“源地址”、“目标 IP 地址”、“协议号”、“源端口号”、“目标端口号”。只要其中某一项不同,则被认为是其他通信。

端口号如何确定 

确认端口号的方法分为两种:

标定即成的端口号

这种方法也叫静态方法。它是指每个应用程序都有其指定的端口号。但并不亜器是说可以随意使用任何一个端口号。每个端口号都有其对应的使用目的。

时序分配法

此时,服务器有必要确定监听段端口号,但是接收服务的客户端没必要确认端口号。

在这种方法下,客户端应用程序可以完全不用自己设置端口号,而全权交给操作系统进行分配。操作系统可以为每个应用程序分配互不冲突的端口号。例如每需要一个新的缩口号时,就在之前分配号码的基础上加1。这样,操作系統就可以动态地管理端口号了。
动态分配到端口号取值范围在49152到65535之间。

端口号与协议

端口号由其使用的传输层协议决定。因此,不同的传输协议可以使用相同的端口号。例如, TCP 与 UDP 使用同一个端口号,但使用目的各不相同。这是因为端口号上的处理是根据每个传输协议的不同而进行的。 

数据到达IP层后,会先检查 IP 首部中的协议号,再传给相应协议的模块如果是 TCP 则传给 TCP 模块、如果是 UDP 则传给 UDP 模块去做端口号的处理即使是同一个端口号,由于传输协议是各自独立地进行处理,因此相互之间不会受到影响。

6.3 UDP

UDP的特点及其目的

UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立刻按照原样发送到网络上的一种机制。

由于 UDP 面向无连接,它可以随时发送数据。再加上 UDP 本身的处理既简单又高效,因此经常用于以下几个方面:

    包总量较少的通信( DNS 、 SNMP 等)

    视频、音频等多媒体通信(即时通信)

    限定于 LAN 等特定网络中的应用通信

    广播通信(广播、多播)

6.4 TCP

与UDP不同,TCP是对“传输,发送,通信”进行“控制”的“协议”。

TCP 与 UDP 的区别相当大。它充分地实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。而这些在 UDP 中都没有。此外, TCP 作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。

根据 TCP 的这些机制,在 IP 这种无连接的网络上也能够实现高可靠性的通信。

TCP的特点及其目的

为了通过 IP 数据报实現可靠性传输,需要考虑很多事情,例如数据的破坏丢包、重复以及分片順序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。 TCP 通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。


通过序列号与确认应答提高可靠性

在TCP中,当发送端的数据到达接受主机时,接收端主机会返回一个已收到消息的通知,这个信息叫做确认应答

 如下图所示,在一定时间内没有等到确认皮答,发送端就可以认为数据已经丢失,并进行重发。由此,即使产生了丢包,仍然能够保证数据能够到达对端,实现可靠传输。

未收到确认应答并不宜味着数据一定丢失。也有可能是数据对方已经收到只是返回的确认应答在途中丢失。这种情况也会导致发送端因没有收到确认应答,而认为数据没有到达目的地,从而进行重新发送。如下图所示。

 重发超时如何确定

重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将进行数据重发。那么这个重发超时的具体时间长度又是如何确定的呢?

最理想的是,找到一个最小时间,它能保证“确认应答一定能在这个时间内返回”。然而这个时间长短随着数据包途径的网络环境的不同而有所变化。例如在高速的 LAN 中时间相对较短,而在长距离的通信当中应该比 LAN 要长一些。

为了保持TCP的高性能通信,在每次发包时都会计算往返时间及其偏差,将这个往返时间和偏差相加重发超时的时间,就是比这个总和稍大一点的值。

 连接管理

TCP提供面向有连接的通信传输,面向有连接是指在数据通信开始之前先做好通信两端之间的准备工作。TCP会在数据通信之前,通过 TCP 首部发送一个SYN包作为建立连接的请求等待确认应答。如果对端发来确认应答,则认为可以进行数据通信。如果对端的确认应答未能到达,就不会进行数据通信。此外,更多维节请参在通信结束时会进行断开连接的处理(FIN包)。

可以使用 TCP 首部用于控制的字段来管理 TCP 连接。一个连接的建立与断开,正常过程至少需要来回发送7个包才能完成。

TCP以段为单位发送数据

 在建立TCP连接的同时,也可以确认发送数据包的单位,我们也可以称其为“最大消息长度”(MSS)。最理想的情况是,最大信息长度正好是IP中不会被分片处理的最大数据长度。

利用窗口控制提高速度

 TCP 以1个段为单位,每发一个段进行一次确认应答的处理,如图。这样的传输方式有一个缺点。那就是,包的往返时间越长通信性能就越低。

为了解决这个问题,TCP引入了窗口这个概念,即使往返较长的情况下,它也能控制网络性能的下降。如图所示,确认应答不再是以每个分段,而是以更大的单位进行确认时,转发时间将会被大幅度的缩短。也就是说,发送端主机,在发逸了一个段以后不必要一直等待确认应答,而是继续发送。

窗口大小就是指无需等待确认应答而可以继续发送数据的最大值,上图窗口大小为4。

窗口控制与重发控制

在使用窗口控制中,如果出现了段丢失该怎么办?

首先,我们先考虑确认应答未能返回的情况。在这种情况下,数据已经到达对端,是不需要再进行重发的。然而,在没有使用窗ロ控制的时候,没有收到确认应答的数据都会被重发。而使用了窗口控制,就如下图所示,某些确认应答即便丢失也无需重发。

 其次,我们来考虑一下某个报文段丢失的情况,如图所示,接受主机如果收到一个应该接收的序号以外的数据时,会针对当前为止收到数据返回取人应答。

流控制

接收端将本应该接收的数据丢弃的话,就又会触发重发机制,从而导致网络流量的无端浪费。为了防止这种现象的发生, TCP 提供一种机制可以让发送端根据接收端的实际接收能力控制发送的数据量。这就是所谓的流控制。

它的具体操作是,接收端主机向发送端主机通知自己可以接收数据的大小,于是发送端会发送不超过这个限度的数据。该大小限度就被称作窗口大小。

拥塞控制

有了 TCP 的窗口控制,收发主机之间即使不再以一个数据段为单位发送确认应答,也能够连续发送大量数据包。然而,如果在通信刚开始时就发送大量数据,也可能会引发其他问题。

一般来说,计算机网络都处在一个共享的环境。因此也有可能会因为其他主机之间的通信使得网络拥堵。在网络出现拥堵时,如果突然发送一个较大量的数据,极有可能会导致整个网络的瘫痪。 

TCP 为了防止该问题的出现,在通信一开始时就会通过一个叫做慢启动的算法得出的数值,对发送数据量进行控制。

为了在发送端调节所要发送数据的量,定义了一个加做“拥塞窗口”的概念。 

使用TCP的应用

到此为止,我们了解到各种各样的控制机制。TCP采用这些机制可以提供高速,可靠的通信服务。

如果需要应用自己处理一些更为细节上的控制,使用 UDP 协议是不错的选择。如果转发数据量较多、对可靠性的要求比较高时,可以选择使用 TCP 。 TCP 和 UDP 两者各有长短,在设计和开发应用时,应准确掌握它们各自协议的特点酌情选择。

6.5 其他传输层协议

除了TCP,UDP协议,还有几种传输层协议曾被提案并进行了实验,最近(是之前)更是有几个协议从试验阶段步入了实用阶段。

本章旨在介绍部分已经被提案并在今后可能广泛使用的传输层协议。

UDP-Lite

UDP-Lite( Lightweight User Datagram Protoeol ,轻量级用户数据报协议)是扩展 UDP 机能的一种传输层协议。在基于 UDP 的通信当中如果校验和出现错误,所收到的包将被全部丢弃。

SCTP

SCTP是流控制传输协议,与TCP一样,都是一种对提供数据到达与否相关可靠性检查的传输层协议。其主要特点如下:

以消息为单位收发

 TCP 中接收端并不知道发送端应用所决定的消息大小。在 SCTP 中却可以。

支持多重宿主

在有多个 NIC 的主机中,即使其中能够使用的 NIC 发生变化,也仍然可以继续通信。 

支持多数据流通信

TCP 中建立多个连接以后才能进行通信的效果,在 SCTP 中一个连接就可以。

可以定义消息的生存期限

超过生存期限的消息,不会被重发。

DCCP

DCCP ( Datngram Congestion Control Protocol ,数据报拥塞控制协议)是一个辅助 UDP 的崭新的传输层协议。 UDP 没有拥塞控制机制。为此,当应用使用 UDP 发送大量数据包时极容易出现问题。互联网中的通信,即使使用 UDP 也应该控制拥塞。而这个机制开发人员很难将其融合至协议中,于是便出现了 DcCP 这样的规范。

 DCCP 具有如下几个特点:

与 UDP 一样,不能提供发送数据的可靠性传输。

它面向连接,具备建立连接与断开连接的处理。在建立和断开连接上是具有可靠性。

能够根据网络拥堵情况进行拥塞控制。使用 DCCP (RFC4340)应用可以根据自身特点选择两种方法进行拥塞控制。它们分别是“类似 TCP ( TCP Like )拥塞控制”和“ TCP 友好升级控制”( TCP - Friendly Rate Control )(RFC4341)。

为了进行拥塞控制,接收端收到包以后返回确认应答( ACK )。该确认应答将被用于重发与否的判断。

6.6 UDP首部的格式

UDP首部由源端口号,目标端口号,包长和校验和组成。

源端口号

表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置端口号,没有根端口号的时候该字段的值设置位0,可用于不需要返回的通信中。

目标端口号

表示接收端端口,字段长度16位。

包长度

该字段保存了UDP首部的长度跟数据的长度之和,单位为字节(八位字节)。

校验和 

校验和是为了提供可靠的UDP首部根数据而设计。

6.7 TCP首部格式(强烈建议看看原文P222)

TCP首部相比于UDP首部要复杂的多 

源端口号

表示发送端端口号,字段为16位。

目标端口号

表示接收端端口号,字段为16位。

序列号

字段长32位,序列号是指发送数据的位置,每发送一次数据,就累计一次该数据字节数的大小。

确认应答号

确认应答号字段长度32位,是指下一次应该收到的数据的序列号。

数据偏移

该字段表示TCP所传输的数据部分应该从TCP包的哪个位开始计算,当然也可以把它看成TCP数不对长度。

保留

该字段主要是为了以后拓展时,其长度为4位。一般设置为0,但即使收到的包在该字段不为0,此包也不会被丢弃。

7.路由协议

7.1 路由控制的定义

IP地址与路由控制

互联网是由路由器连接的网络组合而成的。为了能让数据包正确达地到达目标主机,路由器必须在途中进行正确地转发。这种向“正确的方向”转发数据所进行的处理就叫做路由控制或路由。

路由器根据路由控制表( Routing Table )转发数据包。它根据所收到的数据包中目标主机的 IP 地址与路由控制表的比较得出下-个应该接收的路由器。因此,这个过程中路由控制表的记录一定要正确无误。但凡出现错误,数据包就有可能无法到达目标主机。

静态路由和动态路由

那么,是谁又是怎样制作和管理路由控制表的呢?路由控制分静态"和动态"两种类型。

静态路由是指事先设置好路由器和主机中并将路由信息固定的一种方法。而动态路由是指让路由协议在运行过程中自动地设置路由控制信息的一种方法。这些方法都有它们各自的利弊。

不论是静态路由还是静态路由,不要只使用其中一种,可以将它们组合起来使用。

动态路由的基础

动态路由如图所示,会给相邻路由器发送自己已知的网络连接信息,而这些信息又像接力一样依次传递给其他路由器,直至整个网络都了解时,路由控制表也就制作完成了。而此时也就可以正确转发IP 数据包了。

7.2 路由控制范围

随着IP网络的发展,想要对所有网络统一管理是不可能的事,因此,人们根据路由控制的范围使用IGP和EGP两种类型的路由协议。

接入互联网的各种组织机构

互联网连接着世界各地的组织机构,不仅包括语言不相通的,甚至包括宗教信仰全然不同的组织。没有管理者,也没有被管理者,每个组织之间保持着平等的关系。

自治系统与路由协议

企业内部网络的管理方针,往往由该企业组织内部自行决定。

制定自己的路由策略,并以此为准在一个或多个网络群体中采用的最小单位叫做自治系统或路由选择域。

 自治系统(路由选择城)内部动态路由采用的协议是域内路由协议,即ICP 而自治系统之间的路由控制采用的是域间路由协议,即ECP。

IGP和EGP

如前面述,路由协议大致分为两大类。一类是外部网关协设 ECP ,另一类是内部网关协议ICP( Interar Catewy Protocol ). 

IP 地址分为网络部分和主机部分,它们有各自的分功。 EGP 与 IGP 的关系与 IP 地址网络部分和主机部分的关系有相似之处。就像根据 IP 地址中的网络部分在网络之间进行路由选择、根据主机部分在链路内部进行主机识朋一样,可以榄然 ECP 在区域网絡之间(或ISP之间)进行路由选择,也可以模据 ICP 在区域网绘内部(或 ISP内部)进行主机识别。

由此,路由协议被分为 EGP 和 IGP 两个层次。没有 ECP 就不可能有世界上各个不同组织机构之间的通信。没有IGP机构内都也就不可能进行通信。
 

7.3 路由算法

路由控制由各种各样的算法,其中最具代表性的有两种,是距离向量算法链路状态算法

距离向量算法

距离向量算法是根据距离和方向决定目标网络或主机位置的一种方法。

路由器之间可以互换目标网络的方向及其距离的相关信息,并以这些信息基础制作路由控制表。这种方法在处理上比较简单,不过由于只有距离和方向的信息,所以当网络构造变得分外复杂时,在获得稳定的路由信息之前需要消耗一定时间,也极易发生路由循环等问题。

链路状态算法

链路状态算法是路由器在了解了网络整体连接状态的基础上生成路由控制表的一种方法。该方法中,每个路由器必须保持同样的信息才能进行正确的路由选择。

主要路由协议
 下面还有几种路由协议。

7.4 RIP

RIP是距离向量型的一种路由协议,广泛用于LAN。

广播路由控制信息

RIP将路由控制信息定期(30秒一次)向全网广播,如果没有收到路由控制信息,连接就会被断开。不过,这有可能是由于丢包导致的,因此 RIP 规定等待5次。如果等了6次(180秒)仍未收到路由信息,才会真正关闭连接。

根据距离向量确定路由

RIP 基于距离向量算法决定陪经。距离( Metnes )的单位为“跳数”。跳数是指所经过的路由器的个数。 RIP 希望尽可能少通过路由器将数据包转发到目标 IP 地址,如下图所示。根据距离向量生成距离向量表,再抽出较小的路由生收最终的路由控制表。

RIP2

RIP2是RIP第二版,与第一版工作机制基本相同,不过有如下几个新的特点。

使用多播 

RIP 中当路由器之间交换路由信息时采用广播的形式,然而在RIP2中改用了多播。这样不仅减少了网络的流量,还缩小了对无关主机的影响。

支持子网掩码

与 OSPF 类似的,RIP2支持在其交换的路由信息中加人子网掩码信息。

路由选择域

与OSPF的区域类似,在同一个网络中可以使用逻辑上独立的多个 RIP 。

外部路由标志

通常用于把从 BGP 等获得的路由控制信息通过 RIP 传递给 AS 内。

身份验证密钥

与OSPF一样,RIP包中掷带密码。只有在自己能够识别这个密码时才接收数据,否则忽略这个RIP包。

7.5 OSPF

OSPF ( Open Shortest Path First )是根据 OSI 的IS-IS协议而提出的一种链路状态型路由协议。由于采用链路状态类型,所以即使网络中有环路,也能够进行稳定的路由控制。

另外, OSPF 支持子网掩码。由此,曾经在 RIP 中无法实现的可变长度子网构造的网络路由控制成为现实。

甚至为了减少网络流量, OSPF 还引人了“区域”这一概念。区域是将一个自治网络划分为若干个更小的范围。由此,可以减少路由协议之间不必要的交换。

OSPF可以针对 IP 首部中的区分服务(T0s)字段,生成多个路由控制表。不过,也会出现已经实现了 OSPF 功能的路由器无法支持这个TOS的情况。

OSPF是链路状态型路由协议

OSPF为链路状态型路由器。路由器之间交换链路状态生成网络拓扑信息,然后再根据这个拓扑信息生成路由控制表。

RIP的路由选择,要求途中所经过的路由器个数越少越好。与之相比,OSPF可以给每条链路赋予一个权重,并选择一个权重最小的路径作为最终路由。

 OSPF基础知识

OSPF中,把连接到同一个链路的路由器称作相邻路由器。简单的网络结构中,相邻路由器之间可以交换路由信息,但再复杂到达网络中,是确定一个制定路由器,并以它为中心交换路由信息即可。

在OSPF中,根据作用的不同可以分为5种类型的包。 

OSPF工作原理概述

OSPF种进行连接确认端协议叫做HELLO协议。

LAN 中每10秒发送一个HELLO包。如果没有HELLO包到达,则进行连接是否断开的判断。具体为,允许空等3次,直到第4次(40秒后)仍无任何反应就认为连接已经断开。之后在进行连接断开或恢复连续操作时,由于链路状态发生了变化,路由器会发送一个链路状态更新包通知其他路由器网络状态的变化。

链路状态通知包所要传达的消息大致分为两类:一是网络链路状态通告,二是路由器链路状态通告。

将区域分层化进行细分管理

链路状态型路由协议的潜在问题在于,当网络规模越来越大时,表示链路状态的拓扑数据库就变得越来越大,路由控制信息的计算也就越困难。OSPF为了减少计算负荷,引人了区域的概念。

区域是指连接在一起的网络和主机划分为小组,使一个自治系统内可以拥有多个区域。不过具有多个区域的自治系统必须要有一个主干区域,并且所有其他区域必须都与这个主干系统相连接。

连接区域与主干区城的路由器称作区域边界路由器;而区域内部的路由器叫做内部路由器;只与主干区域内连接的路由器叫做主干路由器;与外部相连接的路由器就是 AS边界路由器。

每个区域内的路由器都持有本区域网络拓扑的数据库。至于区域之外的路径信息,只能从区域边界路由器那里获取他们的距离。 

只了解区域内部的链路状态信息,减轻了处理的负担。

此外,作为区域出口的区域边界路由器若只有一个的话叫做末端区域(如图区域2)。末端区域内不需要发送区域外的路由信息。它的区域边界路由器(在本图中为路由器 E )将成为默认路径传送路由信息即可。因此,由于不需要了解到达其他各个网络的距离,所以它可以减少一定地路由信息。

要想在OSPF中构造一个稳定的网络,物理设计和区域设计同样重要。如果区域设计不合理,就有可能无法充分发挥 OSPF 的优势。

7.6 BGP

边界网关协议是连接不同组织机构的一种协议。

BGP与AS号

在RIP和OSPF中利用IP的网络地址进行着路由控制,然而BGP则需要放眼整个互联网互联网进行路由控制,BGP的最终路由控制表由网络地址和下一战的路由器组来表示,不过它会根据所要经过的AS个数进行路由控制。

ISP,区域网络等会将每个网络编制成一个个自治系统进行控制。它们为每个自治系统分配一个16比特的AS编号,BGP就是根据这个编号进行相应的路由控制。

BGP是路径向量协议

根据 BCP 交换路由控制信息的路由器叫做 BCP 扬声器。 BcP 扬声器为了在 AS 之间交换 BCP 信息,必须与所有 AS 建立对等的 BCP 连接。此外,如下图中的自治系统AS2、AS4、AS5,它们在同一个 AS 内部有多个 BCP 扬声器。在这种情况下,为了使 AS 内部也可以交换 BCP 信息,就需要建立 BCP 连接。

7.7 MPLS

现在,在转发IP数据包的过程中除了使用路由技术外,还在使用标记交换技术。路由技术基于 IP 地址中最长匹配原则进行转发。

标记交换则对每个 IP 包都设定一个叫做“标记”的值,然后根据这个“标记”再进行转发。记交换技术中最具代表性的当属多协议标记交换技术,即 MPIS

MPLS的网络基本动作(建议看看,P249)

 MPLS 网络中实现 MPLS 功能的路由器叫做标记交换路由器( LSR )。特别是与外部网路连接的那部分 LSR 叫做标记边缘路由器( LER )。 MPLS 正是在 LER 上对数据包进行追加标记和删除标记的操作。

MPLS的优点

MPLS的优势可归纳为两点.第一是转发速度快,第二在于利用标记生成虚拟的路径,并在它的上面实现IP等数据包的通信。

8.应用协议

8.1 应用层协议概要

之前介绍的主要是指OSI参考模型的下半部分,从本章开始介绍OSI上半部分。

 应用协议的定义

利用网络的应用程序有很多,包括 Web 浏览器、电子邮件、远程登录、文件传输、网络管理等。能够让这些应用进行特定通信处理的正是应用协议。 

TCP 和 IP 等下层协议是不依赖于上层应用类型、适用性非常广的协议。而应用协议则是为了实现某种应用而设计和创造的协议。

应用协议与协议的分层

网络应用由不同的用户和软件供应商开发而成。为了实现网络应用的功能,在应用之间进行通信时将其连接的网络协议是非常重要的”。设计师和开发人员根据所开发模块的功能和目的,可以利用现有的应用协议,也可以自己定义一个新的应用协议。

应用可以直接享用传输层以下的基础部分。因为开发者只要关心选用哪种应用协议、如何开发即可,而不必担心应用中的数据该以何种方式发送到目标主机等问题。这也是得益于网络层的功劳。

相当于OSI中第5,第6,第7层的协议

8.2 远程登陆

远程登陆是为了实现TSS(分时系统:分时是指多个用户分享使用同一台计算机)环境,将终端和主机相连。

从自己的本机计算机登录到网络另一端的应用就叫远程登陆。

TELNET

TELNET 利用 TCP 的一条连接,通过这一条连接向主机发送文字命令并在主机上执行。本地用户好像直接与远端主机内部的 Shell 相连着似的,直接在本地进行操作。 

TELNET 可以分为两类基本服务。一是仿真终端功能,二是协商选项机制

 通过TELNET登陆主机或路由器等设备时需要将自己的登陆用户名和密码注册到服务端。

选项

TELNET中除了处理用户所输入的文字外,还提供选项的交互和协商功能。

下图是TELNET中的行模式或透明模式。

SSH

SSH是加密的远程登陆系统。

SSH还包括很多非常方便的功能。

  可以使用更强的认证机制。

  可以转发文件。

  可以使用端口转发功能。

端口转发是指将特定端口号所收到的消息转发到特定的 IP 地址和端口号码的一种机制。由于经过 SSH 连接的那部分内容被加密,确保了信息安全,提供了更为灵活的通信。

8.3 文件传输

FTP是在两个相连的计算机之间进行文件传输时使用的协议。FTP中也需要在登录到对方对方的计算机后才能进行相应的操作。

FTP的工作机制概要

问:FTP如何实现文件传输呢?

答:它使用两条TCP连接:一条用来控制,另一条用于数据的传输。

8.4 电子邮件

电子邮件顾名思义就是网络上的邮政。

 电子邮件的工作机制

提供电子邮件的协议加做SMTP。SMTP为了实现高效发送邮件内容,在传输层使用了TCP协议。

为了避免对方因未插电而无法接收邮件,引进了一种一直会连接电源的邮件服务器。

邮件地址

使用电子邮件时需要拥有的地址叫做邮件地址。互联网中电子邮件地址的格式如下:

名称@通信地址

MIME

很长一段时间里,电子邮件只能处理文本格式的邮件,有了MIME就可以发送动态图像,动画,声音,程序等各种各样的数据

SMTP

SMTP是发送电子邮件的协议,它使用的是TCP的25号端口。客户端以文本的形式发出请求,服务端返回一个3位数字的应答。

每个指令和应答的最后都必须追加换行指令。

 POP

之前讲到SMTP是发送邮件的协议。起初这种机制没有任何问题,但后来个人电脑连接互联网的环境中就出现了问题,个人电脑不可能长时间处于开机状态。人们希望一开机就能接收到邮件,但SMTP没有这种处理机制。

为了解决这个问题,就引入了POP协议。

 如图所示,该协议是一种用于接收电子邮件的协议。发送端的邮件根据 SMTP 协议将被转发给一直处于插电状态的 PoP 服务器。客户端再根据 POP 协议从 PoP 服务器接收对方发来的邮件。在这个过程中,为了防止他人盗窃邮件内容,还要进行用户验证。

IMAP

IMAP 与 POP 类似,也是接收电子邮件的协议。在 POP 中邮件由客户端进行管理,而在 IMAP 中邮件则由服务器进行管理。 

有了 IMAP 人们就可以通过个人电脑、公司的电脑、笔记本电脑以及智能手机等连接到 IMAP 服务器以后进行收发邮件。由此,在公司下载的电子邮件就不必在笔记本电脑和智能手机上转来转去。 IMAP 确实为使用多种异构终端的人们提供了非常便利的环境。

8.5 WWW

互联网的蓬勃发展

万维网(www)是将互联网中的信息以超文本形式呈现的系统。可以显示WWW信息的客户端软件叫做Web游览器。借助游览器,人们不需要考虑该信息保存在哪个服务器,只需要轻轻点击鼠标就可以访问页面上的链接并打开相关信息。

很多公司的主页形式如下:

http://www.公司名称.co.jp/

www基本概念

 www 定义了3个重要的概念,它们分别是访问信息的手段与位置( URI )、信息的表现形式( HTML )以及信息转发( HTTP )等操作。

URI

用于标识资源,是一种可以用于WWW之外的高效的识别码,它被用于主页地址,电子邮件,电话号码等各种组合中。URL属于一般主页地址。

HTML

HTMP 是记述 Web 页的一种语言(数据格式)。它可以指定浏览器中显示的文字、文字的大小和颜色。此外,不仅可以对图像或动画进行相关设置,还可以设置音频内容。

HTML 具有纯文本的功能。在页面中不仅可以为文字或图像附加链接,当用户点击那些链接时还可以呈现该链接所指示的内容,因此它可以将整个互联网中任何一个 WWW 服务器中的信息以链接的方式展现。绝大多数互联网中的 Web 页,都以链接的形式指向关联的其他信息。

逐一点开这些链接就可以了解全世界的信息。 HTML 也可以说是 www 通用的数据表现协议。

HTTP

当用户在浏览器的地址栏里输人所要访问 Web 页的 URI 以后, HTTP 的处理即会开始。 HTTP 中默认使用80端口。它的工作机制,首先是客户端向服务器的80端口建立一个 TCP 连接,然后在这个 TCP 连接上进行请求和应答以及数据报文的发送。

HTTP常用的有两个版本,一个是HTTP1.0,另一个是HTTP1.1,从1.1开始允许在一个TCP连接上发送多个命令和应答。

8.6 网络管理

SNMP

以前,网络管理都是凭借管理员的记忆和直觉进行。而随着网络规模的扩大,需要一个严密的管理工具或方法显得格外重要。TCP/IP使用SNMP收集必要的协议。

 SNMP中管理端叫做管理器,被管理端叫做代理。

SNMPv3中将“消息处理”、“用户安全”和“访问控制”三部分分开考虑,可以为每一个部选择各自必要的机制。

消息处理中如果选择了SNMPv2的模型,那么会进行以下8种操作。它们分别是:查询请求,上次要求的下一个信息的查询请求(GetNexiRequest-PDU)、应答、设置请求、批量查询请求(CetBulkRequest-PDU)、向其他管理器发送信息通知(InformRequest-PDU)、事件通知、用管理系统定义的命令(Report-PDU)等操作。

 MIB

SNMP 中交互的信息是 MIB ( Management Information Base )。 MIB 是在树形结构的数据库中为每个项目附加编号的一种信息结构。

MIB 相当于 SNMP 的表示层,它是一种能够在网络上传输的结构。 SNMP 中可以将 MIB 值写人代理,也可以从代理中读取 MIB 值。通过这些操作可以收集冲突的次数和流量统计等信息,可以修改接口的 IP 地址,还可以进行路由器的启停、设备的启动和关闭等处理。

RMON

 RMON 是 Remote Monitoring MIB 的缩写。 MIB 由监控网络中某个设备接口(某个点)的众多参数构成。相比之下, RMON 则由监控网络上线路的众多参数构成。 

RMON 中可监控的信息从原来的一个点扩展到了一条线上。这样可以更高效率地监控网络。可监控的内容上也增加了很多从用户角度看极为有意义的信息,如网络流量统计等。

8.7 其他应用层协议

随着互联网范围的扩大,被用于电视电话会议,现场转播等领域。

多媒体通信实现技术

互联网电话和电话会议非常注重系统的即时性,因此采用UDP(更高效)。

然而,只使用 UDP 还不足以达到进行实时多媒体通信的目的。例如,在互联网电视电话议会中需要提供查询对方号码模拟电话机的拨号以及以什么形式交互数据等功能。为此,需要一个叫做“呼叫控制”的支持。呼叫控制主要采用 H .323与 SIP 协议。此外,还需要 RTP 协议(结合多媒体数据本身的特性进行传输的一种协议)和压缩技术(在网络上传输音频、视频等大型多媒体数据时进行压缩)的支持。

H.323

H .323是由 mTU 开发用于在 IP 网上传输音频、视频的一种协议。起初,它主要是作为接入ISDN 网和IP网之上的电话网为目的的一种规范而被提出的。H323定义了4个主要组件。它们分别是终端(用户终端)、网关(吸收用户数据压缩顺序的不一致性)、网闸(电话本管理、呼叫管理)以及多点控制单元(允许多个终端同时使用)。

SIP 

SIP提出要晚于H.323,但被普遍认为更适合互联网,相比下SIP的构成简单了许多。

通过終端之间收发消息,可以令 SIP 进行呼叫控制并做一些多媒体通信中必要的准备。不过仅凭 SIP 对数据收发的准备工作还不足以进行多媒体数据的传输。 SIP 消息通常都由终端进行直接处理,但是也有在服务器上进行处理的情况。由于 SIP 非常相似于 HTTP 的工作机制,不仅在 VoIP ,在其他应用当中也已经被广泛使用。

主要SIP命令

 

 RTP

UDP 不是一种可靠性传输协议。因此采用 UDP 实现实时的多媒体通信需要附加一个表示报文顺序的序列号字段,还需要对报文发送时间进行管理。这些正是 RTP (Real-Time Protocol )的主要职责 RTP 为每个报文附加时间戳和序列号。

数据压缩技术

通过有效的压缩可以大量减少音频和视频数据的大小。在有限的网絡资源中进行多媒体数据的传输,压缩技术成为一个必要的手段。


P2P

互联网电子邮件的通信,通常是1对N的通信形式。

与之不同,网络上的终端或主机不经服务器直接1对1相互通信的情况叫做P2P。

LDAP

LDAP ( Lightweight Directory Access Protocol )是访问目录服务的一种协议,也叫轻量级目录访问协议。所谓“目录服务”是指网络上存在的一种提供相关资源的数据库的服务。这里的目录也有地址簿的意思。可以认为目录服务就是管理网络上资源的一种服务。

LDAP 定义了目录树的结构、数需格式、命名规则、目录访问順序和安全认证。

图列出了 LDNP 设置的一般结构。

图则为单纯目录树的例子。

 大公司中,用户和设备数量庞大,为了让用户能够使用计算机或某个应用,有必要事先进行可否使用计算机或应用的设置。

 此时如果这些设备和应用应对了 LDAP 并在一个可以进行统一管理的 LDAP 服务器中注册了所有用户,那么就可以对这些用户是否有效进行判断。 LDAP 常被用于这一类的认证管理和资源管理中。

9.网络安全

9.1 TCP/IP与网络安全

起初,TCP/IP只用于一个相对封闭的环境。

随着互联网的普及,发生了很多非法访问,恶意攻击等问题,影响了企业和个人的利益。由此,网络安全逐渐成为人们不可忽视的一个重要内容。

“便利性”和“安全性”作为两个对立的特性进行兼容。为了安全,需要牺牲部分便利。

9.2 网络安全构成要素

网络安全最基本要领是要有预备方案。强调事前制定对策,而不是事后处理。

在此,我们针对每一个要素进行介绍。

防火墙

组织机构内部的网络和互联网相连时,为了避免域内收到非法访问的威胁,往往会设置防火墙。

下图中是一个设置防火墙的例子,对路由器设置了只向其发送特定地址和端口号的包。

IDS(入侵检测系统)

数据包符合安全策略,防火墙才会让其通过。但只要与策略相符,就无法判断当前访问是否非法访问,所以全部允许通过。

而IDS正是检查这种已经侵入内部网络进行非法访问的情况,并及时通知给网络管理员的系统。

反病毒/个人防火墙

反病毒和个人防火墙是继IDS和防火墙之后的另外两种安全对策,它们往往是用户使用的计算机或服务器上运行的软件。

既可以监控计算机中进出的所有包,数据和文件,也可以防止对计算机的异常操作和病毒入侵。

9.3 加密技术基础

一般情况下,网页访问、电子邮件等互联网上流动的数据不会被加密。另外,互联网中这些数据经由哪些路径传输也不是使用者可以预知的内容。因此,通常无法避免这些信息会泄露给第三方。

为了防止这种信息的泄露、实现机密数据的传输,出现了各种各样的加密技术。加密技术分布与 OSI 参考模型的各个阶层一样,相互协同保证通信。

对称密码体制与公钥密码体制

 加密是指利用某个值(密钥)对明文的数据通过一定的算法变换成加密(密文)数据的过程。它的逆反过程叫做解密。

加密和解密使用相同的密钥叫做对称加密方式。反之,如果在加密和解密过程中分别使用不同的密钥则叫做公钥加密方式。 

对称加密方式包括 AES ( Advanced Encryption Standard )、 DES ( Data Encryptior Sandasd )等加密标准,而公钥加密方法中包括 RSA 、 DH (Difie-Helman)、椭圆曲线等加密算法。

身份认证技术

 在实施安全对策时,有必要验证使用者的正确性和真实性。如果不是正当的使用者要拒绝其访问,为此,需要数据加密的同时还要有认证技术。

认证可以分为如下几类

根据所知道的信息进行认证

指使用密码或私有代码(私有识别玛)的方式。为了不让密码丢失或不被轻易推测出来,用户自己需要多加防范。使用公钥加密方式进行的数字认还,就需要验证是否持有私钥。

根据所拥有的信息进行验证

据所拥有的信息进行认证指利用 ID 卡、密钥、电子证书、电话号码等信息的方式。在移动手机互联网中就是利用手机号码成终端信息进行权限认证。

根据独一无二的体态特征进行认证

指根据指纹、视网膜等个人特有的生物特征进行认证的方式。

从认证级别和成本效益的角度考虑,一般会综合上述3种方式的情况更为普遍。另外,还有一种集合各种终端、服务器和应用的认证于一起进行综合管理的技术叫做 IDM ( IDentity Managrment )。

9.4 安全协议

IPsec与VPN

以前,为了防止信息泄焦,对机密数据的传输一般不使用互联网等公共网络( Publie Nctvork ),而是使用由专线连接的私有网络( Paivate Network )。从而在物理上杜绝了窃听和篡改数据的可能。然而,专线的造价太高是一个不可回避的问题。

为了解决此类问题,人们想出了在互联网上构造一个虚拟的私有网络VPN ( Virtual Private Network ,虚拟专用网)。互联网中采用加密和认证技术可以达到“即使读取到数据也无法读慌”、“检查是否被篡改”等功效。 VPN 正是一种利用这两种技术打造的网络。 

在构建 VPN 时,最常被使用的是 IPsec 。它是指在 IP 首部的后面追加“封装安全有效载荷”和“认证首部”,从而对此后的数据进行加密,不被盗取者轻易解读。

TLS/SSL与HTTPS

现在有很多互联网应用已经逐渐进人人们的生活。例如网上购物、网上订车票、订飞机票或预订演出票等。在这些系统的支付过程中经常会涉及信用卡网上支付,而网上银行系统还備要用户直接在网上输人账号和密码。

而信用卡卡号、银行账号、密码都属于个人的机密信息。因此,在网络上传输这些信息时有必要对它们进行加密处理。 Web 中可以通过 TLS/SSL 对 HTTP 通信进行加密。使用 TLS / SSL 的 HTTP 通信叫做 HTTPS 通信。 HTTPS 中采用对称加密方式。而在发送其公共密钥时采用的则是公钥加密方式。

确认公钥是否正确主要使用认证中心签发的正护士,而主要的认证中心的信息已经嵌入到游览器的出厂设置中。

IEEE802.1X

IEEE802. 1X 是为了能够接入 LAN 交换机和无线 LAN 接人点而对用户进行认证的技术。并且它只允许被认可的设备才能访问网络。虽然它是一个提供数据镂路层控制的规范,但是与 TCP / IP 关系紧密。一般,由客户端终端、 AP (无线基站)或2层交换机以及认证服务器组成。

10.关于本博客

本博客是博主阅读《图解TCP/IP》(第五版)后为了加深理解,也觉得能让一些朋友快速看完此书的关键内容,就有了这篇博客。到发表的时候,担心有一些问题,如果有问题,麻烦联系博主。大家多多交流。

参考

《图解TCP/IP》  【日】竹下隆史 村山公保  荒井透  苅田幸雄  著  乌尼日其其格  译

标签:协议,IP,网络,TCP,地址,图解,路由
来源: https://blog.csdn.net/qq_59392324/article/details/120698235

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有