美文网首页IT@程序员猿媛程序员
TCP UDP 数据包长度总结

TCP UDP 数据包长度总结

作者: 404d67ac8c12 | 来源:发表于2019-04-01 20:27 被阅读8次

以太网(Ethernet)数据帧的长度必须在 64Bytes-1518Bytes 字节之间,这是由于以太网传输电气方面限制的,EthernetII 协议报头结构如下:

| 目的地址(DMAC) | 源地址(SMAC) |  类型(TYPE) | 数据(DATA) | 校验(CRC) |
     6Bytes         6Bytes        4Bytes    46-1500Bytes   2Bytes

由于以太网最大的数据帧是 1518Bytes,刨去以太网帧的帧头(目标MAC地址,源MAC地址和类型)14Bytes 以及帧尾 CRC 校验部分4Bytes 那么剩下承载上层协议的地方也就是 Data 域最大就只能有1500Bytes 这个值我们就把它称之为 MTU。

  • UDP 包的大小就应该是 1500 - IP头(20) - UDP头(8) = 1472(BYTES)
  • TCP 包的大小就应该是 1500 - IP头(20) - TCP头(20) = 1460 (BYTES)

注:PPPoE导致MTU变小了,以太网的 MTU 是 1500,再减去PPP的包头包尾的开销(8Bytes),MTU 就变成1492。

MTU 对我们的 UDP 编程很重要,那如何查看路由的MTU值呢?

# windows OS: ping -f -l
$ ping -f -l 1472 www.bing.com
#如果提示:需要拆分数据包但是设置 DF。
#则表明 MTU 小于1500,不断改小data_length值,可以最终测算出gateway的MTU值。
   
#linux OS: ping -c -M do -s
$ ping -c 1 -M do -s 1472 www.bing.com 
#如果提示 Frag needed and DF set…… 
#则表明 MTU 小于 1500,可以再测以推算 gateway 的 MTU。

如果数据超过 MTU 范围,既 IP 数据报大于 1500 字节,发送方 IP 层就需要将数据包分成若干片,而接收方 IP 层就需要进行数据报的重组。更严重的是,如果使用UDP协议,当IP层组包发生错误,那么包就会被丢弃,接收方无法重组数据报,将导致丢弃整个IP数据报。UDP 不保证可靠传输。但是 TCP 发生组包错误时,该包会被重传,保证可靠传输。

因此,在普通的局域网环境下,建议将UDP的数据控制在1472字节以下为好。鉴于 Internet 上的标准 MTU 值为 576 字节,所以建议在进行 Internet 的 UDP 编程时,最好将 UDP 的数据长度控件在 548 字节(576-20-8)以内。

相关文章

  • TCP UDP 数据包长度总结

    以太网(Ethernet)数据帧的长度必须在 64Bytes-1518Bytes 字节之间,这是由于以太网传输电气...

  • 网络 Conclusion

    1. TCP和UDP TCP/UDP详细分析TCP是点对点的通信,UDP是广播TCP控制了数据包的发送序列的产生,...

  • 6.传输层协议UDP、TCP及可靠传输

    TCP/UDP协议 UDP 校验和 TCP 数据偏移 * 4 = 首部长度,数据偏移取值 5 - 14,首部长度 ...

  • IP、TCP、UDP数据包长度问题

    MTU:Maximum Transmit Unit,最大传输单元,即物理接口(数据链路层)提供给其上层最大一次传输...

  • Tcp和UDP

    //TCP和UDP区别:tcp建立连接后通过流来进行通讯,udp直接往外面扔数据包 class TcpSenter...

  • 构建UDP服务

    1. 什么是UDP服务? UDP又称用户数据包协议,与TCP一样同属于网络传输层。UDP与TCP最大的不同是UDP...

  • TCP、UDP、Unix Domain Socket

    TCP 面向字节流 UDP 面向数据包 Unix Domain Socket 面向连接

  • TCP和UDP的区别

    TCP和UDP的区别: TCP协议和UDP协议特性区别总结: TCP协议可靠;UDP协议不可靠 TCP协议是面向连...

  • TCP UDP IP最大报文长度

    UDP 对于UDP协议来说,整个包的最大长度为65535,其中包头长度是65535-20=65515。 TCP 对...

  • TCP和UDP总结(区别、优缺点、应用实例)

    TCP和UDP的区别和优缺点以及应用实例 TCP和UDP区别总结: TCP面向连接,UDP是无连接的TCP在开始数...

网友评论

    本文标题:TCP UDP 数据包长度总结

    本文链接:https://www.haomeiwen.com/subject/oztdbqtx.html