计算机网络 — 网络层

一、网络层简介

网络层介于传输层和数据链路层之间,其主要作用是实现两个不同网络系统之间的数据透明传送,具体包括路由选择,拥塞控制和网际互连等。网络层负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序

网络层是网络与网络之间通信的最底层,在数据从数据链路层向传输层进行数据传输的通信中,起到构建一个中间通信子网的作用。不同网络有这不同的网络层协议和地址规范,如果一个网络中的用户不能识别其他网络的通信协议和地址规范,那么这两个网络之间就不能进行数据通信,就好比不同国家有着不同的交通法规,属于不同的交警系统管理,不允许他国车辆随便出入一样。不同网络也有不同的设计规范,属于不同的组织来管理,必须通过授权,并由专门的协议来负责网络间的通信。

如果只是同一局域网内的各个计算机之间的通信,单靠物理层和数据链路层就可以建立通信链路完成用户间的数据通信,但要扩大应用范围,连接不同的局域子网,就需要借助网络层处理各个网络子网的协议,从而进行计算机的网络互连,所以网络层在 TCP/IP 协议体系中叫网际互连层。

1、数据链路层与网络层的区别
计算机网络 — 网络层_第1张图片

● 主机 : 配有IP地址, 但不能进行路由控制的设备;
● 路由器 : 既配有IP地址, 又能进行路由控制;
● 节点 : 主机和路由器的统称

2、网络互连起来的使用设备

(1)物理层使用的中间设备叫转发器(repeater)
(2)数据链路层使用的中间设备叫做网桥或者桥接器(bridge)
(3)网络层使用的中间设备叫做路由器(router)
(4)在网络层以上使用的中间设备叫做网关(gateway)。用网关连接两个不兼容的系统需要在高层进行协议转换。
计算机网络 — 网络层_第2张图片

3、网络通信的两种情况——局域网和不同网

通常一个计算机网络就是一个管理边界(一般属于一个特定的公司),有一个特定的管理者负责,所以在进行计算机网络互连时,要同时考虑两方面的问题:一是授权用户可以在不同网络间互访,共享双方的资源;另一方面又要保持各计算机网络管理原来的独立性。

网络通信只有两种情况:如果通信双方在同一个局域网内,可直接通过数据链路层进行相互通信,但因为主机其实也有网络层的路由功能,所以两台主机间进行网络通信时通常也是通过三层来进行的( IP 协议则是 IP 地址寻址);如果通信双方在不同网络内,毫无疑问必须通过三层进行。事实上,网络层的IP包到达链路层后还要重封装成帧,因为不同网络中的统一标识就是三层地址(网络地址),局域网内链路层的则是 MAC 地址。所以不同层传输的数据包格式不一样,因为每层的标识不一样。网络层的IP包封装成帧后,其中封装的源和目的网络地址作为帧的数据部分,不会改变,这在前面的数据链路层中有介绍。

不同用户之间进行通信,首先得知道彼此的地址。
局域网内部的用户访问(物理层和数据链路层就可以构建一个局域网)是通过数据链路层的 MAC 地址进行

不同网络之间进行访问不能通过属于数据链路层地址的 MAC 地址来进行寻址,这需要通过网络层对应的网络地址来进行访问,每个网络都通过其网络地址,即 NSAP(网络服务访问点)来标识,网络中的每个节点都有一个 NSAP。 这个 NSAP 就是由对应网络所运行的网络层通信协议来定义的,在目前最常见的TCP/IP协议网络中,这个协议就是IP协议,对应的NSAP就是IP地址。

在物理层传输的是一个个比特位(bit),在数据链路层中传输的是一个个以许多字节为单位的帧(Frame),在每个帧的帧头都有源节点的 MAC 地址和目的节点的 MAC 地址,局域网内部的寻址就是通过 MAC 地址进行的,而在网络层中传输的是数据报(Packet,也叫分组),一个数据报是一个数据帧经过网络层协议重封装后得到的,每个数据报的报头(IP头)都有源节点和目的节点的IP地址,网络间的寻址就是通过 IP 地址进行的

4、网络层的作用

在网络体系中,每一层都是服务于对应的上下层的。网络层也是服务于上层的传输层和下层的数据链路层。

网络层的功能就是让我们在茫茫人海中,能够找到另一台计算机在哪里,是否属于同一个子网等

其主要作用表现在一下几个方面:

(1)屏蔽网络差异,提供透明传输

网络层就是为了解决不同网络有不同的规范要求的差异问题,寻找一个不同网络间都能共同遵守的网络通信规范,以便不同网络间能相互识别,并接受对方的网络请求。也就是一个中转站的作用,两个毫无交集的网络通过这个中转站来建立交集。

(2)为网络间通信提供路由选择

路由选择是根据一定的原则和路由选择算法在多个结点的通信子网中选择一条到达目的节点的最佳路径的过程。确定路由选择的策略称为路由算法。在无连接的数据包服务中,网络节点要为每个数据包做出路由选择,即选择到达目的节点的最佳路线,而在面向连接的虚电路服务中,存在一条专门的逻辑线路,在建立连接时就已经确定了路有路径,无需额外选择。

(3)拥塞控制

拥塞控制是为了避免网络传输路径中数据的传输延迟或死锁。数据链路层中的流量控制功能,是针对数据链路中点对点传输速率的控制,这里的拥塞控制是针对在网络层传输路径中的端到端传输效率的控制。主要采用预约缓冲区、许可证和分组丢弃等方式。

5、网络层提供的两种服务

(1)虚电路服务

