为什么不包括数据链路层协议头的大小



考虑三个IP网络A、B和C。网络A中的主机HA向网络C中的主机HC发送消息,每个消息包含180字节的应用程序数据。TCP层在消息前加上20字节的标头。这通过一个中间网络B.

每个网络中的最大数据包大小(包括20字节的IP报头)为:A:1000字节B:100字节C:1000字节网络A和B通过1Mbps链路连接,而B和C通过512Kbps链路连接(bps=比特每秒)。

Q). Assuming that the packets are correctly delivered, 
how many bytes, including headers, are delivered to the IP layer
at the destination for one application message, in the best case? 
Consider only data packets. 
(a) 200
(b) 220
(c) 240
(d) 260

我遇到了很多解决这个问题的方法,他们没有考虑数据链路层的以太网头或其他东西。下面给出了类似的解决方案

(D) 来自网络A的数据=180字节应用程序数据+20字节TCP标头+20字节IP标头。IP报头将在网络B中被剥离。因此,B将把(180+20)字节=200字节的数据分成3个段,即(80+80+40),以便为20字节的IP报头留出空间。因此,总IP报头开销=(20*3)字节=60字节。要传送到网络的总数据C=(80+80+40+60)字节=260字节。

问题是:

有多少字节。。。被传送到IP

在将帧传送到IP层之前,链路层标头会被剥离,因此您不需要计算它。

此外,问题并没有说明使用了什么链接层,所以你怎么可能知道它的标题有多大?

这里的关键是要理解IP使用不透明的碎片,因此当220字节的数据包[20字节的网络层标头+20字节的传输层标头+180字节的应用程序数据]进入网络B,因为网络B中的最大数据包大小为100字节,它会被分割。对于网络层,200字节的部分[20字节的tcp报头和180字节的应用程序数据]将是数据部分,因为网络层不关心其上面的层的报头。因此,在网络B中,220字节的分组被分段为:220[20|200]=100[20|80]+100[20|8]+60[20|800]

现在,当这些碎片离开网络B并进入网络C时,即使网络C可以支持更大的数据包大小,但由于不透明的碎片,这些数据包不会由网络B重新组装。因此,网络C中的主机接收3个片段,因此100+100+60=260个字节。

提示:IP使用不透明的碎片。ATM使用透明分段。因此,如果网络是ATM网络,则ans会有所不同。

最新更新