(2020.08.04)
User Datagram Protocol (UDP)
无连接协议connectionless protocol
通信之前不建立发送方和接收方的连接,双方运输层实体之间没有握手。
(2020.08.06)
过程
RFC768定义的UDP做了运输协议能够做的最少的工作。除了服用和少量的差错检测,没有对IP增加别的东西,差不多是和IP直接打交道。UDP从应用层得到数据,附加上用于多路复用/分解服务的源和目的端口号字段,以及两个其他的小字段,然后将形成的报文段交给网络层。网络层将该运输层报文段封装到一个IP数据报中,尽力将此报文交付给接收主机。例如,DNS。
UDP的特性
- 运输层接收到来自应用层的数据即刻打包发送到网络层。而TCP则由于拥塞控制机制等原因会抑制运输层发送。一些实时应用要求最小的发送速率,不希望过分延迟发送。
- 无须建立连接,没有TCP连接初的三次握手,不会引入连接时延。
- 无连接状态。TCP需要在端系统中维护连接状态,此连接状态包括接收和发送缓存、拥塞控制参数以及序号和确认号的参数,对于可靠连接,这些是必要的。UDP不维护连接状态,也不需要维护这些参数。
使用UDP的协议看重快速传输,而相对不需要特别可靠。
UDP/TCP混用的应用
多媒体应用、视频会议
可加入可靠性机制
Google Chrome浏览器中的QUIC协议,在UDP纸上的应用层协议中实现了可靠性。
(2020.08.05)
socket
UDP socket套接字由两个元素做标识,即目的的IP地址和端口地址。相比之下,TCP的socket由四个元素做标识,即源IP,源端口号,目的IP,目的端口。
Well-known port number周知端口号
端口号是16bit二进制数范围是[0, 65535],其中的[0,1023]是周至端口号,为应用层协议保留,是受限制的。如HTTP应用port 80,FTP用port 21。UDP的端口号分配范围是[1024,65535]。
UDP packet 结构
head+data
UDP head
长度:四个字段,各两个字节,共8个字节bytes,64 bites.
字段:源端口号,目的端口号,长度,检验和(checksum)。其中的长度指示了UDP报文段的字节数(head+data)。检验和用于判断数据从sndr到rcvr时,其中的比特是否发生了改变(但不负责纠正)。
检验和checksum
发送方的UDP对报文段所有16bit字的和进行反码运算,求和过程中遇到任何溢出都回卷(我理解是忽略的意思)。得到的反码作为checksum。根据了系统设计中的端到端原则(end-to-end principle),即,在既无法确保逐链路的可靠性,又无法确保内存中差错检测的情况下,如果端到端数据传输服务要提供差错检测,UDP就必须在端到端基础上在运输层提供差错检测。
Reference
- 计算机网络(自顶向下方法)原书第7版,James F. Kruose and etc., 陈鸣 译, 机械工业出版社,2019年
网友评论