虚电路表示这只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,而不是真正建立了一条物理连接。
虚电路是建立一条逻辑连接,发送方与接收方不需要预先建立连接。
虚电路服务,它不依靠路由技术而是在进行数据分组转发前先在源节点和目的节点间的所有路由器间建立一条虚拟的通信通道,然后再把数据分组从这个虚拟通道中转发到目的节点。
采用虚电路这种服务方式的分组则无须添加源和目的主机地址信息,只需要添加报文号、分组号信息和虚电路编号。在分组发送之前,已经搭建好了一条逻辑链路。
计算机网络 — 网络层_第3张图片

(2)数据报服务(现代网络层协议主要使用)

● 当端系统要发送数据时,会为每个分组添加报文号、分组号、目的地址、源地址和校验字段信息,然后作为数据报发送给网络节点(路由器),由通信子网中的节点进行路由选择,当一个报文的所有分组到达了目的主机后,再将各个分组按序号编排起来;
● 网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)
网络层不提供服务质量的承诺。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。
● 目的端系统收到数据报可能是不按照顺序到达,也有可能出现数据报丢失。网络层于此只需尽最大努力持续交付即可。数据报服务与OSI的无连接网络服务类似。
计算机网络 — 网络层_第4张图片
H1 发送给 H2 的分组可能沿着不同路径传送;
网络层负责在不同的网络之间(基于数据包的IP地址)尽力转发数据包,不负责丢包重传和接收顺序(这是由传输层负责的);计算机网络 — 网络层_第5张图片
尽最大努力交付的好处:
● 由于传输网络层不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
● 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的传输层负责(包括差错处理、流量控制等)。
● 采用这种设计思路的好处是:网络的造价大大降低,运行方式灵活,能够适应多种应用。

两者对比:
计算机网络 — 网络层_第6张图片
6、数据包的路由过程
计算机网络 — 网络层_第7张图片
(1)发送端(封装数据)

① 应用层准备要传输的数据;
② 传输层把文件进行分段并编号;(数据段)
③ 网络层把传输层的每一个数据包增加原IP地址和目标IP地址;(数据包)
④ 数据链路层把每个数据加上MAC地址;(数据帧)
● 使用自己的子网掩码,判断自己和目标地址分别在哪个网段,若在同一个网段(不通过路由器),通过ARP协议广播的方式得到目标IP地址的MAC地址,然后就能封装出一个数据帧进行组播协议发送;
● 如果子网掩码不是一个网段,通过ARP协议广播的方式得到路由器(网关)的MAC地址,然后把数据通过交换机发送到路由器M2(图中路由器),因为M2和M3是点对点通信,没有别的主机,所以它们之间的MAC地址就是FF
⑤物理层把数据帧变成数字信号(bit流),交给物理层传输

(2)接收端(解封):

① 交换机Switch1(图中的交换机)接收bit流,能对数据进行存储转发。它根据数据帧的MAC地址,确定数据是从哪来的(是上一跳不是发送端),要去哪
② 路由器M2获取交换机的数据包,识别其中的IP地址,根据路由表选择出口,它无法识别数据段内容
③ 路由器M2到M3是点对点通信,遵守PPP协议
④ PC3收到bit流后,数据链路层发现MAC地址是自己的,去掉MAC地址给它的网络层,网络层去掉IP地址给传输层,传输层把数据给应用层,应用层把各个数据拼接起来

二、网际协议 IP

网际协议IP是TCP/IP体系中两个最主要的协议之一。
与IP协议配套使用的还有三个协议:地址解析协议 ARP、网际控制报文协议 ICMP 和网际组管理协议 IGMP。

网际层的IP协议及配套协议:
计算机网络 — 网络层_第8张图片

1、IP 协议的基本功能

IP 协议是一个无连接的服务,负责在源地址和目的地址之间传送数据报,其主要功能就是把数据报在互连的网络上传送,将数据报在一个个模块间通过路由处理网络地址传送到目的地址。

(1)寻址
在不同网络中必须通过三层地址进行寻址。常用的IP网络中运行的三层协议就是 IP 协议,对应的三层地址就是 IP 地址。
(2) 数据报的封装
从传输层过来的数据段需要经过IP协议的重封装,而从数据链路层过来的数据帧就需要进行解封装。在IP网络中封装后形成的是IP数据报,IP封装的目的就是标识此IP数据报发送节点和接受节点的IP地址和控制信息。
(3)分段与重组
不同网络上的链路可以传输的最大报文大小是不同的,这就是我们通常说的MTU(最大传输单元)。尺寸较大的数据报在MTU值较小的网络链路传输需要将数据报分段依次传输,对应的接收方就需要把这些接收到的拆分的分段组合起来,还原成原来的数据报。

(1)数据报格式
计算机网络 — 网络层_第9张图片

