计算机网络 - 第 4 章 网络层

4.1 网络层提供的两种服务

4.2 网际协议 IP

    网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一,也是最重要的互联网标准协议之一

    这里所讲的 IP 其实是 IP 的第 4 个版本,应记为 IPv4

    与 IP 协议配套使用的还有三个协议:

        1). 地址解析协议 ARP (Address Resolution Protocol)

        2). 网际控制报文协议 ICMP (Internet Control Message Protocol)

        3). 网际组管理协议 IGMP (Internet Group Management Protocol)

    本来还有一个协议叫做逆地址解析协议 RARP(Reverse Address Resolution Protocol),是和 ARP 协议配合使用的,现已废弃

    图 4-2 画出了这三个协议和网际协议 IP 的关系;在这一层中,ARP 在最下面,因为 IP 经常要用到 ARP ;ICMP 和 IGMP 在这一层的上方,因为这两个协议要使用 IP 协议

    由于网际协议 IP 是用来使互连起来的 "众多计算机网络" 能够进行通信,因此 TCP/IP 体系中的网络层也称为 "网际层(internet layer)或 IP 层" ,使用 "网际层" 这个名词的好处是强调,这是由很多网络构成的互连网络

4.2.1 虚拟互连网络

    如果要在全世界范围内把数以百万计的网络都互连起来,并且能够互相通信,这样的任务一定非常复杂;其中会遇到许多需要解决的问题,如:

   a. 不同的寻址方案; 

   b. 不同的最大分组长度;

   c. 不同的网络接入机制;

   d. 不同的超时控制;

   e. 不同的差错恢复方法;

   f. 不同的状态报告方法;

   g. 不同的路由选择技术;

   h. 不同的用户接入控制;

   i. 不同的服务(面向连接服务和无连接服务)

   j. 不同的管理与控制方式;等等

    没有一种单一的网络能够适应所有用户的需求

    将网络互相连接起来,要使用一些中间设备;根据中间设备所在的层次,可以有以下 4 种不同的中间设备:

    (a). 物理层的中间设备叫做 "转发器(repeater)"

    (b). 数据链路层的中间设备叫做 "网桥" 或 "桥接器(bridge)"

    (c). 网络层的中间设备叫做 "路由器(router)"

    (d). 网络层以上的中间设备叫做 "网关(gateway)" ,用网关连接两个不兼容的系统需要在高层进行协议转换

    注意:

    当中间设备是转发器或网桥时,这仅仅是把一个网络扩大了,从网络层的角度看,这仍然是一个网络,并不能称为网络互连;网关比较复杂,目前用得比较少

    现在我们讨论网络互连时,都是指用路由器进行网络互连和路由选择;路由器其实就是一台专用计算机,用来在互联网中进行路由选择;由于历史原因,许多有关 TCP/IP 的文献曾经把网络层使用的路由器称为网关(网络层以上的中间设备才称为网关)

    图 4-3(a) 表示有许多 "计算机网络" 通过一些路由器进行互连;由于参加互连的计算机网络都使用相同的 "网际协议 IP(Internet Protocol)" ,因此可以把互连以后得计算机网络看成如图 4-3(b) 所示的一个 "虚拟互连网络(internet)"

    所谓 "虚拟互连网络" 也就是 "逻辑互连网络" ,意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络在网络层看起来好像是一个统一的网络

    这种使用 IP 协议的虚拟互连网络可简称为 IP 网( IP 网是虚拟的,不必每次都强调 "虚拟" )

    使用 IP 网的好处是:当 IP 网上的主机进行通信时,就好像在一个单个网络上通信一样,看不见互连的各个网络的具体异构细节(如具体的编址方案 、路由选择协议,等等);如果在这种覆盖全球的 IP 网的上层,使用 TCP 协议,那么就是现在的互联网(Internet)

    当很多异构网络通过路由器互连起来时,如果所有的网络都使用相同的 IP 协议,那么在网络层讨论问题就显得很方便

    示例:

    在图 4-4 所示的互联网的源主机 H1 要把一个 IP 数据报发送给目的主机 H2 ;根据第一章中讲过的分组交换的存储转发概念

    (1). 主机 H1 先要查找自己的路由表,看目的主机是否就在本网络中

    (2). 如果目的主机 H2 就在本网络中,则不需要经过任何路由器就直接交付,任务就完成了

    (3). 如果目的主机 H2 不在本网络中,则必须把 IP 数据报发送给某个路由器(图中的 R1)

    (4). 路由器 R1 在查找自己的路由表后,知道应当把数据报转发给路由器 R2 进行间接交付

    (5). 这样一直转发下去,最后由路由器 R5 知道自己是和目的主机 H2 连接在同一个网络中,不需要再使用别的路由器转发了,于是由路由器 R5 把数据报直接交付目的主机 H2

    图中画出了源主机 、目的主机以及各路由器的协议栈;我们注意到,主机的协议栈共有五层,但路由器的协议栈只有下面三层;图中还画出了数据在各协议栈中流动的方向(用黑色粗线表示);还有,在 R4 和 R5 之间使用了卫星链路,而 R5 所连接的是个无线局域网;在 R1 到 R4 之间的三个网络则可以是任意类型的网络;总之,这里强调的是:互联网可以由多种异构网络互连组成

    如果只从网络层考虑问题,那么 IP 数据报就可以想象是在网络层中传送,其传送路径是:

        H1 -> R1 -> R2 -> R3 -> R4 -> R5 -> H2

    这样就不必画出许多完整的协议栈,使问题的描述更加简单

    有了虚拟互连网络的概念后,我们再讨论在这样的虚拟网络上如何寻址

