MTU 和 UDP (以及基于 UDP 的协议)

💡 原文中文,约3100字,阅读约需8分钟。
📝

内容提要

本文讨论了UDP协议中,当发送方不知道接收方的MTU大小时,如何拆包发送。PMTUD方法不适用于UDP协议,文章提到了DNS、TFTP、KCP和QUIC等协议的解决方法。QUIC的处理方法是每个IP包大小相同,如果传不过去,握手包也会被丢弃。

🎯

关键要点

  • UDP协议在发送方不知道接收方MTU大小时如何拆包发送的问题。
  • TCP协议通过MSS协商解决MTU问题,而UDP是无连接协议,没有类似机制。
  • PMTUD方法不适用于UDP,UDP包过大时会被丢弃,发送方无法得知。
  • 接收方会发送ICMP报文告知发送方包过大,但UDP没有重传机制。
  • UDP协议本身不处理MTU问题,开发者需自行实现相关机制。
  • DNS协议规定响应不能超过512字节,确保在大多数情况下安全传输。
  • TFTP协议默认512字节,用户需自行配置,配置不当会导致丢包。
  • KCP协议有默认值1400字节,支持通过函数设置MTU。
  • QUIC协议使用PMTUD,记录每个源IP和目的IP的MTU,默认MTU为1280字节。
  • QUIC的每个IP包大小相同,若传输失败,握手包也会被丢弃,确保协议的可靠性。
🏷️

标签

➡️

继续阅读