● 版本:指定IP数据报中使用的IP协议版本,占4位。IPv4对应值为4(0100)
● 首部长度:指示IP数据报头部的总长度,占4位。IP数据报头部的总长度以4字节为单位(即4字节的整数倍)
● 区分服务:用于表示数据报的优先级和服务类型,占8位。包括一个3位长度的优先级,4位长度的标志位,最高位未用
● 总长度:标识整个IP数据报的总长度,包括报头和数据部分,占16位,由此可知IPv4的最大长度为65535(64KB)
● 标识:用于表示IP数据报的标识符,占16位,每个IP数据报有一个唯一的标识(不是序号)。当数据报分段时,这个标识的值就被复制到所有分段的标识字段中,相同的标识字段值使分段后的数据报分段最后能正确地重组成为原来的数据报。
● 标志:指出该IP数据报后面是否还有分段,为分段标志,占3位,仅最低位有意义
● 片偏移:指出该分段在数据报中的相对位置。相对于用户数据字段的起点,该字段从何处开始,占13位
生存时间:标识IP数据报在网络中传输的有效期,以秒来计数,占8位。现在通常认为这个数值是指数据报允许经过的路由器数,当值为0时,就丢弃这个数据报。设定生存时间是为了防止数据报在网络中无限制地循环转发。
协议:用来标识此IP数据报在传输层所采用的协议类型(如TCP、UDP或ICMP等),以便使目的主机的IP层知道应将数据部分上交给哪个处理过程,占8位
首部校验和:用来检验IP数据报的包头部分(不含“数据”部分)在传输到接收端后是否发生了变化,占16位。因为数据报每经过一个路由器,路由器都要重新计算一下报头校验和
源地址/目的地址:分别表示该IP数据报发送者和接收者的IP地址,各站32位
可变部分:用来支持各种选项,提供扩展余地,可用来支持排错、测量以及安全等措施。后面的填充字段就是为了保证IP数据报的报头是32位的整数倍。

(2)IPv4数据报的封装与解封转

发送端网络层生成的IP数据报还要继续向下传输,到达数据链路层就要封装成数据帧了。IP数据报的“帧封装”只需把来自网络层的整个 IP 数据报(报头和数据部分)当做数据链路层帧的数据部分,然后在前面加上与数据链路层对应的协议头即可
在以太局域网中,由于数据链路层分成了LLC子层和MAC子层这两层,所以来自网络层的IP数据报在到达数据链路层后先要经过LLC子层和MAC子层的协议头封装,最终形成数据链路层的以太网MAC帧。
计算机网络 — 网络层_第10张图片
IP 数据报无论经过了多少个网络,整个数据报内容都不会变,包括报头部分的源和目的地址信息。变化的只是在不同网络数据链路上传输的帧头信息

2、IP 地址

(1)分类的 IP 地址

每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号,host-id,它标志该主机(或路由器)
● 网络号:保证相互连接的两个网段具有不同的标识, 简单来说就是标识网络 (网段:一段范围内的IP, 具体是网络号相同的所有IP)
● 主机号:同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号, 简单来说就是标识同一网段下的不同主机.
● 子网:IP 地址是以网络号和主机号来表示网络上的主机的, 只有在一个网络号下的计算机之间才能“直接”互通, 不同网络号的计算机要通过网关(Gateway)才能互通. 但这样的划分在大多数情况下显得并不十分灵活. 为此IP网络还允许划分成更小的网络, 称为子网(Subnet).

通过合理的设置网络号和主机号,就可以保证在相互连接的网络中,每台主机的IP地址都不同。那么如何自动管理子网内的IP:

DHCP 动态主机配置协议 :首先,这是一个应用层协议,可以自动给子网内新增的主机节点分配IP地址. 。一般的路由器都带有DHCP功能, 因此路由器也可以看做是一个DHCP服务器。

● IP 地址分为三类:A类、B类和C类
计算机网络 — 网络层_第11张图片
● IP 地址的使用范围计算机网络 — 网络层_第12张图片
● 特殊的几个地址

① IP地址中的主机号全为0,就成了网络号,代表这个局域网
② 将IP地址中的主机号的二进制全部设为1,就成为了广播地址,用于给同一个链路中相互连接的所有主机发送数据包(此时目的地址当然就被设为了广播地址)
③ 127.0.0.1. 它代表设备的本地虚拟接口, 所以默认被看作是永远不会宕掉的接口。所以通常在安装物理网卡前就可以ping通这个本地回环地址。 一般都会用来检查本地网络协议、基本数据接口等是否正常的。
④ 0.0.0.0 标识本机上的所有网卡。用与TCP服务端程序的绑定地址,相当于监听本机的所有网卡。
计算机网络 — 网络层_第13张图片

(2) IP 地址的特点

IP 地址是一种分等级的地址结构。分两个等级的好处是:

IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。
路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间

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

当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多接口主机(multihomed host)。
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址

用转发器或网桥连接起来的若干个局域网仍为一个网络

因此这些局域网都具有同样的网络号 net-id。

④ 所有网络都是平等的。

所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。

路由器总是具有两个或两个以上的 IP 地址

路由器的每一个接口都有一个不同网络号的 IP 地址

⑥ 两个路由器直接相连的接口处,可指明也可不指明 IP 地址。

如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。现在常不指明 IP 地址。

3、私有IP地址和公网IP地址

私有IP地址 :在局域网中使用的IP;
公网IP地址 :在互联网中使用的地址。

如果一个组织内部组建局域网,IP 地址只用于局域网内的通信,而不直接连到互联网上, 理论上使用任意的 IP 地址都可以,但是 RFC 1918 规定了用于组建局域网的私有IP地址 :

● 10. * :前8位是网络号,共16777216个地址, 用于组建大型局域网;
● 172.16. * 到 172.31. * :前12位是网络号,共1048576个地址, 用于组建中型局域网;
● 192.168.*:前16位是网络号,共65536个地址, 用于组建小型局域网;
包含以上范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP)

特点如下:

