4.1 网络层的功能
网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。
OSI参考模型 | 各层次的传输单元 |
---|---|
应用层 | 报文 |
传输层 | 报文段 |
网络层 | IP数据报,分组(如果IP数据报太大就切割成分组) |
数据链路层 | 帧 |
物理层 | 比特 |
4.2 IP数据报
4.2.1 IP数据报格式
- 版本(version)
占 4 位,表示 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的IP协议版本号为 4,即 IPv4。 - 首部长度(网际报头长度IHL)
占 4 位,可表示的最大十进制数值是 15。这个字段所表示数的单位是 32 位字长(1 个 32 位字长是 4 字节)。因此,当 IP 的首部长度为 1111 时(即十进制的 15),首部长度就达到 60 字节。当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充。
数据部分永远在 4 字节的整数倍开始,这样在实现 IP 协议时较为方便。首部长度限制为 60 字节的缺点是,长度有时可能不够用,之所以限制长度为 60 字节,是希望用户尽量减少开销。最常用的首部长度就是 20 字节(即首部长度为 0101),这时不使用任何选项。 - 区分服务(tos)
也被称为服务类型,占 8 位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998 年 IETF 把这个字段改名为区分服务(Differentiated Services,DS)。只有在使用区分服务时,这个字段才起作用。 - 总长度(totlen)
首部和数据之和,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 2^16-1=65535B。 - 标识(identification)
用来标识数据报,占 16 位。IP 协议在存储器中维持一个计数器。每产生一个数据报,计数器就加 1,并将此值赋给标识字段。当数据报的长度超过网络的 MTU,而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。具有相同的标识字段值的分片报文会被重组成原来的数据报。 - 标志(flag)
占 3 位。标志字段最低位为MF,MF=1表示后面还有分片,MF=0表示最后一个分片;标志字段中间的一位是DF,DF=0才允许分片,DF=1禁止分片。 - 片偏移(offsetfrag)
占 13 位。当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。 - 生存时间(TTL)
表示数据报在网络中的寿命,占 8 位。该字段由发出数据报的源主机设置。其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源。
路由器在转发数据报之前,先把 TTL 值减 1。若 TTL 值减少到 0,则丢弃这个数据报,不再转发。因此,TTL 指明数据报在网络中最多可经过多少个路由器。TTL 的最大数值为 255。若把 TTL 的初始值设为 1,则表示这个数据报只能在本局域网中传送。 - 协议
表示该数据报文所携带的数据所使用的协议类型,占 8 位。该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。
例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。 - 首部检验和(checksum)
用于校验数据报的首部,占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。 - 源地址
表示数据报的源 IP 地址,占 32 位。 - 目的地址
表示数据报的目的 IP 地址,占 32 位。该字段用于校验发送是否正确。 - 可选字段
该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。 - 填充
由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。 - 数据部分
表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。
4.2.2 IP数据报分片
4.3 IPv4(Internet Protocol version 4,IPv4)
4.3.1 IPv4地址
IPv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。这些方面是由上层的传输协议处理的。
连接到因特网上的每台主机或路由器都分配一个 32比特 的全球唯一标识符。即 IP地址; 传统的IP地址是分类的地址,分为A、B、C、D、E五类。
无论哪类IP地址,都由网络号和主机号两部分组成,即IP地址={<网络号>,<主机号>}。网络号标志主机(路由器)所连接到的网络,一个网络号在整个因特网范围内是唯一的。 主机号标志该主机(路由器),一台主机号在它面前的网络号所指明的网络范围内必须是唯一的。