IP报文字段


在这里插入图片描述

4位版本号

代表是ipv4, 还是ipv6协议

4位首部长度

代表ip的报文头部长度, 变长的

8位服务类型

就是代表这个ip更注重于什么要求
在这里插入图片描述

16位总长度

ip报文的总长度, 最大为2的16次方为64K, 和UDP一样最大长度为64K
但是他们两个有个区别是, UDP不支持自动的拆包和组包
想要实现需要用户自己在应用层实现. 但是ip协议, 支持自动的拆包和组包
下面要介绍的三个字段则是用来辅助拆包和组包的

16位标识, 3位标志, 13位片偏移

这三个字段是用来实现拆包和组包的, 当TCP报文长度超出范围时, 就会进行拆包和组包
下面就来说明一下, 比如我现在有a, b, c, d 四个ip包, 他们是由同一个TCP报文拆解下来的.
16位标识 : 代表这几个包是属于同一个数据报的吗, 如果16位标识都相同, 那么就代表属于同一个报文中的.
13位位偏移 : 按照偏移量的大小, 来确认先后的顺序. a的偏移量小于b的偏移量, b小于c, c小于d . 那么先后的顺序就是 a, b, c, d 防止"后发先至"
3位标志 : 这个的作用只有一个确认是否到达结尾, 就相当于链表的NULL
比如a:0 > b:0 > c :0 > d : 1
d为1, 代表此处的组装就可以结束了, 因为他是最后一个需要组装的了

8位生存时间TTL

表示一个数据报在网络上能传输多久(代表可用经过几个路由器转发)
初始值一般是64(可配置)
每次进过一个路由器转发, 他的值就会减1如果减到了0, 这个包就认为不可达, 将会被丢弃

8位协议号

8位协议号, 代表你传输层应用的是什么协议
如果是6那么就是TCP, 如果是17那么就是UDP

16位首部检验和

16位首部检验和的作用是用来检测ip报文头部的完整性

32位源IP地址和32位目的IP地址

ip地址其实是一个32位的整形二进制数字, 平常我们写的192.168.0.1, 这种叫做点分十进制, 是为了我们人理解起来方便, 就将每8位二进制, 化成十进制

后面就是一个完整的TCP数据报或者UDP数据报

值得一提的是TCP的总长度在TCP报文的头部并没有提及, 需要配合着IP报文才能算出.
TCP的报文数据长度 = (IP数据报总长度 - IP首部长度) - TCP的报头长度

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇

)">
下一篇>>