UDP优化

来源:互联网 发布:c语言简单病毒代码 编辑:程序博客网 时间:2024/05/29 14:00

分组与数据报

分组是TCP/IP模型中第三层传输层的传输单位。分组与数据报的意义近似,但有微小差别。
* 分组(packet),分成两部分,包括控制信息(数据表头)和数据,可以用来指代任何格式的数据块。
* 数据报(datagram),通常用来描述那些通过不可靠服务传输的分组,既不保证送达,也不发送失败通知。

TCP与UDP的区别

  • TCP因其面向连接且具有顺序控制重发控制等机制,适用于需要可靠传输的应用;
  • TCP是面向字节流的协议,能够以多个分组形式发送应用程序的消息,对分组中的消息范围没有任何明确的限制。所有的分组都有序号,丢失重发,且按序交付。
  • UDP主要用于针对高速传输实时性有较高要求的通信或广播通信(RIP、DHCP等基于广播的协议依赖于UDP)。
  • UDP数据报必须封装在IP分组中,不能分片

UDP

UDP(User Datagram Protocol,用户数据报协议),面向无连接,随时发送数据。

UDP的无服务在以下4个方面表现:

  1. 不保证消息交付
    不确认,不重传,无超时
  2. 不保证交付顺序
    不设置包序号,不重排,不会发生队首阻塞
  3. 不跟踪连接状态
    不必建立连接或重启状态机
  4. 不需要拥塞控制
    不内置客户端或网络反馈机制

在UDP数据报中的源端口和校验和字段都是可选的。
UDP数据报

UDP处理简单高效,被用于:

  • 包总量较少的通信(DNS、SNMP等)
  • 视频、音频等多媒体通信(即时通信)
  • 限定于LAN等特定网络中的应用通信
  • 广播通信(广播、多播)

NAT与NAT穿透

TODO

UDP的优化

  • 应用程序必须容忍各种因特网路径条件
  • 应用程序应该控制传输速度
  • 应用程序应该对所有流量进行拥塞控制
  • 应用程序应该适用于TCP相近的带宽
  • 应用程序应该准备基于丢包的重发计数器
  • 应用程序应该不发送大于路径MTU的数据报
  • 应用程序应该处理数据报丢失、重复和重排
  • 应用程序应该足够稳定支持2分钟以上的交付延迟
  • 应用程序应该支持IPV4 UDP校验和,必须支持IPV6校验和
  • 应用程序可以在需要时使用keep-alive(最小间隔15s)

来源

  1. 《Web性能权威指南》
  2. 《图解TCP/IP》
0 0