三分钟搞懂传输层UDP协议


协议实现

在这里插入图片描述

  • 16位源端端口+16位对端端口:用于标识进程,描述主机上的通信两端进程
  • 16位数据报长度:用于描述一个完整包含头部的udp报文长度,所能存放的最大大小是65535(两个字节);因此就要求udp报文大小必须小于64K,因为udp报文长度是8个字节,因此sendto发送的数据大小必须小于64K-8
  • 16位校验和:采用二进制反码求和算法,检验接收到的数据和对方发送的数据是否一致

二进制反码求和算法:

在发送数据时,为了计算数据包的检验和。应该按如下步骤:

1、把校验和字段设置为0;

2、把需要校验的数据看成以16位为单位的数字组成,依次进行二进制反码求和;

3、把得到的结果存入校验和字段中

在接收数据时,计算数据包的检验和相对简单,按如下步骤:

1、把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段;

2、检查计算出的校验和的结果是否为0;

3、如果等于0,说明被整除,校验和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。

协议特性

无连接,不可靠,面向数据报

  • 无连接:通信时不需要建立连接,只需要知道对方地址就可以直接进行发送
  • 不可靠:不保证数据有效到达,更不保证数据安全到达(没有丢包检测机制,数据排序机制)
  • 面向数据报:描述的是一种有最大固定长度限制的传输方式

编程影响

  1. 如果传输的数据比较大,则需要程序员在应用层进行分包操作(将大数据分为多个小数据进行传输)
  2. 如果进行了分包操作,则需要程序员在应用层进行包序管理(应用层协议头中定义当前的包序)
  3. 数据报传输发送数据时,数据直接封装头部进行发送,接受方udp向上层交付数据是整条交付(不会交付半条数据或多条),因此recvfrom接收缓冲区空间必须给的足够大,能够放下一条完整的数据
    在这里插入图片描述
  4. udp优点:因为无连接,所以udp支持局域网广播传输(将数据发送给局域网广播地址,则表示将数据发送给局域网中所以主机)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值