无连接传输协议-UDP

Connectionless transport protocol-UDP

Posted by Chase Gu on November 6, 2019

3.3 无连接传输协议-UDP

目录:计算机网络-课程笔记目录

简介

  • 基于Internet IP协议

    • 复用/分用
    • 简单的错误校验->没有纠正
  • 为什么在传输层做错误检测?

    • 端到端原则:不能确保每一个链路中都有链路检测
    • 即使每一个链路都有检测,但是路由转发过程中也有可能
  • “Best effort”服务,UDP段可能(几乎把Internet裸露提供给应用层)

    • 丢失
    • 非按序到达
  • 无连接

    • 不需要握手
    • UDP段处理独立于其他段
  • UDP存在的价值

    • 无需建立连接,显著减少延迟(DNS使用UDP)
    • 实现简单:无需维护连接状态
    • 头部开销少
      • 8字节
      • PS:TCP20字节
    • 没有拥塞控制:应用可以更好地控制发送时间和速率
      • TCP自己会控制速率,不是百分之百听从于上层应用
  • 用途

    • 常用于流媒体
      • 容忍丢失
      • 速率敏感
    • DNS
    • SNMP
  • 如何在UDP上实现可靠数据传输?

    • 在应用层增加可靠性机制
    • 应用特定的错误恢复机制
  • UDP报文段

    UDP报文段

UDP校验和(Checksum)

  • 目的:检测UDP段在传输中是否发生错误(如位反转)

  • 发送方

    • 将段的内容视为16-bit整数
    • 校验和计算:计算所有整数的和,进位加在和的后面(就是+1,见下面的例子),将得到的值按位求反,得到校验和
    • 发送方将校验和放入校验和字段
  • 接收方

    • 计算所接收端的校验和
    • 将其与校验和字段进行对比
      • 不相等:检测出错误
      • 相等:没有检测出错误,但有可能有错误
  • 示例

    • 注意:最高位进位必须加进去

    • 1110011001100110

      1101010101010101

    11011101110111011(第一位1取出来,然后加到该数上)

    1011101110111100(+1结果)

    0100010001000011(取反,校验和)