目录
4.1 网络层的功能
4.2 IPv4&IPv6
4.2.1 IPv4分组
4.2.2 IPv4地址的分类方式
4.2.3 IP地址的规划问题
4.2.3 网络地址转换NAT
4.2.4 地址解析协议ARP
4.2.5 动态主机配置协议DHCP
4.2.6 网际控制报文协议ICMP
4.2.7 IPv6
4.3 路由协议
4.3.1 路由协议概述
4.3.2 路由信息协议RIP
4.3.3 开放最短路径优先OSPF
4.3.4 边界网关协议BGP
4.4 网络层设备
4.4.1 路由器
4.4.2 路由表与路由转发
以IPv4和路由为核心,结合其他章节综合考察
异构网络互连
路由选择分组转发
拥塞控制
一个IP数据报由首部和数据部分组成,首部由固定部分和可变部分组成,固定部分共20B,所有IP数据报所必须的,可变部分长度可变,用来提供错误检测和安全机制等
·IP数据报格式
①版本 占4比特,表示IP协议的版本,通信双方使用的IP协议的版本必须一致。
②首部长度 占4比特,表示IP数据报首部的长度。以4字节为单位,最小十进制取值为5,表示IP数据报首部只有20字节固定部分;最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分。
③总长度 占16比特,表示IP数据报的总长度(首部+数据载荷),最大取值为十进制的65535,以字节为单位。
【首部长度与总长度的计算】:
④标识 占16比特,属于同一个数据报的各分片数据报应具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器值加1,并将此值赋给标识字段。
⑤标志 占3比特,字段中间位为DF: 1表示不允许分片,0表示允许分片;标志最低段为MF: 1表示“后面还有分片”,0表示”这是最后一个分片”
⑥片偏移 占13比特,指出分片数据报的数据载荷部分偏移其在原数据报位置有多少个单位。
片偏移以8个字节为单位。
⑦生存时间TTL 占8比特,现以“跳数”为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。
⑧协议 占8位。指出此分组携带的数据使用何种协议,即分组的数据部分应上交给哪个协议进行处理,如TCP、UDP等。其中值为6表示TCP,值为17表示UDP.
⑨首部校验和 占16位。首部校验和只校验分组的首部,而不校验数据部分
⑩源地址字段 占4B标识发送方的IP地址;目的地址字段 占4B标识接收方的IP地址
·IP数据报分片
由于IP数据报封装在数据链路层数据报中,而数据链路层的最大传送单元MTU(一个数据链路层数据报能承载的最大数据量)严格的限制着IP数据报的长度,且各段链路可能使用不同的数据链路层协议,MTU不同,所以需要将IP数据报分装在多个较小的IP数据报里,称为片
·IP数据报发送转发过程
直接交付:相同网络间的通信;间接交付:不同网络间的通信,需要路由器中转
【问】:
源主机如何判断目的主机与自己处在同一网络中?
答:将源主机地址的子网掩码与目的主机地址相与,得到目的主机网络地址,判断其与源主机的网络地址是否相等,若不等则不在同一网络中,属于间接交付
主机如何如何知道路由器的存在?
答:用户为了本网络的主机能和其他网络的主机通信,就必须指定本网络中的一个路由器进行转发,这个路由器也称为默认网关
路由器收到IP数据报后如何转发?
答:1)检查IP数据报首部是否出错:若出错,则直接丢弃该IP数据报并通告源主机若没有出错,则进行转发 2)根据IP数据报的目的地址在路由表中查找匹配的条目,若找到匹配的条目,则转发给条目中指示的下一跳,若找不到,则丢弃该IP数据报并通告源主机
IP地址由网络号和主机号了两部分组成,其中网络号标志主机或路由器连接到的网络,主机号标志该主机或路由器,一个IP地址在整个因特网范围内是唯一的
·分类编址
传统的IP地址是分类的地址,共有ABCDE五类
【注】:
①只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
②主机号为“全0”的地址是网络地址,“全1”的地址是广播地址,不能分配给主机或路由器的各接口
③A类地址中最大网络号127作为本地回环测试地址,既可作为源地址使用,也可以作为目的地址使用,但不会出现在任何网络上
【一般不使用的特殊IP地址】:
·划分子网&子网掩码
由于两级IP地址空间利用率有时很低且不够灵活,从而引入子网划分的三级IP地址,在原基础上增加一个子网号字段,即把IP地址的主机号再划分,借用其若干比特作为子网号
这个过程只在单位内部进行,因次仅从IP地址本身无法判断该网络是否进行了子网划分,所以为告诉主机或路由器对网络进行子网划分,使用子网掩码表示对原网络主机号的借位
子网掩码是一个与IP地址相对应长的二进制串,用连续的比特1来对应网络号和子网号,用连续的比特0来对应主机号,用子网掩码与IP地址进行逻辑与运算就可得到所在子网的网络地址
【注】:因特网标准规定所有的网络都必须使用子网掩码,如果一个网络未划分子网,那么就采用默认子网掩码。ABC类地址的默认子网掩码分别为255.0.0.0、255.255.0.0、255.255.255.0。
【例1】:某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0, 如该主机向其所在子网发送广播分组,则目的地址可以是
A.180.80.76.0 B.180.80.76.255 C.180.80.77.255 D.180.80.79.255
·无分类编址CIDR
无分类域间路由选择CIDR是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法。CIDR使用斜线记法。即在IPv4地址后面加上斜线/,并在斜线后面写上网络前缀所占的比特数量
CIDR实际上是将网络前缀都相同的连续的IP地址组成一个”CIDR地址块”。一个CIDR地址块可以表示很多地址,这种地址的聚合称为路由聚合(构成超网)。路由聚合使得路由表中的一个项目可以表示多个原来传统分类地址的路由,有利于减少路由器之间的信息的交换,从而提高网络性能
只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节
【例】:请给出CIDR地址块206.0.64.8/1 8的全部细节
·定长的子网掩码FLSM 使用同一个子网掩码来划分子网,每个子网所分配的IP地址数量相同,造成IP地址的浪费
【例1】:假设申请到的C类网络为218.75.230.0,使用定长的子网掩码给所示的小型互联网中的各设备分配IP地址
·变长的子网掩码VLSM 使用不同的子网掩码来划分子网,每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
【例2】:设申请到的地址块为218.75.230.0/24,在上例基础上使用变长的子网掩码给其分配地址
·工作原理
为缓解了IPv4地址空间即将耗尽的问题,提出了一种网络地址转换NAT的方法,通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址。使得整个专用网只需要一个全球IP地址就可以与因特网连通,由于专用网本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
私有的IP地址网段有:
1个A类网段,即10.0.0.0~10.255.255.255。
16个B类网段,即172.16.0.0~172.31.255.255。
256个C类网段,即192.168.0.0~ 192.168.255.255
·工作过程
这样如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。
解决方法是利用运输层的端口号和IP地址一起进行转换。由于绝大多数的网络应用都是使用运输层协议TCP或UDP来传送数据这样,用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP地址一起进行转换的技术叫作网络地址与端口号转换NAPT
如何通过IP地址找到相应的MAC地址,这就是地址解析协议ARP所要实现的主要功能,每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。
·工作过程
DHCP常用于给主机动态地分配IP地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取IP 地址而不用手工参与。DHCP是基于UDP的应用层协议。
·工作原理
使用客户/服务器模式。需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文。
为提高IP数据报交付成功的机会,在网络层使用ICMP来让主机或路由器报告差错和异常情况。ICMP报文作为数据部分封装在IP数据报中发送
· ICMP差错报告报文
用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况,共有五种类型:
1)终点不可达 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
2)源点抑制 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
3)时间超过 当路由器收到生存时间TTL=0的数据报时(路由器收到目的IP地址不是自己的IP数据报TTL-1),除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文
4)参数问题 当路由器或目的主机收到数据报的首部中有字段的值不正确时,丢弃该数据报,并向源点发送参数问题报文。
5)改变路由(重定向)路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。
【注】
对ICMP差错报告报文不再发送ICMP差错报告报文
对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
对具有多播地址或特殊地址(127.0.0.0或0.0.0.0)的数据报都不发送ICMP差错报告报文
·ICMP询问报文
1)回送请求和回答报文
由主机或路由器向特定的目的主机发出的询问,用来测试目的站是否可达及了解其有关状态。
2)时间戳请求和回答
请求某个主机或路由器回答当前的日期和时间,用来进行时钟同步和测量时间。
·ICMP应用
1)分组网间探测PING
用来测试主机或路由器间的连通性,工作在应用层,不通过运输层直接使用网络层的ICMP
2)跟踪路由Traceroute
用来测试IP数据报从源主机到达目的主机要经过哪些路由器。对于Windows版本为 tracert命令,应用层直接使用网际层ICMP,使用了ICMP回送请求和回答报文以及差错报告报文;对于Unix版本为 traceroute命令,在运输层使用UDP协议,仅使用ICMP差错报告报文
为解决IP地址耗尽问题可采用无类别编址CIDR,使IP地址的分配更加合理;也可采用网络地址转换NAT方法以节省全球IP地址,这两种方法只是延长了IPv4 地址分配完毕的时间;只有采用具有更大地址空间的新版本的IPv6才从根本上解决了IP地址的耗尽问题。
·主要特点
1)更大的地址空间。从IPv4的32位增大到了128位。字节数为16B是IPv4字节数的平方
2)扩展的地址层次结构。
3)灵活的首部格式。
4)改进的选项。
5)允许协议继续扩充。
6)支持即插即用(即自动配置)。
7)支持资源的预分配。
8) IPv6只有在包的源结点才能分片,是端到端的,传输路径中的路由器不能分片,所以从一般意义上说, IPv6 不允许类似IPv4的路由分片。
9) IPv6首部长度必须是8B的整数倍,而IPv4首部是4B的整数倍。
10)增大了安全性。具有身份验证和保密功能
·IPv6地址
IPv6标准把地址中的每4位用一个十六进制数表示,用冒号分隔每16位如:4BF5:AA12:0216:FEBC:BA5F:039A:BE9A:2170
通常当16 位域的开头有一些 0时,可采用一种缩写表示,但在域中必须至少有一个数字。比如可把地址4BF5:0000:0000:0000:BA5F:039A:000A:2176→4BF5:0:0:0:BA5F:39A:A:2176。当有相继的0值域时,还可将这些域可以用双冒号缩写(::)如4BF5::BA5F:39A:A:2176。不过一个地址中仅能出现一次, 因为0值域的个数没有编码,需要从指定的总的域的个数来推算。
因特网采用分层次的路由选择协议,将整个因特网划分为许多较小的自治系统AS,AS内部的路由选择称为域内路由选择,使用的协议称为内部网关协议IGP,如RIP&OSPF;AS之间的路由选择称为域间路由选择,使用的协议为外部网关协议EGP,如BGP-4
常见的路由选择协议有:
·工作原理
RIP是一种分布式的基于距离向量的路由选择协议,距离也称跳数,规定从一个路由器到直连网络的距离为1,到非直连网络的距离定义为经过的路由器数加1。RIP允许一条路径最多只包含15个路由器,距离为16时相当于不可达,因此只适用于小型互联网
RIP基于跳数选择路径,认为好的路由就是所通过路由器数量最少的路由。当到达同一目的网络有多条”距离相等”的路由时,可以进行等价负载均衡
·工作过程
路由器刚开始工作时,只知道自己到直连网络的距离为1,仅和相邻路由器周期性地交并更新路由信息。
同理经过若干次交换和更新后,每个路由器都知道整个IP网络的路由表,即到达本AS内各网络的最短距离和下一跳地址,称为收敛。
·更新过程
·特点
①仅和相邻路由器交换信息;
②交换的信息为当前路由器的全部信息,即路由表
③交换按固定的时间周期性交换
·坏消息传的慢问题
又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。
减少出现该问题概率的措施有:
①限制最大路径距离为15 (16表示不可达)
②当路由表发生变化时就立即发送更新报文(即“触发更新”),而不仅是周期性发送
③让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送(即“水平分割”)
·RIP的缺陷
①能使用的最大距离为15,限制了网络的规模
②更新交换的是路由器中完整的路由表,浪费了网络资源
③网络故障时会出现收敛慢的现象,即坏消息传的慢
·链路状态 指本路由器都和哪些路由器相邻,以及相应链路的代价--距离、时延、带宽等。下图所示的链路代价为100Mbps/链路带宽100Mbps=1(小于1的仍记为1)
·工作原理 OSPF使用分布式链路状态路由算法,向本自治系统中所有路由器发送与本路由器相邻的所有路由器的链路状态,收敛以后,每个路由器的链路数据状态库将达到一致。然后根据这个链路状态,使用Dijkstra独立计算到各目的网络的最优路径,构建路由表
【注】:OSPF使用洪泛法发送信息,即当某个路由器链路状态发生变化时,该路由器便使用链路状态更新分组,收到链路状态更新分组的路由器将从自己所有接口转发该分组,从而传递给系统中所有路由器
·五种分组
①问候分组 用来发现和维护邻居路由器的可达性
②数据库描述分组 向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
③链路状态请求分组 向邻居路由器请求发送某些链路状态项目的详细信息
④链路状态更新分组 路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
⑤链路状态确认分组 对链路状态更新分组的确认
·工作过程
·OSPF与RIP的区别
1)OSPF向本自治系统中的所有路由器发送信息,而RIP仅向自相邻的路由器发送信息
2)OSPF发送的信息是与本路由器相邻的所有路由器的链路状态,只是路由器所知道的部分信息—本路由器和哪些路由器相邻及该链路的“度量”(或代价);而在RIP中发送的信息是本路由器所知道的全部信息,即整个路由表。
3)只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息,且更新过
程收敛得快,不会出现“坏消息传得慢”的问题;而在RIP中不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息。
4)OSPF是网络层协议,它不使用UDP或TCP,而直接用IP数据报传送(其IP数据报首部的协议字段为89);而RIP是应用层协议,它在传输层使用UDP。
在不同自治系统内,度量路由的代价(距离、带宽、时延等)可能不同,因此对于自治系统之间的路由选择,使用“代价”作为度量来寻找最佳路由是不行的;并且AS之间的路由选择还必须考虑有关策略(政治、经济、安全等)。综上,BGP只能是力求寻找一条能够到达目的网络且比较好的路由 (不能兜圈子),而并非要寻找一条最佳路由
·工作原理 BGP采用的是路径向量路由选择协议,与距离向量协议和链路状态协议有很大的区别。
每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接(BGP报文是通过TCP传送的,BGP报文是TCP报文的数据部分,可见BGP是应用层协议,它是基于TCP的),然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息。当所有BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可找出到达各个自治系统的较好路由。
每个BGP发言人还必须运行该AS所用的内部网关协议,如OSPF或RIP。
·BGP-4的4种报文
①OPEN打开报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
②UPDATE更新报文:用来通告某一路由的信息,以及列出要撤销的多条路由。
③KEEPALIVE保活报文:用来周期性地证实邻站的连通性。
④NOTIFICATION通知报文:用来发送检测到的差错。
·BGP协议特点
1)BGP交换路由信息的结点数量是自治系统的数量,要比这些自治系统中的网络数少很多。
2)每个自治系统中BGP发言人(边界路由器)的数目很少,这样就使得自治系统之间的路由选择不致过分复杂。
3)BGP支持CIDR,因此BGP的路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
4)在BGP刚运行时,BGP的邻站交换整个路由表,但以后只需在发生变化时更新有变化的部分。这样可以节省网络带宽和减少路由器的处理开销
路由器是一种具有多个输入输出端口的专用计算机,其任务是连接不同网络完成路由转发
·基本结构:路由器由路由选择和分组转发两大部分构成
1)路由选择部分的核心是路由选择处理机,根据所选定的路由选择协议构造出路由表,同时定期的和相邻路由器交换路由信息从而不断更新维护路由表;
2)分组转发由交换结构、输入端口和输出端口组成。交换结构是路由器的关键部件,根据转发表对分组进行处理,使其从合适的端口转发出去输入与输出端口执行相反的操作
【路由器与网桥的区别】:
网桥与高层协议无关,而路由器是面向协议的,它依据网络地址进行操作,并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制等。现今的路由器一般都提供多种协议的支持,包括OSI、TCP/IP、IPX等
·路由表 标准的路由表有4个项目:目的网络IP地址、子网掩码、下一跳IP地址和接口
·转发表 转发表由路由表得出,表项和路由表项有直接的对应关系。但格式和路由表格式不同,其结构应使查找过程最优化(而路由表则需对网络拓扑变化的计算最优化)。转发表中含有一个分组将要发往的目的地址,以及分组的下一跳(即下一步接收者的目的地址,实际为MAC地址)。为了减少转发表的重复项目,可以使用一个默认路由代替所有具有相同下一跳的项目,并将默认路由设置得比其他项目的优先级低。路由表用软件来实;转发表可以用软件来实现,也可以用特殊的硬件来实现。
【转发和路由选择的区别】:转发是路由器根据转发表把收到的IP数据报从合适的端口
转发出去,它仅涉及一个路由器。而路由选择则涉及很多路由器,路由表是许多路由器协同
工作的结果。这些路由器按照复杂的路由算法,根据从各相邻路由器得到的关于网络拓扑的变化情况,动态地改变所选择的路由,并由此构造出整个路由表。