IP 报文格式浅析

报文格式

IP 报文格式图片如下
在这里插入图片描述

  • 4 位版本:即 IP 协议的版本,目前只有 IPv4 和 IPv6 两个版本,因此 4 个 bit 足够表示版本号;
  • 4 位首部长度:与 TCP 中 4位首部长度单位一样,单位都是 4 个字节,比如此时该 4 - 8 位都为 1,能表示的最大长度为 15,因此首部长度最大为 15 * 4 = 60 字节;
  • 选项:用来补足 60 字节;
  • 8位服务类型(Type Of Service): 3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。 4位TOS分别表示: 最小延时、最大吞吐量、最高可靠性、最小成本。 这四者相互冲突, 只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重;
    16 位总长度:用来标识哪些包是用一个包拆分出来的;

与 UDP 不同,UDP 中有一个 16 位 UDP 长度,也表示 UDP 数据报有多少个字节。16 位 UDP 长度最多有 65507 个字节的数据,因此 UDP 传输数据最多能传送 65507 个字节的数据。
但是,IP 协议中自身支持 拆包和组包,不管传输层传送过来多少个字节的数据,IP 会根据情况进行拆包,在接收方进行组包。
关于 UDP 传输数据量的解析,感兴趣可以看一下我写的另外一篇博客 UDP报文格式浅析

  • 13 位片偏移:通过这个片偏移来区分拆出来的包的顺序。即谁在前谁在后;
  • 3 位标志:识别当前拆出来的包是否是最后一个包,如果标志位为 0,则标志着到达最后一个分片。类似于链表用 null 来表示结束标志。
  • 8 位生存时间:一个 IP 数据报有一个初始的生存时间,每次这个 IP 数据报经过一个设备转发,TTL 就 - 1,直到减为 0 ,意味着这个包永远到达不了对方,于是就被丢弃。

类似于网购了一件衣服,但是地址不准确,快递小哥一直不能将这个快递送达,因此这个包就退回给卖家,但是网络传输中是直接将这个包丢弃的。
这样的机制存在是很重要的,如果没有这个机制,那么网络中就会有很多没有送达的包或者非法的包,占用了很大的空间。

  • 8 位协议:明确指出这个 IP 数据报的数据部分携带的是传输层的哪个协议。
  • 16 位首部检验和:验证首部数据是否正确(只验证 IP 协议首部);
  • 32 位源 IP:发送方的 IP 地址;
  • 32 位目的 IP:接收方的 IP 地址;
  • 数据:传输层的数据。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值