4.2.2 分类的 IP 地址

    在 TCP/IP 体系中,IP 地址是一个最基本的概念,一定要搞明白;有关 IP 最重要的文档就是互联网的正式标准 RFC 791

    1. IP 地址及其表示方法

    (1). 整个的互联网就是一个单一的 、抽象的网络

    (2). IP 地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的 32 位的标识符

    (3). IP 地址的结构使我们可以在互联网上很方便的进行寻址

    (4). IP 地址现在由 "互联网名字和数字分配机构 ICANN(Internet Corporation for Assigned Names and Numbers)" 进行分配

    IP 地址的编址方法共经历了三个历史阶段:

    (a). 分类的 IP 地址:这是最基本的编址方法

    (b). 子网的划分:这是对最基本的编址方法的改进

    (c). 构成超网:这是比较新的五分类编址方法

    本节只讨论最基本的分类的 IP 地址;后两种方法在 4.3 节中讨论

    (1). 所谓 "分类的 IP 地址" 就是将 IP 地址划分为若干个固定类(A类、B类、C类、D类、E类地址)

    (2). 每一类地址都由两个固定长度的字段组成;

    (3). 第一个字段是 "网络号(net-id)" ,网络号标志主机(或路由器)所连接到的网络;一个网络号在整个互联网范围内必须是唯一的

    (4). 第二个字段是 "主机号(host-id)" ,主机号标志该主机(或路由器)在所在网络中的逻辑地址;一个主机号在所在网络范围内必须是唯一的

    (5). 由此可见,一个 IP 地址在整个互联网范围内是唯一的

    这种两级的 IP 的可以记为:

                                              IP 地址 ::= {<网络号>,<主机号>}                                        (4-1)

    式(4-1)中的符号 "::=" 表示 "定义为" ;图 4-5 给出了各种 IP 地址的网络号字段和主机号字段,这里 A 类 、B 类和 C 类地址都是 "单播地址"(一对一通信),是最常用的

    从图 4-5 可以看出:

    (i). A 类 、B 类和 C 类地址的网络号字段(在图中这个字段是灰色的)分别为 1 个 、2 个 、3 个字节长,而在网络号字段的最前面有 1 ~ 3 位的类别为,其数值分别规定为 0 、10 、110

    (ii). A 类 、B 类 、C 类地址的主机号字段分别为 3 个 、2 个 、1 个字节长

    (iii). D 类地址(前 4 位是 1110)用于多播(一对多通信)

    (iv). E 类地址(前 4 位是 1111)保留为以后用

    说明:这里要指出,由于近年来已经广泛使用无分类 IP 地址进行路由选择,A 类 、B 类 、C 类地址的区分已成为历史;不过还是要从分类的 IP 地址讲起

    从 IP 地址的结构来看,IP 地址不仅仅指明一台主机,更指明了主机所连接到的网络

    把 IP 地址划分为 A 类 、B 类 、C 类三个类别,当初是这样考虑的;各种网络的差异很大,有的网络拥有很多主机,有的网络上的主机很少;把 IP 地址划分为 A 类 、B 类 、C 类,能更好地满足不同用户的要求

    当某个单位申请到一个 IP 地址时,实际上是获得了具有同样网络号的一组地址;其中具体的各台主机号则由该单位自行分配,只要满足在该单位管辖范围内无重复的主机号即可

    点分十进制表示:

    对主机或路由器来说,IP 地址都是 32 位的二进制代码;为了提高可读性,常把 32 位的 IP 地址中的每 8 位插入一个空格(但在机器中并没有这样的空格);为了便于书写,可用其等效的十进制数字表示(每 8 个二进制位写为 1 个十进制数),并且在这些数字之间加上一个点,这就叫做 "点分十进制记法" ;图 4-6 是一个 B 类 IP 地址的表示方法;显然,128.11.3.31 比 1000000 00001011 00000011 00011111 书写起来更方便

    2. 常用的三种类别的 IP 地址

