TCP 、UDP包的最大长度是多少?

1,292 views
Skip to first unread message

zhuj...@gmail.com

unread,
Mar 9, 2008, 9:55:40 PM3/9/08
to 高性能网络编程邮件列表
在TCP/UDP、IP协议中,存储数据长度的字段均为16位,因此,理论上讲,TCP或UDP层的数据包,当长度大于65535时,必然要分包传输;
IP层,亦然;在链路层进行传输时,当长度大于某个数值时,也需要分包传输(据说是1000多位)。
现在有个疑问UDP层,数据包发送的最大是多少;TCP一次发送的最大长度是多少呢,IP层呢,链路层能,到多少就要分包发送?
谢谢

zhuj...@gmail.com

unread,
Mar 9, 2008, 10:03:54 PM3/9/08
to 高性能网络编程邮件列表

忘了说了,在数据链路层分包的大小应该与防落类型有关,如以太网,…………

xxmplus

unread,
Mar 9, 2008, 10:05:27 PM3/9/08
to dev4s...@googlegroups.com
ip层和ethernet上都是有mtu决定,一般是1500,算上包头阿什么的还要小一点,tcp层上是mss决定。udp包头里有长度,16个bit,理论上度是65536,算上包头还要小一点。

你有空打那么多字,还不如google一下,什么都有了

2008/3/10 zhuj...@gmail.com <zhuj...@gmail.com>:

--
Any complex technology which doesn't come with documentation must be the best
available.

绝对零度

unread,
Mar 10, 2008, 4:22:22 AM3/10/08
to 高性能网络编程邮件列表
以太网一个数据包最大长度1514字节,那么IP包最大为1500,至少TCP和UDP,要看IP协议里面是否有router等等,不能一概而论,如果
以最简单的局域网来说,那么是1480个字节。

On 3月10日, 上午9时55分, "zhujt1...@gmail.com" <zhujt1...@gmail.com> wrote:

zhuj...@gmail.com

unread,
Mar 10, 2008, 10:01:44 PM3/10/08
to 高性能网络编程邮件列表
谢谢楼上两位的帮助!
大概的总结一下:

传输层:
对于UDP协议来说,整个包的最大长度为65535,其中包头长度是65535-20=65515;
对于TCP协议来说,整个包的最大长度是由最大传输大小(MSS,Maxitum Segment Size)决定,MSS就是TCP数据包每次能够传
输的最大数据分段。为了达到最佳的传输效能TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值代替(需
要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会根据双方提供的MSS值得最小值
确定为这次连接的最大MSS值。

IP层:

对于IP协议来说,IP包的大小由MTU决定(IP数据包长度就是MTU-28(包头长度)。 MTU值越大,封包就越大,理论上可增加传送速率,但
MTU值又不能设得太大,因为封包太大,传送时出现错误的机会大增。一般默认的设置,PPPoE连接的最高MTU值是1492, 而以太网
(Ethernet)的最高MTU值则是1500,而在Internet上,默认的MTU大小是576字节

大家看看还是那么问题?
感谢XXplus和绝对零度

sunway

unread,
Mar 11, 2008, 1:40:46 AM3/11/08
to 高性能网络编程邮件列表
实际UDP的包长度不要超过MTU值,一般不建议超过1K。
Reply all
Reply to author
Forward
0 new messages