首页 > 代码库 > UDP
UDP
UDP特点:
1,UDP无连接的
2,UDP尽最大努力交付,不保证可靠交付
3,UDP面向报文。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,一次发送一个报文。在接收方的UDP对IP层交上来的UDP用户数据报,除去首部后就原封不动交给上层的应用进程。
UDP没有拥塞控制:网络出现拥塞不会使源主机的发送速率降低。允许网络发送拥塞时丢失一些数据,但不允许数据有太大的时延。
UDP支持一对一,一对多,多对一和多对多的交互通信。
UDP的首部开销小:只有8个字节,比TCP的20字节首部要短。
UDP的首部格式
数据报UDP有两个字段,数据字段和首部字段。
首部字段:只有8个字节,由四个字段组成,每个字段的长度都是两个字节。
1,源端口: 在需要对方回信时选用,不需要时全为0。
2,目的端口:目的端口号,终点交付报文时必须要使用到
3,长度:UDP用户数据报的长度,最小值为8
4,检验和,检测UDP用户数据报在传输中是否有错,有错就丢弃。
当运输层从IP收到UDP数据报时,根据首部中目的端口交付,如果接收方UDP发现收到的报文中目的端口号不正确,就丢弃报文,并由ICMP发送端口不可达差错报文给发送方。
UDP数据报首部检验和计算:
计算检验和时,在UDP用户数据报前增加12个字节的伪首部,只在计算是临时添加,伪首部只是为了计算,不向上传递也不向下传。
IP数据报的检验和只检验IP数据报的首部,但UDP的检验和时把首部和数据部分一起检验。在发送方,首先先把全0放入检验和字段。再把伪首部以及UDP用户数据报看成由许多16位的字串接起来。若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全0字节,但此字节不发送。然后按二进制反码计算这些16位字的和。将此和的二进制反码写入检验和字段,就发送这样的UDP用户数据报。在接收方把收到的UDP用户数据报连同伪首部一起,按二进制反码求和。当无差错的时候应该全为1。否则就有差错,丢弃数据报。
UDP