局域网中一个 UDP 包可以装多少数据?

2019-05-22  本文已影响0人  拾识物者

问题

使用 UDP 协议在局域网中一次传输最多能传多少数据?

分析

****以太网数据帧的最大长度为1500字节,即 IP 数据报文的长度,即数据链路层的MTU(最大传输单元)****

  1. 数据链路层 是什么东西? TCP/IP 协议分层,从下到上:数据链路层、网络层、运输层、应用层。见下图
TCP/IP 协议分层 职责简记 如何提供服务
数据链路层 物理传输,从驱动到网卡再到物理设备 发送和接收纯数据,不关心数据中的任何内容
网络层 网络拓扑结构,IP 定位网络节点 关心数据中的 IP,通过 IP 寻找到网络上的节点
传输层 点到点传输,TCP可靠传输,UDP基本传输 屏蔽网络层细节,提供上层简化的接口
应用层 特定应用,实现各种行为 特化协议的应用领域,更加抽象,给具体应用使用。
  1. IP 数据报 是什么东西? 是网络层传递给数据链路层的数据报文,也可以说是 IP 协议(网络层协议)的报文。

  2. 以太网 是什么东西? 就是局域网的数据链路层,受物理特性限制一次只能传递上层传递来的1500字节。

下图为 IP 数据报的详细格式:

可以看到,报头区占据 32 * 5 = 160 bits(不算可选部分),也就是 20 字节,那么留给上层协议的字节数就剩下 1500 - 20 = 1480 字节了。

也就是说,UDP 协议作为 IP 协议的上层,一次传输只剩下 1480 个字节了。UDP 报文的结构如下图所示:

可以看到,UDP 协议的报头占了 8 个字节。所以,UDP 留给上层的一次传输大小,只剩下了 1480 - 8 = 1472 个字节了。

结论

1500(以太网单次最大) - 20(IP协议占用) - 8(UDP协议占用) = 1472(留给应用的单次传输大小)

在局域网中使用 UDP 协议,最好限制单词传输数据在 1472 字节以内。

如果超了会发生什么?

在发送端,IP 协议会将数据分割成多个 IP 报文来发送;在接收端要进行数据报的重组。这样不但有分片和重组的计算开销,而且丢失一个 IP 数据报会导致整个 UDP 数据报传输失败,增加失败的概率。

上一篇下一篇

猜你喜欢

热点阅读