A 类地址:

  (1). A 类地址的网络号字段占 1 个字节(8 个二进制位),第 1 位固定为 0 ,以 0 开头的网络号即为 A 类网络,剩余 7 位可用于表示网络号,一共可指派的网络号为 126 个(即 2^7 - 2),全世界一共有 126 个 A 类网络

  (2). 减 2 的原因一:IP 地址中的全为 0 表示 "这个(this)" ,网络号字段为全 0 的 IP 地址是个保留地址,意思是 "本网络"(保留用)

  (3). 减 2 的原因二:网络号为 127(即 01111111)保留作为本地软件环回测试(loopback test)本主机的进程之间的通信用(测试用)

        若主机发送一个目的地址为环回地址(例如 127.0.0.1)的 IP 数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送到任何网络,即目的地址为环回地址的 IP 数据报永远不会出现在任何网络上,因为网络号为 127 的地址根本不是一个网络地址

  (4). A 类地址的主机号占 3 个字节,因此每一个 A 类网络中的最大主机数是 2^24 - 2 个,即 16777214(每个 A 类网络中可容纳的最大主机个数)

  (5). 减 2 的原因一:全 0 的主机号字段表示该 IP 地址是 "本主机" 所连接到的 "单个网络地址"(例如,一主机的 IP 地址为 5.6.7.8 ,则该主机所在的网络地址就是 5.0.0.0 )

  (6). 减 2 的原因二:全  1 表示 "所有的(all)" ,因此,全 1 的主机号字段表示该网络上的所有主机

  (7). IP 地址空间共有 2^32(即 4294967296)个地址,整个 A 类地址空间共有 2^31 个地址,占整个 IP 地址空间的 50%

B 类地址:

  (1). B 类地址的网络号字段有 2 个字节(16 位),16 位中的前 2 位固定为 10 ,即表示 B 类 IP 地址,剩下 14 位用来表示具体网络号

  (2). 因为 B 类 IP 地址的网络号字段的后 14 位,无论怎样取值,10 的存在,再也不可能使整个 16 位的网络号字段变为全 0 或 全 1 ,因此不存在网络总数减 2 的问题

  (3). 但实际上 B 类网络地址 128.0.0.0 时不指派(不被用于表示一个 B 类网络)的,可以指派的 B 类最小网络地址是 128.1.0.0 ,因此 B 类 IP 地址可指派的网络数为 2^14 - 1 ,即 16383(全世界一共有 16383 个 B 类网络)

  (4). 每个 B 类网络中可容纳的最大主机数是 2^16 - 2 ,即 65534 ,这里需要减 2 是因为也要扣除全 0 和全 1 的主机号

  (5). 整个 B 类地址空间一共约有 2^30 个地址,占整个 IP 地址空间的 25%

C 类地址:

  (1). C 类地址有 3 个字节的网络号字段,最前面的 3 位是( 110 ),还有 21 位可以进行网络号的分配

  (2). C 类网络地址 192.0.0.0 也是不指派的,可以指派的 C 类最小网络地址是 192.0.1.0 ,因此 C 类地址可指派的网络总数是 2^21 - 1 ,即 2097151 个

  (3). 每一个 C 类地址的最大主机数是 2^8 - 2 ,即 254

  (4). 整个 C 类地址空间共有 2^29 个地址,占整个 IP 地址的 12.5%

