打印

[讨论] 学习IP首部的一点疑问

学习IP首部的一点疑问




关于4位首部长度——“首部长度指的是首部占32 bit字的数目。由于它是一个4比特字段,因此首部最长为60个字节。”
问题:为什么只是占32bit字的数目而不是占96bit字的数目?第二句话首部最长为60字节如何计算出来的?

关于服务类型(TOS)字段——“包括一个3 bit的优先权子字段(现在已被忽略)”
问题:这个已经被忽略的3bit优先权子字段被置为0么?

TOP

答问题“由于首部长度是一个4比特字段,因此首部最长为60个字节”:
由于4bit字段可以表示的最大值是15(1111),而首部长度指的是首部占32bit(32/8=4bytes),即4个字节,所以首部最长为60字节(15*4=60)^_^

TOP

答“首部长度指的是首部占32 bit字的数目”:
TCP/IP首部中的二进制整数在网络中传输时都要求以某种次序(又称作网络字节序)进行传输,也就是要求4个字节的32 bit值以下面的次序传输:
首先是0~7 bit,其次8~15 bit,然后1 6~23 bit,最后是24~31 bit。
而以其他形式存储二进制整数的机器,则必须在传输数据之前把首部转换成网络字节序。
所以是32bit,而不是96bit,或其他值。

TOP

谢谢shirley6667。
我的理解:传输完第一个0~31bit,会接着传输第二个0~31bit,第三个……直到IP首部传送完毕。
这个4位首部长度只是占第一个0~31bit字的数目,为什么不是占20字节的数目?

tos字段的3bit优先权子字段如何置位?

TOP

"传输完第一个0~31bit,会接着传输第二个0~31bit,第三个……直到IP首部传送完毕。"所谓的网络字节序就是这个意思。

“这个4位首部长度只是占第一个0~31bit字的数目,为什么不是占20字节的数目?”
首先要明白什么是首部,普通的IP首部长度为20字节,也就是现在图中标注的那20字节,如果加上图中后续的“选项”字段,则首部最长可达60字节。
再者这个4bit首部长度是首部占32bit字的数目,而不是占第一个0~31bit字的数目。这样看来,如果是普通的IP首部,由于长度为20字节,所以实际上可以看到它所占32bit字的数目是5(20字节*8=160bit,160/32=5),同样,在图中也可以看到该结果。此时,这个4bit用二进制表示应该是0101。
不知道这样的解释是不是lz想要的。另,由于tos字段中的3bit优先权子字段已被忽略,暂未找到相应资料,也希望借lz的帖子了解下

TOP

还是没理解呀

“再者这个4bit首部长度是首部占32bit字的数目,而不是占第一个0~31bit字的数目。”
按照上面的半句话,我的理解就是占第一个0~31bit。还是这个地方不明白。晕了

TOP

“再者这个4bit首部长度是首部占32bit字的数目,而不是占第一个0~31bit字的数目。”解释这个问题的关键就是什么是IP首部。

打个比方,当我们说人的头部的时候通常指的是从额头(或头顶)到下巴这部分(中间还有眼睛、鼻子、嘴巴等),偶尔会延长至脖子,而不是单纯的指额头,对吧?!同理,对于普通的IP首部,它主要包括版本、首部校验和、源IP地址以及目的IP地址等(如图所示),这些总长度为20字节,这些才是IP首部;就好像人的头部偶尔会延长至脖子一样,如果加上“选项“,IP首部的长度也会加长,但不会超过60字节(这个在2楼已经解释过)。

就如同完整的人除了头部之外还要有肩膀、四肢等一样,完整的IP数据报除了IP首部外,也需要加上必要的数据,这个图中也有显示。

呼呼,又说了一堆,不晓得ok了没
本帖最近评分记录
  • garnett_wu 菊花元 +5 积极解决会员疑问 2007-6-5 23:29

TOP

TOP