● 一个路由器可以配置一个 WAN 口 IP, 一个或多个 LAN 口 IP(私有IP)。
路由器 LAN 口连接的主机,都属于当前这个路由器的子网中
● 不同的路由器,子网 IP 其实都是一样的(通常都是192.168.1.1),子网内的主机 IP 地址不能重复,但是子网之间的 IP 地址就可以重复了。
● 每一个家用路由器,其实又作为运营商路由器的子网中的一个节点。这样的运营商路由器可能会有多级,最外层的运营商路由器,WAN 口 IP 就是一个公网 IP (如下图所示)。
子网内的主机需要和外网进行通信时, 路由器将 IP 首部中的 IP 地址进行替换(替换成 WAN 口 IP),这样逐级替换,最终数据包中的 IP 地址成为一个公网 IP,这种技术称为 NAT(Network Address Translation,网络地址转换)。
如果希望我们自己实现的服务器程序, 能够在公网上被访问到, 就需要把程序部署在一台具有外网 IP 的服务器上。可以购买云服务器(比如阿里云、腾讯云、华为云等)。
计算机网络 — 网络层_第14张图片

4、IP 地址与硬件地址

(1)IP 地址与硬件地址的区别
计算机网络 — 网络层_第15张图片
① IP 地址

● IP 地址是一种逻辑地址
● IP 地址称为逻辑地址,是因为IP地址是用软件实现的。
● IP 地址是网络层及其以上各层(包括运输层、应用层等)使用的地址
● IP 地址放在 IP 数据报的首部

② 硬件地址

● 硬件地址是一种物理地址
● 硬件地址称为物理地址,是因为硬件地址是用硬件实现的。
● 硬件地址是数据链里层和物理层使用的地址
● 硬件地址放在 MAC 帧的首部

(2)数据发送中的 IP 地址与硬件地址

① 发送数据

● 在发送数据时,数据从高层下到低层,然后才到通信链路上传输。
使用 IP 地址的 IP 数据报一旦交给了数据链路层,就被封装成 MAC 帧了
MAC 帧在传送时使用的源地址和目的地址都是硬件地址,这两个硬件地址都写在 MAC 帧的首部
● 当 IP 数据报放入到数据链路层的 MAC 帧中以后,整个 IP 数据报就成了 MAC 帧的数据部分,因而在数据链路层看不见 IP 数据报的 IP 地址

② 接收数据

● 在接收数据时,数据从低层上到高层。
连接在通信链路上的设备(主机或路由器)在接收 MAC 帧时,其根据是 MAC 帧首部的硬件地址
● 在数据链路层看不见隐藏在 MAC 帧的数据中的 IP 地址。
只有在剥去 MAC 帧的首部和尾部后,把 MAC 帧的数据部分上交给网络层后,网络层才能在 IP 数据报的首部中找到源 IP 地址和目的 IP 地址

例子讲解

三个局域网用两个路由器 R1 和 R2 互连起来,现在主机 H1 要和主机 H2 通信。
主机 H1 的IP地址是 IP1,硬件地址是 HA1;主机 H2 的 IP 地址是 IP2,硬件地址是 HA2。路由器 R1 由于同时连接到两个局域网上,因此它有两个硬件地址 HA3 和 HA4。路由器 R2 由于同时连接到两个局域网上,因此它有两个硬件地址 HA5 和 HA6。
计算机网络 — 网络层_第16张图片
通信的路径是:H1 —> 经过 R1 转发 —> 再经过 R2 转发 —> H2
计算机网络 — 网络层_第17张图片

(3)注意点

● 在 IP 层抽象的互联网上只能看到 IP 数据报。
虽然在 IP 数据报首部有源 IP 地址,但路由器只根据目的站 IP 地址的网络号进行路由选择
● 在局域网的链路层,只能看见 MAC 帧,IP 数据报被封装在 MAC 帧中。MAC 帧在不同网络上传送时,其 MAC 帧首部中的源地址和目的地址在发生变化
● 尽管互连在一起的网络的硬件地址体系各不相同,但 IP 层抽象的互联网却屏蔽了下层这些很复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的 IP 地址研究主机和主机或路由器之间的通信。“屏蔽”是一个很有用,很普遍的基本概念。

三、路由转发分组

分组转发是指在互联网络中路由器转发IP分组的物理传输过程与数据报转发机制。根据分组的目的IP地址与源IP地址是否属于同一个子网可分为直接转发和间接转发。

先简单介绍一下路由器,从下图中可以看出,路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。在实际上的路由器中,像下图中所示的“直接”和“其他”的几个字符并没有出现在路由表中,而是被记为0.0.0.0 。

可以把整个的网络拓扑简化为下图(b)所示的那样。在简化图中,网络变成了一条链路,但每一个路由器旁边都注明其IP地址。使用这样的简化图,可以使我们不必关心某个网络内部的具体拓扑以及连接在该网络上有多少台主机,因为这些对于研究分组转发问题并没有什么关系。这样的简化图强调了在互联网上转发分组时,是从一个路由器转发到下一个路由器。在路由表中,对每一条路由最主要的是以下两个信息:(目的网络地址,下一跳地址)

假设:有四个 A 类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机。
可以想象,若按目的主机号来制作路由表,每一个路由表就有 4 万个项目,即 4 万行(每一行对应于一台主机),则所得出的路由表就会过于庞大。
但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含 4 个项目(每一行对应于一个网络),这样就可使路由表大大简化
计算机网络 — 网络层_第18张图片
根据目的网络地址就能确定下一跳路由器,这样做的结果是:

● IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)
只有到达最后一个路由器时,才试图向目的主机进行直接交付

1、路由器与路由表

(1)路由器

