网络层主要的作用是:转发和路由。
转发:将当前数据报的信息转发到下一个路由器/主机(通过一个转发表)。
路由:从源主机到目的主机的路径信息称为路由。
ip数据报的格式:
展开之后:
接下来说明各个字段的作用:
(1)版本号(4位):给出版本号,4:ipv4:6:ipv6.
(2)首部长度(4位):ip分组首部长度。
以4个字节为单位:0001表示首部长度为4个字节。0011表示首部长度为12个字节。(只是举例,可以知道首部的固定字节为20个字节,最少也应该是20个字节)。
(3)服务类型(TOS):区分服务。一般情况下不使用。
(4)总长度:ip分组的总字节数(首部+数据)。
最大的ip分组的总长度为:65535B;
最小的ip分组首部:20B;
Ip分组可以封装的最大数据:65535-20B;
(5)标识。标志位和片偏移稍后说。
(6)生存时间(TTL):ip分组在网络中可以通过的路由器数。
路由器转发一次分组,TTL-1;
如果TTL=0,路由器则丢弃该IP分组。
(7)协议:指示ip分组封装的是哪个协议的数据包。
实现复用/分解
6为tcp,表示的是TCP段。17是udp,表示的是UDP数据报。
(8)首部校验和:实现对ip分组首部的差错检测。
(9)源ip地址,目的地址。
(10)选项字段(可变):网络探测等。(基本没有)
ip分片:
最大传输单元(MTU)
网络链路存在MTU(最大传输单元)-链路层数据帧可封装数据的上限。
大ip分组向较小MTU链路转发时,可以(不一定分片)被“分片”。
一个ip分组可以被分为多片ip分组;
Ip分片到达目的主机后进行重组。
Ip首部的相关字段用于标识分片以及分片的相对顺序。
(1) 标识字段(16位):标识一个ip分组:ip协议利用一个计数器,每产生ip分组计数器加1,作为ip分组的标识。
(2)标志位(3位):
Df:(don’t fragment);
MF:(more fragment)。
Df = 1:禁止分片;df = 0:允许分片;mf = 1;非最后一片;mf = 0:最后一片(或者未进行分片)
(3)片偏移(13位):一个ip分组分片封装原ip分组数据的相对偏移量。
片偏移字段以8字节为单位
Ip分片过程中:
假设原ip分组总长度为l,带转发链路的MTU为m
若L>m并且DF=0,则可以进行分片
分片时每个分片的标识赋值原ip分组的标识
通常分片时,除了最后一片,其他分片均分为MTU允许的最大分片。
一个最大分片可封装的数据应该是8的倍数,因此,一个分片最大可封装的数据为:
需要总的片数:
每片的片偏移字段取值为: