查看: 2958|回复: 0

IP版本和包头长度字段的计算以及一些其他个别容易混淆的字段解码科普

[复制链接]
发表于 2013-4-3 14:24:13 | 显示全部楼层 |阅读模式
本帖最后由 xxx314 于 2013-4-3 14:30 编辑

IP版本和包头长度字段以及一些其他个别字段解码科普:
1.png

其中IP报头开始的IP版本和包头长度字段都由四位组成,这里的版本和头部长度为45,计算方式如下所示:
2.png

注:
这里如果是计算这个IP版本和头部长度,可以做移位+与操作即可得到相应的结果,这里计算示例如下:

01000101  
计算版本则通过(01000101>4)&11110000即可
计算头部长度则通过(01000101<4)&00001111即可

其实计算方法还可以有其他方式,上面只是列举了一种计算方式而已
8位(单字节)字段,位值是128, 64, 32, 16, 8, 4, 2, 1


IP version字段
IP版本字段的值0x 4清楚的指出了IP的版本是4。在Ipv6,这个值将是6,如下图所示


3.png

而有人会问,包长度不是20(不算选项字段,怎么会是5呢)
包头长度字段
RFC 791 IP通讯内容中明确指出包头字段的值必须乘以4得到IP包头的长度。这个字段需要是因为存在‘选项’字段(以4 个字节为单位增加)。包头字段的值0x5表示IP包头20个字节长(4个字节的5倍)



4.png

服务类型:0,表示当前IP数据包中没有使用服务类型字段;
注:
服务类型TOS8位,服务类型通知IP协议如何处理IP报。其中3位表示优先级(现已被忽略),4位表示服务类型TOS Type Of Service),1位未用但必须置零。4位的服务类型TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用参数。4位中只能置其中1位为1,一 旦某位被设置为1,则意味着要求数据报的传输应满足相应的要求。如果所有4位均为0,则意味着是一般服务。



5.png

总长度:16位,指定了IP数据报的总长(以字节为单位),包括报头和有效负载。总长度字段是指整个IP数据报的长度,以字节为单位。利用报头长度字段和总长度字段,我们就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据报最长可达65535字节。当数据报被分片时, 该字段的值也随着变化。尽管可以传送一个长达65535字节的IP数据报,但是大多数的链路层都会对它进行分片。而且,主机也要求不能接收超过576字节 的数据报。由于TCP把用户数据*********若干片,因此一般来说这个限制不会影响TCP。但是,事实上现在大多数的实现(特别是那些支持网络文件系统,NFS的实现)允许超过8192字节的IP数据报。
总长度字段是IP报头中必要的内容,因为一些数据链路(如以太网)需要填充一些数据以达到最小长度。尽管以太网的最小帧长为46字节,但是IP数据可能会更短。如果没有总长度字段,那么IP层就不知道46字节中有多少是IP数据报的内容。

分段偏移:是赋予每个相连数据报段的一个数值。目的地的IP协议软件使用该分段号,将数据报段重新组合成正确的数据报


以上就是整理了一些日常过程中在IP层大家可能比较模糊的一些概念。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表