路由器的一个作用就是为经过路由的每个数据包寻找一条最佳传输路径,并将该数据有效地传送到目的站点。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节省网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益。由此可见选择最佳路径的策略即路由算法是路由器的关键所在。为完成这项工作,路由器中保存着各种传输路径的相关数据—路由表(Routing Table),供路由选择时使用。通常情况下,路由器根据接收到的IP数据包的目的网段地址查找路由表决定转发路径。路由表中需要保存子网的标志信息、网上路由器的个数和要到达此目的网段需要将IP数据包转发至哪一个下一跳相邻设备地址等内容,以供路由器查询使用。
路由表被存放在路由器的RAM上,这意味着路由器如果要维护的路由信息较多时,必须要有足够的RAM,而且一旦路由器重新启动,那么原来的路由信息都会消失
路由表可以是由系统管理员固定设置好的(静态路由表),也可以是根据网络系统的运行情况而自动调整的路由表(动态路由表),它是根据路由选择协议提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。
路由器的另外一个作用是连通不同网络。一般来说,异种网络互联与多个子网互联都应采用路由器来完成

路由器工作:

IP 数据报的首部中没有地方可以用来指明“下一跳路由器的 IP 地址”

当路由器收到待转发的数据报,不是将下一跳路由器的 IP 地址填入 IP 数据报,而是送交下层的网络接口软件

网络接口软件使用 ARP 负责将下一跳路由器的 IP 地址转换成硬件地址,并将此硬件地址放在链路层的 MAC 帧的首部,然后根据这个硬件地址找到下一跳路由器

(2)路由表

路由表包含了路由器进行路由选择时所需要的关键信息,这些信息构成了路由表的总体结构。下面将讲述路由表的结构成分.:

(1) 目的网络地址(Dest):用于标识IP包要到达的目的逻辑网络或子网地址.

(2) 掩码(Mask):与目的地址一起来标识目的主机或路由器所在的网段的地址。将目的地址和网络掩码”逻辑与”后可得到目的主机或路由器所在网段的地址。掩码由若干个连续”1”构成,既可以用点分十进制表示,也可以用掩码中连续”1”的个数来表示。

(3) 下一跳地址(Gw):与承载路由表的路由器相邻的路由器的端口地址,有时也把路由器的下一跳地址称为路由器的网关地址。

(4) 发送的物理端口(interface):学习到该路由跳目的接口,也是数据包离开路由器去往目的地将经过的接口。接口定义了针对特定的网络目的地址,本地计算机用于发送数据包的网络接口。

(5) 路由信息的来源(Owner):表示该路由信息是如何学习到的。路由表可以由管理员手工建立(静态路由表),也可以由路由选择协议(OSPF)自动建立并维护。路由表不同的建立方式也决定了其中路由信息的不同学习方式。

OSPF:OSPF是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。OSPF路由协议是一种典型的链路状态(Link-state)的路由协议,一般用于同一个路由域内。在这里,路由域是指一个自治系统(Autonomous System),即AS,它是指一组通过统一的路由政策或路由协议互相交换路由信息的网络。

(6) 路由优先级(pri):决定了来自不同路由来源的路由信息的优先权。

(7) 度量值(metric):度量值用于表示每条可能路由的代价,度量值最小的路由就是最佳路由。
在这里插入图片描述
上图即为一条路由信息,其中:172.16.8.0为目的逻辑网络地址或子网地址,255.255.255.0为目的逻辑网络或子网的网络掩码;1.1.1.1为下一跳逻辑地址;fei_0/1.1为学习到这条路由的接口和将要进行数据转发的接口;static为路由器学习到这条路由的方式,本例中本条路由信息是通过手工配置的方式学习到的;1为此路由管理距离;0为此路由的度量值。

(3)特定主机路由

虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。
采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。

(4)默认路由 (default route)

使用默认路由可以减少路由表所占空间和搜索路由表所用的时间,。这种转发方式在一个网络只有很少的对外连接式时很有用处。
计算机网络 — 网络层_第19张图片
只要目的网络是其他网络(不是本网络),就一律选择默认路由,把数据报先间接交付路由器 R1,让 R1 再转发给下一个路由器。

2、路由选择

(1)过程

① 当 IP数据包到达路由器,,路由器会先查看目的地址 ;
② 通过判断目的IP,判定目的主机的所在网络是否与自己相连 ;
③ 若相连, 则直接发送给目标主机;
④ 若不相连,则发送给下一个路由器(这个过程中源IP地址会被替换为路由器的WAN口地址);
⑤ 重复这个过程, 一直到达目的IP(或者TTL为0时被丢弃);

(2)路由表维护

具体如何判定当前这个数据报该发送到哪儿, 这就依靠每个节点(包括主机和路由器)内部都维护着一张路由表。

●  路由表可以使用route命令查看
●  如果目的IP命中了路由表,则直接转发即可
● 逐行判断,当判断到最后一行(之前所有行都不匹配),就按缺省路由条目规定的接口(default getway, 默认网关)发送到下一跳地址.(最后一行主要由下一跳地址和发送接口两部分组成)

3、分组转发算法

(1) 从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N;
(2)若网络N与此路由器直接相连,则把数据报直接交付目的主机D;否则是间接交付,执行(3);
(3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4);
(4)若路由表中有到达网络N的路由,则把数据报传送给路由表指明的下一跳路由器;否则执行(5);
(5)若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则执行(6);
(6)报告转发分组出错。

注意:

●  路由表没有给分组指明到某个网络的完整路径

●   路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)

●   在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器

●   这样一步一步地查找下去,直到最后到达目的网络。

四、划分子网和构造超网

1、划分子网

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

在 ARPANET 的早期,IP 地址的设计不够合理:

● IP 地址空间的利用率有时很低。
● 给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
● 两级的 IP 地址不够灵活。

