[计算机网络]第四章 网络层
[计算机网络]第四章 网络层
学习使用工具
HillZhang的计算机网络复习笔记 https://hillzhang1999.gitee.io/2020/05/22/ji-suan-ji-wang-luo-quan-bu-fu-xi-bi-ji/
《计算机网络》谢希仁
1. 网络层的功能
在互联网中,网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。不提供服务质量的承诺。网络层面向无连接,不负责提供可靠的服务,将确保数据可靠的任务交给了上层的运输层(TCP协议)。
路由器是网络层的设备,用于连接局域网。路由器的主要作用是连通不同的网络以及选择信息传送的线路(路由选择协议)。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。
“转发”和“路由选择”的区别 :
- “转发”是路由器根据转发表将用户的 IP 数据报从合适的端口转发出去。
- “路由选择”是按照分布式算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由。
- 路由表是根据路由选择算法得出的。而转发表是从路由表得出的。
2.网际协议IP
网际协议IP是TCP/IP体系中两个最主要的协议之一,IP的第四个版本称为IPv4,第六个版本称为IPv6。与其配套使用的还有三个协议:
- 地址解析协议ARP(Address Resolvotion Protocol)
- 网际控制报文协议ICMP(Internet Control Message Protocol)
- 网际组管理协议IGMP(Internet Group Management Protocol)
在讨论网际协议IP之前,必须先理解虚拟互连网络的概念。虚拟互联网络是指使用相同的网际协议IP参加互连的网络,忽略物理层的客观异构性,他们在网络层上看起来好像是一个统一的网络。如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网。
-
IP地址
整个互联网就是一个单一的、抽象的网络,IP地址就是给互联网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位的标识符。IP地址的结构使我们在互联网上可以很方便地进行寻址。
-
结构:网络号+主机号。IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。
A类地址:8位网络号,第一位是标识位0;24位主机号。
B类地址:16位网络号,前两位是标识位10;16位主机号。
C类地址:24位网络号,前三位是标识位110;8位主机号。
D类地址:前四位是标识位1110,用于一对多通信。
E类地址:前四位是标识位1111,留作以后使用。
-
表示方法:点分十进制。
-
指派范围
A类地址:网络号占用一个字节,但是由于有一位是类别位,只有7位可供使用。网络字段全0是个保留字段表示本网络,而127(01111111)是另外一个保留字段,作为本地软件的环回测试。所以A类地址可以指派的网络号个数为(2^7-2)
B类地址:网络号有两个字节,前两位为10已经固定,只剩下14位可用。由于实际上规定B类最小网络地址为128.1.0.0。因此B类地址可指派的网络号个数为(2^14-1)
C类地址:有3个字节的网络字段号,前三位固定110,只有剩下21位可用,同样C类地址可指派的最小网络地址也是192.0.1.0。因此C类地址可指派的网络号个数为(2^21-1)
A、B、C三类地址的主机号,全0或全1均有特殊作用,分别表示本主机和当前网络内全部主机,所以可用的主机号为(2^(n-1))。
-
特殊IP地址
- 网络号全0:当前网络
- 网络号全1:在本网络上进行广播
- 网络号127:用于本地环回测试(自己连接自己)
- 主机号全0:当前主机
- 主机号全1:所有主机
-
IP地址的重要特点
- 分等级的地址结构:IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。方便了 IP 地址的管理。另一方面路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以减小了路由表所占的存储空间。
- IP地址是标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的(多归属主机)。由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
- 用转发器(物理层)或网桥(数据链路层)连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号。具有不同网络号的局域网必须使用路由器进行互连。
- 所有分配到网络号的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
-
-
IP地址与硬件地址
- 硬件地址/物理地址/MAC地址:数据链路层和物理层使用的地址,放在 MAC 帧的首部。分组每次经过路由器转发时都要将MAC帧的首部和尾部丢弃重新封装,变换MAC帧中的目的MAC地址和源MAC地址。数据链路层只能看见硬件地址。
- IP地址:网络层和以上各层使用的地址,是一种逻辑地址,放在 IP 数据报的首部。分组每次经过路由器转发时,IP数据报中的源IP地址和目的IP地址始终不变。网络层只能看见IP地址。
3.地址解析协议ARP
当已知主机或路由器的IP地址后,需要通过ARP地址解析协议得出其MAC地址。由于是IP协议使用了ARP协议,因此通常就把ARP协议划归网络层。但ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址。因此,有时候就按照协议的所用,把ARP协议划归在数据链路层。
ARP解决这个问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新。
ARP高速缓存:每一个主机都设有一个 ARP 高速缓存,里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。条目为< IP地址;MAC地址;TTL >,其中TTL为地址映射有效时间 。
- ARP流程:
- 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。
- 如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。并写入MAC帧进行发送。
-
ARP要点
ARP 分组封装在物理网络的帧中传输。
ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址未知时填0,由接收方填写未知时填0,由接收方填写/ 目标方 IP 地址。
ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
4.IP数据报(分组)
由首部和数据部分组成。首部固定长度为20字节,此外还可加入长度可变的可选字段。总长度必须是4字节的倍数,最大为60字节。数据报总长度最大不能超过数据链路层协议规定的最大传送单元MTU,即1500字节,否则需要进行分片处理。
首部固定字段:
-
版本——占 4 位。目前的 IP 协议版本号为 4。
-
首部长度——占 4 位,可表示的最大数值是 15 个单位一个单位为4字节一个单位为4字节,因此 IP 的首部长度的最大值是 60 字节。(最小值为固定长度20字节)
-
区分服务——占 8 位,用来获得更好的服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段 。
-
总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的理论最大长度为 65535 字节。但实际上,总长度必须不超过最大传送单元 MTU,否则需要分片。例如,以太网的MTU规定为1500字节。
-
标识——占 16 位,它是一个计数器,用来产生 IP 数据报的标识。作用是:分片时,为各数据报片设定一个标识,相同标识的数据报片最终可被重新拼接起来。
-
标志——占 3 位,目前只有低两位有意义。同样是为了分片。
- 标志字段的最低位是 MF。MF=1 表示后面“还有分片”。MF=0 表示最后一个分片。
- 标志字段中间的一位是 DF。只有当 DF=0 时才允许分片。
-
片偏移——占13 位,指出较长的分组在分片后某片在原分组中的相对位置。片偏移以8 个字节为偏移单位,除最后一个数据报片外,所有数据报片的长度都是8字节的倍数。保证最后数据报片可按照正确的顺序拼接回来。
- 各片可以继承原IP数据报的首部,但必须更改以下字段:
- 修改各数据报片的总长度字段。
- 修改各数据报片的标识字段。
- 修改各数据报片的片偏移字段。
- 修改各数据报片的标志字段。
- 各片可以继承原IP数据报的首部,但必须更改以下字段:
-
协议——占8位,指出此数据报携带的数据使用何种协议(TCP/UDP),以便目的主机的 IP 层将数据部分上交给那个处理过程。
-
生存时间——占8位,记为TTL ,指示数据报在网络中可通过的路由器数的最大值。
-
首部检验和——占16 位,为了减少工作量,只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法
- 方法:IP 数据报首部检验和的计算采用 16 位二进制反码求和算法
- 过程:在发送方将IP数据报的首部划分为许多16位的字序列;并把检验和字段置零,用反码运算术将字相加之后,将得到的和的反码写入检验和位置;在接受方接收到数据报之后,使用相同的方法将首部所有的字(包括检验和)相加一次,若没有出错则得到的结果必然为零,最后的结果便可作为是否出错的判断标志
- 反码运算:在普通的二进制加法的基础上,最高位如果产生进位,需要将最后的结果加1
-
源IP地址和目的IP地址都各占 4 字节,32位。
-
首部可变字段:IP 首部的可变部分就是一个选项字段,用来支持排错、测量以及安全等措施,内容很丰富。0到40字节。
互联网经过几十年的飞速发展,到 2011 年 2 月,IPv4 的 32 位地址已经耗尽。解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。
-
ICMP协议:网际控制报文协议
ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。从而更有效地转发IP数据报和提高交付成功的机会。ICMP报文存在于IP数据报的数据部分。ICMP报文分为差错报告报文和询问报文。
ICMP差错报告报文包括:终点不可达、时间超过、参数问题、改变路由。首部8个字节,数据部分为需要进行差错报告的IP数据报的首部和数据部分前8个字节。
ICMP 询问报文包括:回送请求和回答报文(PING命令)时间戳请求和回答报文
5.网络层转发分组流程
- 从数据报的首部提取目的主机的 IP 地址 D, 根据子网掩码得出目的网络地址为 N。
- 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行 3。
- 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行 4。
- 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行 5。
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行 6。
- 报告转发分组出错。
每一台主机都有一个路由表。按主机所在的网络地址来制作路由表。在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)。具体如何选择路径需要依据路由选择协议,如内部网关协议RIP或OSPF。
根据目的网络地址就能确定下一跳路由器。IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。只有到达最后一个路由器时,才试图向目的主机进行直接交付。
-
内部网关协议 RIP(路由信息协议)
RIP 是一种分布式的、基于距离向量的路由选择协议。它要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。RIP中的距离也称为“跳数”,因为每经过一个路由器,跳数就加 1。直接相连的路由器跳数为1。RIP 允许一条路径最多只能包含15 个路由器。“距离”的最大值为 16 时即相当于不可达。
-
特点:仅和相邻路由器交换信息、交换的信息是当前本路由器所知道的全部信息,即自己的路由表、按固定的时间间隔交换路由信息。路由器在刚刚开始工作时,只知道到直接连接的网络的距离(此距离定义为 1)。它的路由表是空的。经过若干次交换信息和更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。这个若干次更新的过程即为RIP的收敛。RIP协议的路由器之间交换信息的方式是:RIP报文。它使用运输层的用户数据报协议UDP进行传送。
-
更新算法:距离向量算法
- 路由器收到相邻路由器(其地址为 X)的一个 RIP 报文。
- 先修改此 RIP 报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1。
- 若项目中的目的网络不在路由表中,则把该项目加到路由表中。(新的目的网络)
- 否则:
- 若下一跳字段给出的路由器地址是同样的,则把收到的项目替换原路由表中的项目。(网络动态更新后的最新的消息)
- 否则,若收到项目中的距离小于路由表中的距离,则进行更新(更好的路径)
- 否则,什么也不做。
- 若 3 分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16(表示不可达)。
-
优缺点:使用UDP传送。实现简单,开销较小。但路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。坏消息传播得慢,收敛时间长。
-
-
内部网关协议 OSPF(开放最短路径优先协议)
使用的方法是洪泛法。路由器通过所有的端口向所有的相邻路由器发送信息,而所有的相邻路由器也是同样的做法,但发送的对象不包括之前向他发送信息的那个路由器,从而最终使得整个局域网都得到该信息的一个副本。
发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
- 优缺点:不用 UDP 而是直接用 IP 数据报传送。收敛的快,没有坏消息传的慢的问题。也能用于规模更大的网络。
- 划分区域:划分区域的好处就是将利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑的情况。
特定主机路由:虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。
默认路由:路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
6.子网划分
由于两级的 IP 地址不够灵活,在 IP 地址中又增加了一个“子网号字段”,使两级的 IP 地址变成为三级的 IP 地址。
划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。子网对外部透明。外部主机只需要将IP数据报发送给该单位的网络,发送到具体的子网由该单位自己负责。
方法:从主机号借用若干个位作为子网号,而主机号也就相应减少了若干个位。
凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号,先找到连接在本单位网络上的路由器。然后此路由器在收到 IP 数据报后,再按目的网络号和子网号找到目的子网。最后就将 IP 数据报直接交付目的主机。(子网号全0或者全1表示特殊含义,所以n位的子网号,对应的子网数目为\(2^{n-1}\))
-
子网掩码:存放在路由器中,路由器在与相邻路由器交换信息时,需要给出所在网络的子网掩码,路由表中每一个目的网络地址后面也需要给出该目的网络的子网掩码。使用时,计算机将子网掩码和目的地址进行按位与运算。
- 子网掩码长度 = 32 位(IPv4)
- 某位 = 1:IP地址中的对应位为网络号和子网号
- 某位 = 0:IP地址中的对应位为主机号