计算机网络-传输层(1)UDP协议
UDP协议基于Internet IP协议,只提供两个基础功能:
-
分用/复用
分用:主机接收到IP数据报(datagram),每个数据报携带源IP地址、目的IP地址且携带一个传输层的段(Segment),每个段携带源端口号和目的端口号,主机收到Segment之后,传输层协议提取IP地址和端口号信息,将Segment导向相应的Socket。
复用:从多个Socket接收数据,为每块数据封装上头部信息,生成Segment,交给网络层
- 简单的错误校验
检测UDP段在传输中是否发生错误(如位翻转)
计算校验和前,要在UDP段前增加12字节伪首部,伪首部既不向下传递也不向上传递,仅仅是为了计算校验和。这样的校验和既检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了校验,还校验了数据部分(IP数据报的校验和只校验首部)
发送方将伪首部+UDP段的内容视为16-bit整数,计算所有整数的和,进位加在和的后面,将得到的值按位求反,得到校验和,放入UDP报文段的校验和字段;接收方计算校验和,将其与校验和字段进行对比。(相等只是没有检测出错,仍可能有错误)
UDP提供的是一种“尽力而为”服务,UDP段可能丢失、非按序到达。使用UDP的应用可通过在应用程序自身中建立可靠性机制来实现可靠数据传输。例如,可通过增加确认与重传机制来实现。
UDP是无连接的,UDP发送方和接收方之间不需要握手。
每个UDP段的处理独立于其他段。
UDP为什么存在?
(1)无需建立连接(减少延迟)
(2)实现简单:无需维护连接状态
(3)头部开销少
(4)没有拥塞控制: 应用可更好地控制发送时间和速率
UDP报文段如图所示: