关于每一层数据的范围
来源:11-2 UDP协议详解

搬砖羊驼
2020-07-17
我目前理解了:以太网协议中“帧”的数据范围由“帧首部”和“帧尾部”界定;IP协议和UDP协议的数据范围都是在首部中写明的(首部中的“长度”字段)
我现在的问题:UDP数据报是封装在IP数据报中的,IP数据报是封装在“帧”里的;UDP数据结束的地方也正是IP数据结束的地方,同时也是“‘帧’的数据”结束的地方(如图上绿线),那么难道不是只需要“帧尾部”来找到“‘帧’的数据”结束的地方,就能同时找到IP数据报和UDP数据报结束的地方了吗?
——我感觉将单个“‘帧’的数据”取出后,IP也好UDP也好,只要检测到后面没有别的数据了(图上绿线右边为空),就可以知道数据报结束了。
如果我这样理解没错的话,那为什么还要在IP首部和UDP首部花空间专门记录“数据报长度”呢?
写回答
1回答
-
从统一的角度来看,按照你理解的计算方式,理论上基本可以确认每一层协议报文的大小。
但是别忘了,计算机网络是分层次去工作的,每一层之间是相互独立的,如果从统一的角度去考虑这件事情的话,陈禹辰之间的耦合度就很高,每一层都不能独立的工作,这从设计方面来说并不是一个好的设计。
另外,对于一些报文,比如TCP报文的首部长度是不固定的,含有可变长字段,那么头部长度以及偏移的数据,都需要额外的记录下来,否则的话就无法分辨出首部的起始和结束,以及数据的起始和结束。
综上,数据长度的冗余是有必要的,希望对你有所帮助。112020-07-18
相似问题