网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是"路径选择、路由及逻辑寻址"。
网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。
IP协议详解 虚拟互连网络实际的计算机网络是错综复杂的,物理设备通过使用IP协议,屏蔽了物理网络之间的差异,当网络中的主机使用IP协议连接时,则无需关注网络细节。IP协议使得复杂的实际网络变为一个虚拟互连的网络,还使得网络层可以屏蔽底层细节而专注网络层的数据转发,IP协议解决了在虚拟网络中数据报传输路径的问题。
IP地址长度为32位,常分成4个8位,IP地址常使用点分十进制来表示(0~255.0~255.0~255.0~255),也就是共有\(2^{32} = 4294961296\)个IP地址。下图是IP协议的格式:
我们来看看IP协议的首部: 4位版本 4位首部长度 8位服务类型(TOS) 16位总长度(字节)
16位标识 3位标志 13位片偏移
8位生存时间(TTL) 8位协议 16位首部校验和
32位源IP地址
32位目的IP地址
选项options(若有)
IP数据
版本:占4位,指的是IP协议的版本,通信双方的版本必须一致,当前主流版本是4,即IPv4,也有IPv6
首部位长度:占4位,最大数值为15,表示的是IP首部长度,单位是“32位字”(4个字节),也即是IP首部最大长度为60字节
总长度:占16位,最大数值为65535,表示的是IP数据报总长度(IP首部+IP数据)
TTL:占8位,表明IP数据报文在网络中的寿命,每经过一个设备,TTL减1,当TTL=0时,网络设备必须丢弃该报文。作用:避免数据在网络中无限传输,当这个网络报文找不到目的机器时,而进行无限传输,来浪费带宽资源
协议:占8位,表明IP数据所携带的具体数据是什么协议的(如:TCP、UDP等)
字段值 1 2 4 6 17 89 …
首部校验和:占16位,校验IP首部是否有出错
IP协议的转发流程在数据链路层的学习中我们知道了MAC地址表,由于IP协议的转发是通过逐跳(hop-by-hop)来实现的,所以在网络层中,存在一个类似于MAC地址表的路由表,路由表是存储的目的IP地址和下一跳IP地址的映射,计算机或者路由器都拥有路由表。路由表如下:
目的IP地址 下一跳IP地址IP1 IP4
IP2 IP5
IP3 IP6
… …
A设备向C设备在网络层中传输数据的过程如下:
A发出目的地为C的IP数据报,查询路由表发现下一跳为E
A将数据报发送给E
E查询路由表发现下一跳为F,将数据报发送给F
F查询路由表发现目的地C直接连接,将数据报发送给C
现在结合数据链路层和网络层,再来看一下跨设备传输数据的过程:
A发出目的地为C的IP数据报,查询路由表发现下一跳为E
A将IP数据报交给数据链路层,并告知目的MAC地址是E
数据链路层填充源MAC地址A和目的MAC地址E
数据链路层通过物理层将数据发送给E
E的数据链路层接收到数据帧,把帧数据交给网络层
E查询路由表,发现下一跳为F
E把数据报交给数据链路层,并告知目的MAC地址为F
E的数据链路层封装数据帧并发送
F的数据链路层接收到数据帧,把帧数据交给网络层
F查询路由表,发现下一跳为C
F把数据报交给数据链路层,并告知目的MAC地址为C
F的数据链路层F封装数据帧并发送