IP协议在网络层呢个,提供不可靠无连接的数据报传输服务,通过IP蹭的封装和解封装来实现。
总共分为:报头和数据区两大部分。
各字段作用如下:
1、版本:占4位,表示该IP数据报使用的IP协议版本。代表IPv4
2、首部长度:占4位,可表示最大数值是15个单位,1单位=4字节,所以IP首部最长位60字节。固定长度20字节。
3、服务类型(TOS、type of service),目前网络中不使用。
4、总长度:数据报的长度,占16位=首部+数据,单位为字节,因此理论上数据报的最大长度为2^16-1=65535字节,总长度不能超过最大传送单元MTU。
5、上层协议标识:占用8位二进制位,IP协议可以承载各种上层协议,目标端根据协议标识就可以把收到的IP数据报送到TCP或UDP等处理此报文的上层协议了。
6、标志:占3位。只有前2位有意义。最低位:MF MF=1:后边还有分片 MF=0:表示最后一个分片。
中间字段DF:DF=0时才允许分片。
7、片偏移:13位。较长数组在分片后某片在原分组中的相对位置。
8、生存时间:TTL。数据报在网络汇总可通过路由器的最大值。路由器数的两倍。
目的IP如果是错误,路由器会一直转发数据报,然后会在网络中一直兜圈,占用网络带宽网络资源。
9、协议:表示数据报使用的哪个协议。
IP协议就可以承载各种上层协议,目标端根据协议标识就把收到的IP数据包送到TCP等处理次报文的上层协议。
10、首部检验和:16位。只检测数据报首部部分。通过16位二进制反码求和算法。
原理:发送端首先将检验和字段置0,然后对头部中每16位二进制数进行反码求和的运算,并将结果存在校验和字段中。 由于接收方在计算过程中包含了发送方放在头部的校验和,因此,如果头部在传输过程中没有发生任何差错,那么接收方计算的结果应该是全1。
丢弃完,就不要再进行传送了。
经过一次路由器,IP部首就会改变。eg:TTL、标示、片偏移。
提高路由器的运行效率。
(1)、MTU:IP数据报在互联网上传输时,要经过多个物理网络才能抵达目的端。
不同的网络由于链路层和介质的物理特性不同,所以传输时,对数据帧的最大长度都有一个限制,这个限制就是最大传输单元MTU。
分片与重组大致过程如下:
(2)、数据报分片举例:
加入不考虑,头部的其他选择项,则用数据报文/(MTU-20),然后给分片后的每个报文加上首部即可。
上层协议标识:用于分片的时候,标识同一数据报的各分片。数据报使用的协议可能不一样,所以一样的数据报用一样地标识。
分片的时候,会把标识位复制一份,然后给每个分片的头部。
标志位: MF:片未完位。0:是最后一片,1:不是最后一片。
DF: 不分片位。0:允许分片,1:强制不允许分片。
片偏移:分片的顺序。标识分片在原来数据报文中的位置。
目的:为了在重组时,还能按照原来的顺序来组合。
一个单位标识8字节。所以偏移=分片后的首位/8
即:分好片的IP数据抵达目的主机,目标主机对各分片进行重组,恢复成分片之前的数据报。
逆向解析,重新组装即可。
原理:
(1)、根据“标识”字段确定收到的分片属于原来哪个IP数据报;
(2)、根据“标志”字段的“片未完MF”子字段可以确定分片是不是最后一个分片;
(3)、根据“偏移量”字段可以确定分片在原数据报中的位置。
4、IP数据报中的选项:
(1)、用来实现对数据报传输过程中的控制,如规定数据报要经过的路由;
(2)、进行网络测试,如一个数据报传输过程中经过了哪些路由器。