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

问题

使用 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 数据报传输失败,增加失败的概率。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    JasonShi6306421阅读 1,262评论 0 1
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,990评论 1 13
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,096评论 0 8
  • 前言 这一篇文章主要围绕了IP协议,ICMP协议和UDP协议展开,希望可以在这里大概做一个总结,将《TCP/IP协...
    Noskthing阅读 3,134评论 5 57
  • 1 我喜欢尝试一些新的东西,比如一些运动项目。 前天早上锻炼完回家,我在朋友圈随手发了几张练习三角头倒立的照片和一...
    竹筒岁月阅读 165评论 4 5