早期 IP 地址的设计不合理产生了很多问题,为了解决这些问题 IP 地址中又增加了一个"子网号字段",使两级的IP地址变成了三级的IP地址。

(1)划分子网的基本思路:

一个拥有许多物理网络的单位,可将所属的物理网络划分为若干个子网。

① 划分子网纯属一个单位内部的事情,对外部网络透明,单位对外仍然表现为没有划分子网的网络
计算机网络 — 网络层_第20张图片
从主机号借用若干个位作为子网号 subnet-id,而主机号 host-id 也就相应减少了若干个位。于是两级 IP 地址变成了三级 IP 地址:网络号、子网号和主机号。
计算机网络 — 网络层_第21张图片
在这里插入图片描述
③ 凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网
④ 最后就将 IP 数据报直接交付目的主机。

(2)划分子网后变成三级结构的优点

● 减少了 IP 地址的浪费
● 使网络的组织更加灵活
● 更便于维护和管理

2、子网掩码

(1)子网掩码

● 子网掩码是一个应用于 TCP/IP 网络的32位二进制值,每节 8 位,必须结合IP地址对应使用。 (常见的 255.255.255.0 等)
子网掩码 32 位都与 IP 地址 32 位对应,如果某位是网络地址(网络号部分和子网号部分)则对应的位全为“1”,如果是主机号部分则对应的位全为“0”。(11111111.11111111.11111111.0)
● 子网掩码(subnet masking)的功能是告知主机或路由设备,地址的哪一部分是网络号,包括子网的网络号部分,哪一部分是主机号部分。
● 子网掩码可以分离出 IP 地址中的网络地址和主机地址,用于判断该 IP 地址是在局域网上,还是在广域网上。
子网掩码一般用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而 IP 浪费

(2)子网掩码使用原因

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分,因为 IP 地址本身及数据报的首部没有包含任何关于有关子网划分的信息。使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分

(3)子网掩码是一个重要属性

● 子网掩码是一个网络或一个子网的重要属性。
路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器
路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
● 若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码。

(4)子网掩码的作用

子网掩码可以分离出 IP 地址中的网络地址和主机地址。当两台计算机要通讯,首先要判断是否处于同一个广播域(局域网)内,即网络地址(网络号)是否相同。如果网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地

(5)默认子网掩码
计算机网络 — 网络层_第22张图片

(6)子网掩码的使用

● 网络号:IP地址和子网掩码进行与运算得到网络号
● 子网号:子网掩码 32 位都与 IP 地址 32 位对应,如果某位是网络地址(网络号部分和子网号部分)则对应的位全为“1”,如果是主机号部分则对应的位全为“0”。将子网掩码中“1”的位数减去该类的默认子网掩码的“1”的位数即为子网号位数。
● 主机号:子网掩码取反再和 IP 地址做与运算得到主机号

(6)子网掩码的使用例子

给定IP地址和子网掩码 172.31.128.255 / 18 (18 是网络地址(网络号和子网号的位数)的长度),则:

这个 IP 地址是 B 类地址,默认的子网掩码是255.255.0.0,所以该地址的网络号是16位。但是子网掩码中前 18 位为 1,也就是网络地址(网络号、子网号)有 18 位,则子网号有 14 位 。
● 网络号
公式:将 IP 地址的二进制和子网掩码的二进制进行“&”(and)运算,得到的结果就是网络号。“&运算”的规则是1&1=1,0&1=0,1&0=0,0&0=0。

ip:         10101100.00011111.10000000.11111111     
子网掩码:  11111111.11111111.11000000.00000000 
----------------------------------------------------   
网络号:     10101100.00011111.10000000.00000000   &   
网络号点分法表示: 172.31.128.0 

● 主机号

公式:用IP地址的二进制和(子网掩码的二进制的反码)进行“&”运算,得到的结果就是主机号。反码就是将原本是0的变为1,原本是1的变为0。

ip:           10101100.00011111.10000000.11111111  

子网掩码取反: 00000000.00000000.00111111.11111111
----------------------------------------------------
主机号:       00000000.00000000.00000000.11111111   & 
主机号点分法表示: 0.0.0.255 

● 广播地址

公式:在得到网络号的基础上,将网络号右边的表示IP地址的主机部分的二进制位全部填上1,再将得到的二进制数转换为十进制数就可以得到广播地址。因为本题中子网掩码 11111111.11111111.11000000.00000000,
0 有14个,主机位是 14,我们将网络号 172.31.128.0,转换为二进制是 >10101100.00011111.10000000.00000000,从右边数起,将 14 个 0 全部替换为 1, 即 >10101100.00011111.10111111.11111111,这就是这个子网的广播地址的二进制表示法。将这个二进制广>播地址转换为十进制就是 172.31.191.255。

网络号:     10101100.00011111.10000000.00000000

子网掩码:  11111111.11111111.11000000.00000000
----------------------------------------------------
广播地址:   10101100.00011111.10111111.11111111   网络号从右向左0填为1,个数为掩码中的0
广播地址点分法表示: 172.31.191.255

● 可用IP地址范围

因为网络号是172.31.128.0,广播地址是172.31.191.255,所以子网中可用的IP地址范围就是从网络号+1 ~广播地址-1,所以子网中的可用IP地址范围就是从172.31.128.1-172.31.191.254。

(7)子网掩码如何确定

例: 学校新建 5 个机房,每个房间有 30 台机器,如果给定一个 C 类网络地址:192.168.1.0,问如何将其划分为5个子网,子网掩码该如何设置?

子网划分建议按以下步骤和实例计算子网掩码:

