ip数据报
1、介绍
ip数据报,也称为ip包,ip分组。
IP协议屏蔽了下层各种物理子网的差异,能够向上层提供统一格式的IP数据报。lP数据报采用数据报分组传输的方式,提供的服务是无连接方式。
tcp和udp的网络层都是基于ip数据报。
2、数据报格式
前面部分为固定的20字节,后面可变部分,长度可变
(1)版本,占4位,即ip协议版本。ipv4表示为4,0100
(2)首部长度,占4位,单位是4字节。一般就为5,0101,表示固定的首部字段。如果添加可变部分,则需要为4字节的整倍数,不足部分需要补全
(3)区分服务,占8位。一般未使用,为0x0000
(4)总长度,首部和数据之和,单位是字节,占2个字节。因此数据表最大长度65535字节。
实际中,ip层下面的数据链路层限制了最大传送单元MTU,maximum transfer unit。当一个数据报封装成链路帧时,数据报总长度不得超过下面的数据链路层的MTU值。
(5)标识,占16位。
- IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。
- 数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
- 分片和组装是受数据链路层影响,也就是说标识是在相邻两个主机间作用。接收后传递给下一个主机,则写入自己的标识。
- 下一主机接收后,根据自身下一传输过程的数据链路层MTU决定是否进行分片
(6)标志,占3位,但只有两位有意义
- 最低位记为MF,more fragment,为1标识后面还有分片的数据报,为0则表示当前是最后一个
- 中间位记为DF,don’t fragment,为0时有效才允许分片
(7)片偏移,占13位,单位是8个字节,指导接收方如何拼接。也就是说,除了最后一个分片,其余都必须是8字节的整倍数
(8)生存时间TTL,time to live,占8位,表明是数据报在网络中的寿命。在网络传输过程中,如果值为0时被丢弃,用于防止在网络中无限传递,消耗资源。
- 最初设计是单位为秒,后来改为设计为跳数,即每经过一个ip减1
(9)协议,占8位,指明上层的协议。tcp是6,0x06。udp是17,0x11
(10)首部校验和,占16位
(11)源地址,32位
(12)目的地址,32位
3、wireshark
(1)一般分析
(2)ip总长度受限于数据链路层的MTU值,列表中发现的最大值为1492,并未超出1500
(3)标识
对不同目的ip发送的ip分组,标识起始值一般是不同的。
对同一目的ip发送的ip分组,标识一般是依次递增1。