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的报头长度

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gopher333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值