● 将要划分的子网数目转换为2的m次方。如要分8个子网,8=2^3。
● 取上述要划分子网数的幂m。如2^3,即 m = 3。
● 将上一步确定的幂m按高序占用主机地址m位后转换为十进制。
● 如m为3 则是 11100000,转换为十进制为224,即为最终确定的子网掩码。
● 如果是C类网,则子网掩码为255.255.255.224;如果是B类网,则子网掩码为255.255.224.0;如果是A类网,则子网掩码为255.224.0.0。

2^3=8(大于5的最小的2的整幂次数),则子网号有 3 位,就向主机号中借走三位作为网络号,而剩下的5位主机号,每个网段内可容纳的主机数是 2^5 即 32,可用主机需要再减 2 即为 30,满足每个房间30台机器的题目要求。取2^3的幂,即3,即占用了主机号中的高 3 位即为 11100000,转换为十进制为 224,所以该地址为 C 类地址的子网掩码应该设置为 255.255.255.224。各机房IP和子网掩码配置如下(已经去掉广播地址和主机地址):

机房号        子网掩码                 IP地址范围

机房1     255.255.255.224     192.168.1.1~192.168.1.30

机房2     255.255.255.224     192.168.1.33~192.168.1.62

机房3     255.255.255.224     192.168.1.65~192.168.1.94

机房4     255.255.255.224     192.168.1.97~192.168.1.126

机房5     255.255.255.224     192.168.1.129~192.168.1.158

五、ARP 与 RARP

ARP 请求是广播方式,应答是单播方式

1、广播

假如计算机 A 知道了计算机 B 的 MAC 地址,然后计算机 A 想要给计算机 B 传送数据,虽然计算机 A 知道了计算机 B 的 MAC 地址,可是它要怎么给它传送数据呢?计算机 A 不仅连着计算机 B,而且计算机 A 也还连着其他的计算机。虽然计算机 A 知道计算机 B 的 MAC 地址,可是计算机 A 却不知道知道计算机 B 是分布在哪边路线上,为了解决这个问题,于是,有了广播的出现。

在同一个子网中,计算机 A 要向计算机 B 发送一个数据包,这个数据包会包含接收者的 MAC 地址。当发送时,计算机 A 是通过广播的方式发送的,这时同一个子网中其他的计算机 C、D 也会收到这个数据包的,然后收到这个数据包的计算机,会把数据包的 MAC 地址取出来,与自身的 MAC 地址对比,如果两者相同,则接受这个数据包,否则就丢弃这个数据包,这种发送方式我们称之为广播。就像我们平时在广场上通过广播的形式呼叫某个人一样,如果这个名字是你,你就理会一下,如果不是你,你就当作听不见。

2、地址解析协议 ARP

那么问题来了,计算机 A 是如何知道计算机 B 的 MAC 地址的呢?这个时候就得由 ARP 协议这个家伙来解决了,ARP 协议能够解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题,通过它我们可以知道子网中其他计算机的 MAC 地址。

(1)ARP 协议的作用

由于传送 ARP 分组使用的是 IP 协议,因此应当把 ARP 协议划归为网络层。
ARP 协议是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题ARP 协议能够将网络层使用的 IP 地址解析出在数据链路层使用的硬件地址

(2)ARP 协议的要点

● 不管网络层使用的是什么协议,在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址,每一个主机都设有一个 ARP 高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表
当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址
● ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做
● 从 IP 地址到硬件地址的解析是自动进行的,这种地址解析过程对主机的用户是透明的;
● 只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址;

(3)使用 ARP 的四种典型情况

● 发送方是主机,要把 IP 数据报发送到本网络上(局域网)的另一个主机。这时用 ARP 找到目的主机的硬件地址。
● 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
● 发送方是路由器,要把 IP 数据报转发到本网络上(局域网)的一个主机。这时用 ARP 找到目的主机的硬件地址。
● 发送方是路由器,要把 IP数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。

(4)ARP 协议工作流程

① 首先,每台主机都会在自己的 ARP 缓冲区( ARP Cache )中建立一个 ARP 列表,以表示 IP 地址和 MAC 地址的对应关系。
② 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP 列表中是否存在该 IP 地址对应的 MAC 地址,如果有﹐就直接将数据包发送到这个 MAC 地址;如果没有,就向本局域网发起一个 ARP 请求的广播包,查询此目的主机对应的 MAC 地址。此 ARP 请求数据包里包括源主机的 IP 地址、硬件地址、以及目的主机的 IP 地址
网络中所有的主机收到这个 ARP 请求后,会检查数据包中的目的 IP 是否和自己的 IP 地址一致。如果不相同就忽略此数据包;如果相同,该主机首先将发送端的 MAC 地址和 IP 地址添加到自己的 ARP 列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个 ARP 响应数据包,告诉对方自己是它需要查找的 MAC 地址
源主机收到这个 ARP 响应数据包后,将得到的目的主机的 IP 地址和MAC地址添加到自己的 ARP 列表中,并利用此信息开始数据的传输。如果源主机一直没有收到 ARP 响应数据包,表示 ARP 查询失败。

可能有人会问,知道了MAC地址之后,发送数据是通过广播的形式发送,询问对方的MAC地址也是通过广播的形式来发送,那其他计算机怎么知道你是要传送数据还是要询问MAC地址呢?

其实在询问 MAC 地址的数据包中,在对方的 MAC 地址这一栏中,填的是一个特殊的 MAC 地址,其他计算机看到这个特殊的 MAC 地址之后,就能知道广播想干嘛了

假如两台计算机的IP不是处于同一个子网之中,这个时候,我们就会把数据包发送给网关,然后让网关让我们进行转发传送

