UDP协议总论

UDP总论

UDP(User Datagram Protocol)用户数据报协议和TCP(Transmission Control Protocol)传输控制协议是传输层最重要的两个协议.相比TCP,UDP不能验证接收方是否收到,不想TCP那样具有可靠性.UDP只尽最大能力交付,适用于不要求传输质量只要求传输时效性的情况.

UDP数据包

UDP数据包由标头和数据组成.
数据包如下:

源端口(16bit)目的端口(16bit)长度(16bit)校验和(16bit)数据

校验和部分主要是用来校验数据包的正确性,UDP可以通过校验和来提供数据正确性验证,但无法自动修正.有错只能丢弃

UDP与TCP

UDP有如下几个特点:

  • 无连接
  • 不可靠
  • 不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制
  • 保留消息边界
  • 开销小、效率高

那么相对应的,TCP的特点如下:

  • 有连接
  • 可靠
  • 不保留消息边界
  • 开销比UDP大

无连接

TCP发送数据是必须建立连接的,而UDP不用建立连接.

不可靠

UDP发送数据不提供差错纠正、队列管理、重复消除、流量控制和拥塞控制

UDP不提供可靠交付,只会通过检验和去丢弃那些不完整的报文,尽最大努力来保证交付的可靠性。

1.UDP协议不提供重复消除
说UDP协议不可靠,是因为当你使用它发送数据时,并不能保证你的数据真的能被送到目标机器的目的端口,而是有可能发生丢失或重复。而TCP协议保证你发送的数据会被并且仅仅会被接收到一次。

2.UDP协议不提供队列管理
队列管理指的是是否保证消息的顺序。UDP发送12345个包可能由于网络的问题,接收方收到的数据包可能是13245这样的无序数据.或者会产生数据包丢失.

保留消息边界

在阻塞模式下,UDP的通信是以数据包作为界限的,即使server端的缓冲区再大也要按照client发包的次数来多次接收数据包,server只能一次一次的接收,client发送多少次,server就需接收多少次,即客户端分几次发送过来,服务端就必须按几次接收。
比如发送的数据包是:

这是一个UDP的数据示范

接收方收到的可能是:

一个U这是DP的数据示范

对照TCP而言:
发送数据包:

这是一个UDP的数据示范

接收数据可能是:

这是个UDP的数据包示

UDP应用

DNS协议是基于UDP协议的

基于DNS的组播网络,可以实现服务间的同步,但限于UDP报文的长度限制,不推荐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值