TCP/IP UDP/IP 传输数据的应用层包大小如何定

本文的写作起因:
本人负责项目中手机底层通信模块开发, 和做游戏的前端同事
沟通网络手游时的网络状况. 听到同事描述各种的网络环境
(咨询的是游戏更新时, 下载更新包的环境):
1. wifi连接情况, 正常的情况, 连接网络质量良好的 wifi
2. wifi连接情况, 两个wifi都可以自动连接的情况下, 手机一会连接 wifi-a, 一会 wifi-b
3. 3G网络连接(壕啊, 一款网络手游上百兆都有可能, 下载速度都可能比 使用运营商家用宽带服务的都快)
4. 2G网络连接(这个情况都有玩家更新 –b )

由以上场景, 当时联想到熟悉的词: MTU(Maximum Transmission Unit, 最大传输单元)
在各种网络环境下, 也包括PC端, 都有一个 MTU 的缩写词, 有时候家用网络优化,
百度搜索都有答案告诉你 修改系统 MTU 的值.

同时在自己的项目里, 对自己有个问题, 一次发多少大小以内的 tcp/udp 数据包合适?

通过查询资料, 做个记录:

首先描述结论:
1. TCP/IP 一次发送的数据包大小 建议不超过 1452
2. UDP/IP 一次发送的数据包大小 建议不超过 1464 1500 – 8(PPPoE) – 20(IP) – 8(udp) = 1464 范围内

参考文章1的描述:

维基百科的资料1

Media Maximum Transmission Unit (bytes) Notes
Internet IPv4 Path MTU At least 68 Practical path MTUs are generally higher. Systems may use Path MTU Discovery to find the actual path MTU.
Internet IPv6 Path MTU At least 1280 Practical path MTUs are generally higher. Systems must use Path MTU Discovery to find the actual path MTU.
Ethernet v2 1500 Nearly all IP over Ethernet implementations use the Ethernet V2 frame format.
Ethernet with LLC and SNAP, PPPoE 1492
Ethernet Jumbo Frames 1501-9198 The limit varies by vendor. For correct interoperation, the whole Ethernet network must have the same MTU. Jumbo frames are usually only seen in special-purpose networks.
WLAN (802.11) 7981
Token Ring (802.5) 4464
FDDI 4352

参考文章4的截取内容(减少MTU值, 增加传输速率):

参考:
1. 老外文章 介绍 (TCP, IP, MTU and MSS magic numbers)
2. 国内博客讨论
3. PPPoE协议 ADSL 用户
4. PPPoE ADSL 用户建议设置MTU 1492 其实PPPoE 头部 6个字节, 预留的是8个
5. udp 协议介绍
6. 维基百科 MTU值
7. 关于网络编程中MTU、TCP、UDP优化配置的一些总结

原创文章,转载请注明: 转载自kaka_ace's blog

本文链接地址: TCP/IP UDP/IP 传输数据的应用层包大小如何定

发表评论

电子邮件地址不会被公开。 必填项已用*标注