计算机网络-传输层:UDP协议

目录

一、概述

二、UDP协议

1.协议格式

2.协议特性

2.1无连接

2.2不可靠

2.3面向数据报

3.编程影响


一、概述

传输层:负责两端之间的数据传输;TCP&UDP协议。

二、UDP协议

1.协议格式

16位源端端口&16位对端端口:

        描述通信两端(谁发送的,谁处理)

16位数据报长度:

        描述报文长度(包含头部在内),限制udp报文必须小于64k;

        sendto发送数据时,能够发送的最大数据大小(64k-8);

16位校验和:

        用于校验接收到的数据是否与对方发送的数据一致:

        校验方法:二进制反码求和算法

        1)发送方将报文组织完毕后,将校验和字段置为0;

        2)从第0字节开始(包含头部),对每个字节进行取反,然后求和;

        3)若求和过程中,数据大小超过16位,则截断,将高位与低16位继续求和;

        4)最终得到2字节的校验和数据,然后填充到校验和字段中,发送数据;

        5)接收方收到数据,同样对数据进行二进制反码求和,最终得到结果0;

        若收到的数据与发送的数据不一致,则udp会将该数据丢弃。

2.协议特性

协议特性:无连接,不可靠,面向数据报

2.1无连接

        通信的时候,不需要建立连接,只要知道对方地址就可以发送数据。

2.2不可靠

        不保证数据能够安全到达对端;也不保证数据有序到达对端。

2.3面向数据报

        无连接,不可靠,有固定最大长度限制的传输方式,必须小于64k。

3.编程影响

        1.udp不保证数据安全到达对端,可能存在丢包问题。

        2.udp不保证数据有序到达对端。

        所以需要程序员在应用层进行丢包检测以及丢包重传,以及鲍旭管理;

        3.udp面向数据报有固定最大长度限制64k(数据长度64k-8)。

        所以sendto发送数据时,需要注意给予的数据不能太大,太大则需要分包,分包则需要进行包序管理。

        4.udp要求数据整条交付,不能交付半条或多条。

        所以程序员recvfrom接收数据的时候,缓冲区需要足够大,以保证能够获取一条完整数据;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hey小孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值