总结一下,IP 地址具有以下一些重要特点:

(1). 每一个 IP 地址都由 "网络号" 和 "主机号" 两部分组成;因此,IP 地址是一种分等级的地址结构

      分两个等级的好处:

      好处一:IP 地址管理机构在分配 IP 地址时,只分配网络号(第一级),剩下的主机号(第二级)则由得到该网络号的单位自行分配;从而方便了 IP 地址的管理

      好处二:路由器仅根据目的主机所连接的网络号进行转发分组(而不考虑目的主机号),这样可以使路由表中的项目数大幅度减少,从而减少了路由表所占的存储空间以及查找路由表的时间

(2). 实际上 IP 地址是标志一台主机(或路由器)和一条链路的接口;

       当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的;这种主机称为 "多归属主机(multihomed host)"

        由于一个路由器至少应当连接到两个网络,因此一个路由器至少应当由两个不同的 IP 地址

(3). 按照互联网的观点,一个网络是指具有相同网络号 net-id 的主机的集合,因此,用转发器或网桥连接起来的若干个局域网仍为一个网络,因为这些局域网都具有同样的网络号

       具有不同网络号的局域网必须使用路由器进行互连

(4). 在 IP 地址空间中,所有分配到网络号的网络(不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网)都是平等的;所谓平等,是指互联网同等对待每一个 IP 地址

  图 4-7 画出了三个局域网

4.2.3 IP 地址与硬件地址

在学习 IP 地址时,很重要的一点就是弄懂主机的 IP 地址与硬件地址的区别

图 4-8 说明了这两种地址的区别:

从层次的角度看:

A. 物理地址是数据链路层和物理层使用的地址

B. IP 地址是网络层和以上各层使用的地址,是一种逻辑地址

(称 IP 地址为逻辑地址,因为 IP 地址是用软件实现的)

在发送数据时,数据从高层下到低层,然后才到通信链路上传输;使用 IP 地址的 IP 数据报一旦交给了数据链路层,就被封装成 MAC 帧了MAC 帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址(源地址 、目的地址)都写在 MAC 帧的首部中

连接在通信链路上的设备(主机或路由器)在收到 MAC 帧时,根据 MAC 帧首部中的硬件地址决定收下或丢弃(该 MAC 帧);只有在剥去 MAC 帧的首部和尾部后把 MAC 层的数据上交给网络层后,网络层才能在 IP 数据报的首部中找到源 IP 地址和目的 IP 地址

总之,IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部;在网络层和网络层以上使用的是 IP 地址,而数据链路层以及物理层使用的是硬件地址;在图 4-8 中,当 IP 数据报放入数据链路层的 MAC 帧中以后,整个的 IP 数据报就成为 MAC 帧的数据,因而在数据链路层看不见数据报的 IP 地址

示例:

图 4-9(a) 展示的是三个局域网用两个路由器 R1 和 R2 互连起来;现在主机 H1 要和主机 H2 通信,这两台主机的 IP 地址分别是 IP1 和 IP2 ,而它们的硬件地址分别为 HA1 和 HA2(Hardware Address);通信的路径是:H1 -> 经过 R1 转发 -> 再经过 R2 转发 -> H2;路由器 R1 因同时连接到两个局域网上,因此它有两个硬件地址,即 HA3 和 HA4;同理,路由器 R2 也有两个硬件地址 HA5 和 HA6

图 4-9(b) 特别强调了 IP 地址与硬件地址的区别,表 4-4 归纳了这种区别

这里需要强调指出以下几点:

(1). 在 IP 层抽象的互联网上只能看到 IP 数据报

      虽然 IP 数据报要经过路由器 R1 和 R2 的两次转发,但在该 IP 数据报的首部中的源地址和目的地址始终分别是 IP1 和 IP2;

      图中的数据报上写的 "从 IP1 到 IP2" 就表示前者是源地址而后者是目的地址

      数据报中间经过的两个路由器的 IP 地址并不出现在转发的 IP 数据报的首部中

(2). 虽然在 IP 数据报首部有源站 IP 地址,但路由器只根据目的站的 IP 地址的网络号进行路由选择

