8. 网络层
网络层的特征
网络层:OSI第3层,提供能让终端设备跨整个网络交换数据的服务。
网络层协议:
协议 | 举例 |
---|---|
通信协议 | IPv4、IPv6 |
路由协议 | 开放式最短路径优先协议(OSPF) |
消息传递协议 | Internet控制消息协议(ICMP) |
网络层协议执行四个基本操作:
- 终端设备编址——为终端设备配置唯一的IP地址;
- 封装——将来自传输层的协议数据单元(PDU)封装到数据包中。封装过程中会添加IP报文信息(如Src和Dst的IP地址),由IP数据包的源主机执行;
- 路由——网络层提供服务,将数据包转发至另一网络上的目的主机。要传送到其他网络,数据包必须经过路由器处理。路由器为数据包选择最佳路径,并将其转发至目的主机,该过程称为路由。
- 解封——当数据包到达目的主机的网络层时,主机检查IP报头,若目的IP与自身IP匹配,将数据包的IP报头删除。解封后,后继的第4层PDU向上传递到传输层的相应服务。
下图是数据交换过程中的封装过程。
传输层的PDU是段(Segment) | ![]() |
网络层的PDU是数据包(packet) | ![]() |
数据链路层的 PDU是数据帧(frame) | ![]() |
物理层的 PDU是比特流(bit) | ![]() |
路由 | ![]() |
图1. 数据交换过程中的封装过程
IP封装:IP通过添加IP报头将传输层数据段进行封装。
图2. 数据段的封装
IP数据包在通过网络传输到目的地时,会被第3层设备(即路由器和第3层交换机)检查IP报头。注意,数据包到达目的主机前,IP编址信息不变,除非是IPv4执行网络地址转换(NAT)的设备进行转换。
IP的基本特征:
- 无连接——发送数据包前不与目的地建立连接。
- 尽力而为——IP本质上是不可靠的,因为不保证数据包交付。
- 介质无关性——其工作与传输数据的介质(即铜缆、光纤或无线)无关。
“尽力而为”(Best Effort):IP不需要报头中包含其他字段来维持建立的连接,这显著降低了IP的开销,但由于没有预先建立端到端连接,IP协议不保证交付的所有数据包都能被收到。
注:其他网络层协议将管理跟踪数据包的过程并确保数据包的送达。而不可靠表示IP不具备管理和恢复的能力,因此,
- 若数据包损坏或出错,IP无法重新传输数据包;
- 若数据包顺序错乱或丢失,使用数据或上层服务的应用程序必须解决这些问题。在TCP/IP协议簇中,可靠性是TCP协议在传输层的功能。
介质无关性:IP数据包的交付不限于任何特定的介质。
注:网络层会考虑最大传输单位(MTU)(即每种介质可以传输的最大PDU大小)。数据链路层将MTU值向上传送到网络层,网络层由此确定可以传送的数据包的大小。若中间设备(如Router)将IPv4数据包转发到具有更小MTU介质时,必须分割数据包,该过程称为分片,分片会导致延迟。IPv6数据包不能被路由器分片。
小结
IPv4数据包
IPv4数据包报头字段:每个字段的二进制值用于确定IP数据包的各种设置。
图中所示的IP协议报头图表示了IPv4数据包中的字段:
图3. IPv4数据包报头中的字段
IPv4报头包含20个二进制八位组的可变长度报头(使用“选项”字段则高达60字节,即固定20字节+从1字节到40字节不等的选项)和12个基本报头字段(不包括“选项”和“填充”)
IPv4报头中的重要字段包括以下:
- 版本——包含4位二进制值0100,用于标识IPv4数据包;
- 差分服务或区分服务(DS)——以前称为服务类型(ToS)字段。8位字段,用于确定数据包的优先级。DiffDerv字段的六个最高有效位是区分服务代码点(DSCP)位,后两位是显式拥塞通知(ECN)位。
- 报头校验和——用于检测IPv4报头中的损坏。
- 生存时间(TTL)——8位二进制值,用于限制数据包的生命周期。当TTL减为零,Router丢弃该数据包并向源IP地址发送互联网控制消息协议(ICMP)超时消息。由于路由器减少每个数据包的TTL,因此必须重新计算报头校验和。
- 协议——8位二进制,用于标识下一级协议。该值表示数据包包含的数据负载类型,使网络层将数据传送到相应的上层协议。常用值包括ICMP(1)、TCP(6)和UDP(17)。
- 源IPv4地址——32位二进制值,始终为单播地址。
- 目的IPv4地址——32位二进制值,目的IPv4地址为单播、组播或广播地址。
互联网报头长度(IHL)、总长度和报头校验和字段用于识别和验证数据包;
其他字段用于重新排列分段的数据包:(当Router向具有较小MTU的另一种介质转发IPv4数据包时必须将它分片,)IPv4数据包用标识符、标志和片偏移量跟踪分段。
小结
IPv6数据包
IPv4的局限性:
- IPv4地址耗尽——IPv4 的可用唯一公有地址数量有限。
- 缺乏端到端连接——网络地址转换(NAT)为多种设备共享单一的公有 IPv4 地址提供方法,但内部网络主机的 IPv4 地址会隐藏起来,这会给需要端到端连接的技术造成难题。
- 增加的网络复杂性——NAT作为一种过渡到IPv6的机制,增加了网络的复杂性,造成了延迟且使故障排除更加困难。
IPv6解决了IPv4的限制并有着显著的功能提升,能更好地适应当前和可预见的网络需求。IPv6的功能提升包括:
- 更大的地址空间——128位分层编址(IPv4是32位)。
- 改进数据包处理过程——简化为更少的字段。
- 消除了对NAT的需求——公有IPv6地址数额巨大,不再需要NAT,这可避免需要端到端连接的应用程序遇到由NAT引起的故障。
IPv4 和 IPv6 地址空间的可视比较:
图4. IPv4和IPv6地址空间比较
IPv6较IPv4的一个重大改进是简化的IPv6报头,从而允许更高效地处理IPv6报头。简化IPv6报头包含40个二进制八位数的固定长度报头:
图5. IPv6数据包报头
IPv6数据包报头中的字段包括以下:
- 版本——包含一个4位二进制值0110,用于标识这是IPv6数据包。
- 流量类别——8位字段,相当于IPv4区分服务(DS)字段。
- 流标签——20位字段,建议所有含相同流标签的数据包接受相同类型的路由器处理。
- 负载长度——16位字段,IPv6数据包的数据部分长度,这不包括IPv6报头长度,它是固定的40字节报头。
- 下一报头——8位字段,相当于IPv4协议字段,表示数据包传送的数据负载类型,使网络层将数据传送到相应的上层协议。
- 跳数限制——8位字段,取代IPv4的TTL字段。与IPv4不同,IPv6不包含报头校验和,因为此功能同时在下层和上层执行,这意味着校验和不需要降低跳数时重新计算,提高了网络性能。
- 源IPv6地址——128位字段。
- 目的IPv6地址——128位字段。
IPv6数据包还可能包含扩展报头(EH),以便提供可选的网络层信息。扩展报头为可选项,位于IPv6报头及负载之间,用于分段、安全性、移动性支持等。
与IPv4不同,Router不会对路由的IPv6数据包分段。
小结
主机路由方式
主机转发决策:
源主机必须能够将数据包定向到目的主机。为此,主机终端设备将创建自己的路由表。
网络层的另一个作用是在主机之间转发数据包。主机可以将数据包发送至:
- 主机自己——主机可以向特定的地址(即环回接口,IPv4地址127.0.0.1,或者IPv6地址 ::1)发送数据包来向自己发起ping测试,从而测试主机上的 TCP/IP 协议堆栈。
- 本地主机——目的主机与发送主机位于同一本地网络,共享同一网络地址。
- 远程主机——位于远程网络上的目的主机,源和目的主机不共享同一个网络地址。
源端设备确定目的IP是否与本身源设备所在网络相同,确定方法因IP版本不同而异:
- 在IPv4中,使用源设备的子网掩码、 IPv4 地址和目的 IPv4 地址进行此判断。
- 在IPv6中,本地路由器将本地网络地址(前缀)通告给网络上的所有设备。
如果源设备发送数据包到与本主机在同一IP网络中的设备,则数据包仅是被转发出主机接口,然后经过中间设备(LAN交换机/无线接入点WAP等)直接到达目的设备;
如果源设备发送数据包到远程目的设备,则需要借助路由器和路由。
- 路由是确定到达目的地之最佳路径的过程。
- 连接到本地网段的路由器称为默认网关,是子网与外网连接的设备,可以将流量路由到其他网络。需要使用默认网关来发送本地网络之外的流量,若没有默认网关、未配置默认网关地址或默认网关关闭,则无法将流量转发到本地网络之外。
默认路由:
在网络上,默认网关通常是具有以下功能的路由器:
- 它拥有与本地网络其他主机位于相同地址范围的本地 IP 地址;
- 它可以接受数据到本地网络,并将数据转发出本地网络;
- 它向其他网络路由流量。
主机的路由器通常包括默认网关。在IPv4中,主机通过动态主机配置协议(DHCP)动态接收默认网络IP地址,或手动配置;在IPv6中,Router通告默认网关地址,或在主机上手动配置。
配置默认网关会在PC的路由表中创建一个默认路由,这是计算机尝试联系远程网络时所用的路由或路径。下图中,PC1 和 PC2 均配置了 IPv4 地址 192.168.10.1作为默认网关。
图6. PC1 和 PC2 使用默认路由将去往远程网络的所有流量发送到 R1
小结
路由简介
路由表显示了Router的所有已知IPv4目的地路由。
当一台主机发送数据包到另一条主机时,它将查询路由表来确定将数据包发送到哪里。如果目的主机位于远程网络,数据包被转发到默认网关。
当数据包到达Router接口时,Router会检查数据包的目的IP并搜索其路由表以确定将数据包转发到何处。路由表包含所有已知网络地址(前缀)以及数据包转发位置的列表,这些条目称为路由条目或路由,路由器将使用最佳(最长)匹配的路由条目转发数据包。
路由表存储三种类型的路由条目:
- 直连网络——当接口配置了IP地址并激活时,Router添加直连路由。每个Router接口均连接到一个不同的网段。
- 远程网络——Router通过管理员明确配置 或 使用动态路由协议交换路由信息来学习远程网络。
- 默认路由——当IP路由表中没有更好(更长)的匹配时,将使用默认路由。路由器可通过两种方式获知远程网络:
路由器通过两种方式获知远程网络:
- 手动
- 动态
静态路由:手动配置的路由条目,包括远程网络地址和下一跳路由器的IP地址。下图是在R1上手动配置的静态路由的示例。
图7. 使用静态路由手动配置R1以达到10.1.1.0/24 网络。
静态路由的特征:
- 必须手动配置静态路由。
- 若拓扑发生变化,且静态路由不可用,需管理员重新配置静态路由。
- 适用于小型网络且当冗余链路很少或没有的情况。
- 通常与动态路由协议一起用于配置默认路由。
动态路由
动态路由协议可让Router自动与其他Router共享路由信息(学习远程网络包括默认路由),当网络拓扑结构发生变化,Router将使用动态路由协议共享此信息,并自动更新路由表。
动态路由协议包括OSPF和增强型内部网关路由协议(EIGRP)。
网络管理员在动态路由协议中启用直连网络后,协议自动执行以下操作:
- 发现远程网络
- 维护最新路由信息
- 选择通往目的网络的最佳路径
- 当前路径无法再使用时尝试找出新的最佳路径
注:通常一些Router会同时使用静态路由和动态路由协议。
IPv4 路由表简介
特权 EXEC 模式命令 show ip route 用于查看思科 IOS 路由器上的 IPv4 路由表。每个路由表条目的开头都有一个代码,用于标识路由的类型或路由的学习方式。常见路由源(代码)包括以下内容:
- L - 直连的本地接口 IP 地址
- C - 直连网络
- S - 静态路由由管理员手动配置
- O - OSPF
- D - EIGRP