通用底层协议分析(UDP)

UDP的特点
UDP是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延.
UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表.
UDP是面向报文的.UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界.UDP一次交付一个完整的报文.
应用程序必须选择适合大小的报文:
若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率.
若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率.
UDP没有拥塞控制,因此网络中出现的拥塞不会使源主机的发送速率降低.这对某些实时应用是很重要的.很适合多媒体通信的要求.
UDP支持一对一,一对多,多对多,多对一的交互通信.
UDP首部开销小,只有8个字节,比TCP的20个字节的首部要短.
UDP的报文格式:
在这里插入图片描述
UDP报文的封装:
在这里插入图片描述
UDP校验和的计算和伪首部

  • 校验的内容:首部+数据区,包括源,目标IP
  • 计算校验和的过程:使用伪首部,但不发送伪首部
  • 伪首部的格式:
    在这里插入图片描述
    UDP-Lite
    Lightweight User Datagram Protocol:增加校验和字段使用的灵活性
    方法:数据=敏感(校验和计算的输⼊区,当这个区域的数据发⽣差错时,报⽂将被丢弃)+非敏感两个区域(数据不进⾏校验,即便这个区域的数据发⽣差错,报⽂也不
    会被丢弃)

    报文格式:
    在这里插入图片描述
    校验和覆盖:从报文首部的第一个字节开始计算校验和时,校验和覆盖的字节数.
    “0”:整个报文都被覆盖.
    规定:首部必须被覆盖.
    UDP端口
    实质:是一个可读,可写的软件结构,内部有一个接受报文缓冲区.每个端口有一个16bit整数标识.
    获得端口号源端口:任意 目标端口:集中式统一指派;动态指派
    常用的几个知名端口:53(DNS),88(kerberos),161(snmp)
    最大UDP数据报长度
    理论上:65535(IP长度)-20(IP头)-8(UDP头)=65507
    实际实现:例⼦(最⼤IP数据报⻓度):
  • ①SunOS 4.1.3 环回测试 :32767
  • ② BSD/386 - > SunOS 4.1.3 :32786
  • ③ Solaris 2.2 环回测试:65507
    结论:最⼤报⽂⻓度与源端和⽬的端实现有关.
    在这里插入图片描述
发布了69 篇原创文章 · 获赞 12 · 访问量 7373

猜你喜欢

转载自blog.csdn.net/weixin_43291459/article/details/103049850