(3). 在局域网的链路层,只能看见 MAC 帧

      IP 数据报被封装在 MAC 帧中

      MAC 帧在不同网络传送时,其 MAC 帧首部中的源地址和目的地址会发生变化;开始在 H1 到 R1 之间传送时,MAC 帧首部中写的是从硬件地址 HA1 发送到硬件地址 HA3,路由器 R1 收到此 MAC 帧后,在数据链路层,要丢弃原来的 MAC 帧的首部和尾部;在转发时,在数据链路层,要重新添加上 MAC 帧的首部和尾部;这时首部中的源地址和目的地址分别成为 HA4 和 HA5;路由器 R2 收到此帧后,再次更换 MAC 帧的首部和尾部,首部中的源地址和目的地址分别变成为 HA6 和 HA2 ;MAC 帧的首部的这种变化,在上面的 IP 层是看不见

(4). 尽管互连在一起的网络的硬件地址体系各部相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节;只要我们在网络层上讨论问题,就能够使用统一的 、抽象的 IP 地址研究主机和主机 、主机和路由器之间的通信

上述的这种 "屏蔽" 概念是一个很有用 、很普遍的基本概念;例如,计算机中广泛使用的图形

4.2.4 地址解析协议 ARP

在实际应用中,我们经常会遇到这样的问题:已经知道了一个机器(主机或路由器)的 IP 地址,需要找出其相应的硬件地址;地址解析协议 ARP 就是用来解决这样的问题的;图 4-10 说明了 ARP 协议的作用。

由于 IP 协议使用了 ARP 协议,因此通常就把 ARP 协议划归网络层;但 ARP 协议的用途是为了从网络层使用的 IP 地址,解析出在数据链路层使用的硬件地址;因此,有些会把 ARP 协议划归在数据链路层,这也 OK

还有一个旧的协议叫做逆地址解析协议 RARP,其作用是使只知道自己硬件地址的主机能够通过 RARP 协议找出其 IP 地址;现在的 DHCP 协议已经包含了 RARP 协议的功能

ARP 协议:

(1). 网络层使用的是 IP 地址,但在实际网络的链路上传送数据帧时,最终还是必须使用该网络的硬件地址

(2). IP 地址和下面的硬件地址之间由于格式不同,所以不存在简单的映射关系(例如,IP 地址有 32 位,而局域网的硬件地址是 48 位)

(3). 此外,在一个网络上可能经常会有新的主机假如进来,或撤走一些主机;更换网络适配器也会使主机的硬件地址改变

(4). 地址解析协议 ARP 解决这个问题(主机的硬件地址会经常改变)的方法是,在主机 ARP 高速缓存中存放一个从 IP 地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)

(5). 每一台主机都设有一个 ARP 高速缓存(ARP cache),里面有本局域网上各主机和路由器的 IP 地址到硬件地址的映射表,这些都是该主机目前知道的一些地址;那么主机怎样知道这些地址呢?

    a. 当主机 A 要向本局域网上的某台主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址;

    b. 如果有,就在 ARP 高速缓存中查出其对应的硬件地址,再把这个硬件地址写入 MAC 帧,然后通过局域网把该 MAC 帧发往此硬件地址

    c. 如果没有(查不到主机 B 的 IP 地址的项目),可能是主机 B 才入网,也可能是主机 A 刚刚上电,其高速缓存还是空的;此时,主机 A 就自动运行 ARP ,然后按以下步骤找出主机 B 的硬件地址:

1). ARP 进程在本局域网上广播发送一个 ARP 

2). 

3). 

4). 

4.2.5 IP 数据报的格式

4.2 6 IP 分层转发分组的流程

4.3 划分子网和构造超网

4.3.1 划分子网

