UDP协议格式及特点

UDP:用户数据报协议

协议格式:

在这里插入图片描述

  1. 16位源端端口-16位对端端口:描述通信两端
  2. 16位报文长度:16为最大数字位65535,描述报文长度。限制了报文长度。Udp报文(包含报头)长度必须小于64k-8。
  3. 16位校验和:用来校验接受的数据是否和发送的数据一致。如果校验和出错, 就会直接丢弃。使用二进制反码求和算法:将报文每个字节取反相加得到的和。
  4. 应用数据:如果有应用数据的话,且长度小于64k-8。如果我们需要传输的数据超过64K-8, 就需要在应用层手动的分包, 多次发送, 并在接收端手动拼装

协议特性:

  1. 无连接:通信时不需要建立连接,只知道对方地址就可以发送数据。
  2. 不可靠:不保证数据有序,安全到达对端。没有丢包检测机制。
  3. 面向数据报:有最大长度限制的传输方式(小于64k-8),并且是整条交付。

关于UDP的收发缓冲区:

  1. UDP没有真正意义上的发送缓冲区. 调用sendto会直接交给内核, 由内核将数据传给网络层协议进行后续的传输动作
  2. UDP具有接收缓冲区. 但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致; 如果缓冲区满了, 再到达的UDP数据就会被丢弃.

对应用层编程影响

  1. 如果应用层要发送的数据过大,则需要在应用层进行分包操作。
  2. 如果上层进行了分包操作,则需要在应用层进行包序管理。
  3. 接收方recvfrom给的接收缓冲区必须足够大,至少能够取出一条数据。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值