(5)为什么不直接使用硬件地址进行通信

由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
IP 编址把这个复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的复杂过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
因此,在虚拟的 IP 网络上用 IP 地址进行通信给广大的计算机用户带来了很大的方便。

2、逆地址解析协议 RARP

RARP 请求是广播方式,应答都是单播方式

(1)简介

逆地址解析协议 RARP 使只知道自己硬件地址的主机能够知道其 IP 地址
现在的DHCP协议已经包含了RARP的功能,RARP协议目前已很少使用。

(2)RARP 工作原理

● 网络上的每台设备都会有一个独一无二的硬件地址,通常是由设备厂商分配的 MAC 地址。PC 从网卡上读取 MAC 地址,然后在网络上发送一个 RARP 请求的广播数据包,请求 RARP 服务器回复该 PC 的IP地址。
● RARP 服务器收到了 RARP 请求数据包,为其分配 IP 地址,并将 RARP 回应发送给 PC。
● PC 收到 RARP 回应后,就使用得到的 IP 地址进行通讯。

六、国际控制报文协议 ICMP

1、ICMP介绍

(1)简介

为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。
ICMP 是互联网的标准协议。
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP 报文作为 IP 数据报的数据,加上数据报的首部,组成 IP 数据报发送出去。
ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议
ICMP只能搭配IPv4工作,如果是IPv6,需要使用ICMPv6

(2)ICMP协议的功能

确认IP包是否成功到达目标地址
通知在发送过程中 IP 包被丢弃的原因
计算机网络 — 网络层_第23张图片
接收主机根据这两个信息就可以断定引起重定向的IP数据报应该使用哪个路由器来转发,并且以此来更新路由表(通常是更新路由表缓冲,而不是直接更改路由表)。一般来说,主机只能接收ICMP重定向报文,路由器只能发送ICMP重定向报文。

(3)ICMP 的报文格式
计算机网络 — 网络层_第24张图片

(1)8 位类型字段用于区分报文类型。它将ICMP报文分为两大类:
● 差错报文:主要用于回应网络错误,比如目标不可到达(类型值为3)和重定向(类型值为5)
● 查询报文:用于查询网络信息,比如ping命令就是使用ICMP报文查看目标是否可到达(类型值为8)的
(2)有的类型通过8位代码字段来进一步细分不同的条件:
比如重定向报文使用代码值0表示对网络重定向,代码值1表示对主机重定向
(3)ICMP报文使用16位校验和字段对整个报文(包括头部和内容部分)进行CRC校验(循环冗余校验),以校验报文是否损坏

(4)ICMP 报文的种类

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。
ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关。

ICMP 差错报告报文的数据字段的内容

计算机网络 — 网络层_第25张图片
把收到的需要进行差错报告的 IP 数据报的首部和数据字段的前 8 个字节提取出来,作为 ICMP 报文的数据字段,再加上相应的 ICMP差错报告的前8个字节,就构成了ICMP差错报告报文。
ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。

ICMP 差错报告报文种类

终点不可达

当路由器发送的数据报不能发送到指定目的地时,或者说当路由器不能够给数据报找到路由或主机不能够交付数据报时,就丢弃这个数据报,然后向发送数据报的源主机设备发回一个终点不可达数据报文。

端口不可达

当目标系统收到一个ip数据报的某个服务请求时,如果本地没有此服务,那么会向源头返回ICMP端口不可达信息。   
常见的端口不可达有,R1向R3发起一个ftp的传输请求,从R3传输一个文件到R1,由于R3设备没有开启ftp服务的69端口,因此R1在请求R3时会收到R3回复的一个ICMP端口不可达的差错报文。

超时

ICMP差错报告报文主要在以下几种情况中,会发送ICMP超时报文:
 ●  当路由器接收到的数据报的生命周期字段值为0时,路由器会把该数据报丢弃掉,并向源主机发回一个 ICMP 超时报文。
 ●  当目标主机在规定时间内没有收到所有的数据分片时,会把已经收到的所有数据分片丢弃,并向源主机发回一个 ICMP 超时报文。在超时报文中,代码 0 只能给路由器使用,表示生存周期字段值为 0,代码 1 只能给目的主机使用,它表示在规定的时间内,目的主机没有收到所有的数据分片。

参数问题

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

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

不应发送 ICMP 差错报告报文的几种情况

● 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
● 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
● 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
● 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。

ICMP 询问报文有两种

● 回送请求和回答报文
● 时间戳请求和回答报文

2、ping命令和pathping命令

(1)ping命令

ping (Packet Internet Groper),因特网包探索器,是网络层命令,用于测试网络连接量的程序。ping发送一个ICMP回声请求消息(ICMP Echo Request)给目的地并报告是否收到,所希望的ICMP回声应答(ICMP Echo Reply)。
ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。它是用来检查网络是否通畅或者网络连接速度的命令
ping中有一个重要参数TTL( Time To Live),数据包每过一个路由,TTL减1,TTL默认初始值如下:Linux 64、Windows 128、Unix 256。可以根据TTL值+pathping command粗略判定对方是什么系统。
计算机网络 — 网络层_第26张图片

(2)pathping命令

pathping 能跟踪数据包路径。使用ping能够判断网络通还是不通,但是比如请求超时,你就不能判断什么位置出现的网络故障造成的请求超时。使用pathping命令能跟踪数据包的路径,能够查出故障点,并且能够计算路由器转发丢包率和链路丢包率以及延迟,据此能够判断出网络拥塞情况
计算机网络 — 网络层_第27张图片

你可能感兴趣的:(计算机网络,计算机网络)