1. 从两级 IP 地址到三级 IP 地址

    早期的 IP 地址的设计确实不够合理;

    (1). IP 地址空间的利用率有时很低

        每一个 A 类地址网络可连接的主机数超过 1000 万,而每一个 B 类地址网络可连接的主机数也超过 6 万;有的单位申请到了一个 B 类地址网络,但所连接的主机数并不多,可是又不愿意申请一个足够使用的 C 类地址,理由是考虑到今后可能的发展;

        IP 地址的浪费,使得 IP 地址空间的资源过早地被用完

    (2). 给每一个物理网络分配一个网络号会使路由表变得太大,从而使网络性能变坏

        每一个路由器都应当能够从(自身的)路由表查出应该怎样到达其他网络的下一跳路由器;因此,互联网中的网络数越多,路由器的路由表的项目数也就越多;

        这样的话,即使我们拥有足够多的 IP 地址资源可以给每一个物理网络分配一个网络号,也会导致路由器的路由表中的项目数过多;

        这样不仅增加了路由器的成本(需要更多的存储空间),而是使得查找路由时耗费更多的时间;

        同时也使路由器之间定期交换的路由信息剧增,最终导致路由器和整个互联网的性能都下降了

    (3). 两级 IP 地址不够灵活

        有时情况紧急,

    为了解决上述问题,在 IP 地址中又增加了一个字段 "子网号字段" ,使两级 IP 地址变成了三级 IP 地址,而三级 IP 地址能较好地解决上述问题,并且使用起来也很灵活;

    这种把两级 IP 地址变成三级 IP 地址的做法,叫做 "划分子网(subnetting)" ,或 "子网寻址" 或 "子网路由选择" ;划分子网已成为互联网的正式标准协议

划分子网的基本思路如下:

(1). 一个拥有许多物理网络的单位

(2). 

(3). 

2. 子网掩码

    现在剩下的问题

4.3.2 使用子网时分组的转发

4.3.3 无分类编址 CIDR(构造超网)

4.4 网际控制报文协议 ICMP

1. ICMP 协议的愿景:为了更有效地转发 IP 数据报和提高交付成功的概率,在网际层使用 "网际控制报文协议 ICMP (Internet Control Message Protocol)"

2. ICMP 协议的作用:允许主机或路由器,报告差错情况 、提供有关异常情况的报告

3. ICMP 是互联网的标准协议,却不是高层(OSI 七层中的高层)协议,而是 IP 层的协议

    ICMP 报文作为 IP 层数据报的数据,加上数据报的首部,组成 IP 数据报发送出去

4.4.1 ICMP 报文的种类

1. ICMP 报文有两类:ICMP 差错报告报文 、ICMP 询问报文

2. ICMP 报文解析:

(1). ICMP 报文的前 4 个字节是统一的格式,共有三个字段:类型(第一个字节)、代码(第二个字节)、检验和(第三 、四个字节)

(2). 接下来的 4 个字节的内容,与 ICMP 的类型(作用)有关

(3). 最后是数据字段,其长度取决于 ICMP 的类型

表 4-8 几种常用的 ICMP 报文类型

ICMP 报文种类类型的值ICMP 报文的类型
差错报告报文3终点不可达
11时间超过
12参数问题
5改变路由(Redirect)
询问报文8 或 0回送(Echo)请求或回答
13 或 14时间戳(Timestamp)请求或回答

(4).  ICMP 标准在不断更新;已不再使用的 ICMP 报文有:"信息请求与回答报文" 、"地址掩码请求与回答报文" 、"路由器请求与回答报文" 以及 "源点抑制报文" ;现在不再把这几种报文列入

(5). ICMP 报文的代码字段是为了进一步区分某种类型中的多种不同情况;检验和字段用来检验整个 ICMP 报文

       IP 数据报首部的检验和,并不检验 IP 数据报的内容,因此不能保证经过传输的 ICMP 报文不产生差错

(6). ICMP 差错报告报文的 4 个类型:

a. 终点不可达   

    当路由器或主机不能交付数据报时,就向源点发送 "终点不可达" 报文

b. 时间超过   

    b-1 当路由器收到生存时间为零的数据报时,除了丢弃该数据报外,还要向源点发送 "时间超过" 报文

    b-2 当终点(数据报的最终接收端)在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送 "时间超过" 报文

c. 参数问题

    当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送 "参数问题" 报文

d. 改变路由(重定向)

    路由器把改变路由报文发送给主机,让主机知道下次应将数据报直接发送给另外的路由器(可通过更好的路由)

(7). 改变路由报文简介:

a. 互联网中的主机也要有一个路由表

b. 主机要发送数据报时,首先是查找主机自己的路由表,决定应当从哪一个接口把数据报发送出去

