UDP协议

目录

1.UDP协议是传输层协议

2.UDP协议的特点

3.UDP协议报文格式

4.基于UDP的应用层协议


1.UDP协议是传输层协议

网络协议是分层的,UDP协议是属于传输层协议.

2.UDP协议的特点

<1>无连接

        发送端知道接收端的IP和端口号就直接进行传输,不需要与接收端建立连接.

<2>不可靠

        发送方不知道对方是否收到了信息. 如果因为网络故障数据无法发到对方,UDP协议层也不会给应用层返回任何错误信息.

<3>面向数据报

        以数据报为基本单位进行发送(每个数据报多大,不同的协议是有不同的约定的).

        发送的时候,一次至少发一个数据报.如果尝试发一个半,实际上只发出去了一个.

        接收的时候,一次至少接收一个数据报.如果尝试接收半个,剩下半个就丢失了.

<4>全双工

        UDP的socket既能读,也能写.

<5>缓冲区

        UDP只有接收缓冲区,没有发送缓冲区:

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

3.UDP协议报文格式

 也可以表示为:

 整个UDP数据报由报头载荷(应用层数据)组成.

报头中16位UDP长度 表示整个UDP数据报的最大长度.

而16位(2个字节)表示的数据范围是0-65535 byte,也就是说一个UDP数据报的最大长度就是64KB.

所以使用UDP传输数据的时候一定要警惕大的报文!如果报文长度超过64kb,此时就可能丢失一部分数据.

校验和:其实就是为了验证看当前数据是否出现问题了. 校验和往往是根据原始数据的内容来生成的.不同的内容生成的校验和也就不一样.如果数据在传输的过程中发生了改变(比特翻转),那么校验和也就不一样了.

如果校验和正确,不一定确保数据就是对的.

但是如果校验和不正确,就能说明数据一定是错的.

关于校验和如何进行校验可以查看这篇文章: 校验和如何进行校验

4.基于UDP的应用层协议

  • NFS: 网络文件系统
  • TFTP: 简单文件传输协议
  • DHCP: 动态主机配置协议
  • BOOTP: 启动协议(用于无盘设备启动)
  • DNS: 域名解析协议
  • 当然也包括自己写UDP程序时自定义的应用层协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值