🔥博客主页: 我要成为C++领域大神
🎥系列专栏:【C++核心编程】 【计算机网络】 【Linux编程】 【操作系统】
❤️感谢大家点赞👍收藏⭐评论✍️
本博客致力于分享知识,欢迎大家共同学习和交流。


IP头的长度为20个字节,1个字节为8位,所以一共占160位
版本:占4位,用来说明当前IP协议的版本是IPv4还是IPv6。
首部长度:占4位,指的是IP数据报首部的大小。
区分服务:占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(DifferentiatedServices)。只有在使用区分服务时,这个字段才起作用,在一般的情况下都不使用这个字段。
总长度:占了16位,指的是整个IP数据报的大小。
标识:占16位,数据在网络中的传输并不一定是先发送先到达,要根据路由器的工作情况来判断。如果我们按照顺序发送两段数据,但是第一段数据后到达的,为了保证数据的处理顺序,就有了标识。标识使得数据在到达目的端的时候,可以按照数据发送的顺序进行处理
标志和片偏移:分别占4位和8位, 用于对数据进行拆包和确保数据相对位置的。当我们发送的数据>MSS最大大小时,需要对数据进行拆包。片偏移确保拆包后的每个数据片相对顺序不变。标志表示每个数据片是否是最后一个包,是否有分片。
区分标识与片偏移:标识是每个数据包编号,片偏移是对一个大数据包里的每个数据片进行编号。
生存时间:占8位,生存时间字段常用的英文缩写是TTL(Time To Live),表明这是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在互联网中兜圈子(例如从路由器R1转发到R2,再转发到R3,然后又转发到R1),因而白白消耗网络资源。
协议:占8位,协议字段,指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个协议进行处理。
首部校验和:占16位,防止数据被篡改,这个字段只检验数据报的首部,但不包括数据部分。每次检验后核对首部校验和,检查是否有篡改。是一种加密算法。
源地址和目的地址:都占32位,发送端的地址和目的端的地址。
可选字段:最多40个字节,用来支持排错、测量以及安全等措施。
填充:用来将首部补充成4位的整数倍
2万+