c. 当互联网中主机的数量远大于路由器的数量时,出于效率的考虑,这些主机和连接在网络上的路由器,不会定期交换路由信息

d. 主机刚开始工作时,一般都会在路由表中设置一个默认路由器的 IP 地址;不管数据报要发送到哪个目的地址,都一律先把数据报传送给这个默认路由器,而这个默认路由器知道每一个目的网络的最佳路由(通过和其他路由器交换路由信息)

e. 如果默认路由器发现,主机发往某个目的地址的数据报的最佳路由,应当经过网络上的另一个路由器 R 时,就会向主机发送 "改变路由" 报文

f. 于是此时,该主机就在自己的路由表中增加一个项目:到某个目的地址应经过路由器 R(而不是默认路由器)

(8). 所有的 ICMP 差错报告报文中的数据字段都具有同样的格式;

      把收到的需要进行差错报告的 IP 数据报的首部和数据字段的前 8 个字节提取出来,作为 ICMP 报文的数据字段;再加上相应的 ICMP 差错报告报文的前 8 个字节,就构成了 ICMP 差错报告报文

      提取收到的数据报的数据字段前 8 个字节,是为了得到运输层的端口号(TCP/UDP),以及运输层报文的发送序号(TCP)

      这些信息对源点通知高层协议是有用的;整个 ICMP 报文作为 IP 数据报的数据字段发送给源点

(9). 下面是不应发送 ICMP 差错报告报文的几种情况:

a. 对 ICMP 差错报告报文,不再发送 ICMP 差错报告报文(不会陷入死循环)

b. 对第一个分片的数据报片的所有后续数据报片,都不发送 ICMP 差错报告报文

c. 对具有多播地址的数据报,都不发送 ICMP 差错报告报文

d. 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报,不发送 ICMP 差错报告报文

(10). 常用的 ICMP 询问报文有 2 种:

a. 回送请求和回答    ICMP 回送请求报文是由主机或路由器向一个特定的目的主机发出的询问;收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文;

    这种询问报文用来测试目的站是否可达以及了解其有关状态(ping)

b. 时间戳请求和回答    ICMP 时间戳请求报文是请某台主机或路由器回答当前的日期和时间;在 ICMP 时间戳回答报文中有一个 32 位的字段,其中写入的整数代表从 1900 年 1 月 1 日起到当前时刻一共有多少秒;

    时间戳请求与回答可用于时钟同步和时间测量

4.4.2 ICMP 的应用举例

1. 应用一:ping

    ICMP 的一个重要应用就是分组网间探测 PING(Packet InterNET Groper),用来测试两台主机之间的连通性;PING 使用了 ICMP 回送请求与回送回答报文;PING 是应用层直接使用网络层 ICMP 的一个例子(没有通过运输层的 TCP 或 UDP)

2. 应用二:traceroute

    另一个非常有用的应用是 traceroute( 类 UNIX 操作系统中的名字),作用是跟踪一个分组从源点到终点的路径;在 Windows 中的命令是 tracert

    traceroute 功能介绍:

    traceroute 从源主机向目的主机发送一连串的 IP 数据报,数据报中封装的是无法交付的 UDP 用户数据报;第一个数据报 P(1) 的生存时间 TTL 设置为 1;当 P(1) 到达路径上的第一个路由器 R(1) 时,

4.5 互联网的路由选择协议

4.5.1 有关路由选择协议的几个基本概念

4.5.2 内部网关协议 RIP

4.5.3 内部网关协议 OSPF

4.5.4 外部网关协议 BGP

4.5.5 路由器的构成

4.6 IPV6

4.6.1 IPv6 的基本首部

4.6.2 IPv6 的地址

4.6.3 从 IPv4 向 IPv6 过渡

4.6.4 ICMPv6

4.7 IP 多播

4.7.1 IP 多播的基本概念

4.7.2 在局域网上进行硬件多播

4.7.3 网际组管理协议 IGMP 和多播路由选择协议

4.8 虚拟专用网 VPN 和网络地址转换 NAT

4.8.1 虚拟专用网 VPN

4.8.2 网络地址转换 NAT

4.9 多协议标记交换 MPLS

4.9.1 MPLS 的工作原理

4.9.2 MPLS 首部的位置与格式

  • 16
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值