无连接传输UDP
UDP只是提供了传输层协议能够做的最少的工作.除了复用/分解功能以及少量的差错检验外,他几乎没有对IP增加别的功能.
UDP不提供可靠数据传输服务,但是也有许多适合于UDP的应用程序,主要原因如下:
- 关于发送什么样的数据以及何时发送的应用层控制更为精确.采用UDP是,只要应用进程将数据传递给UDP,UDP就会将次数据打包进UDP报文段并立即交给网络层.实时应用更适合UDP.
- 无需建立连接.UDP不需要建立连接的过程,不需要任何准备即可进行数据传输.因此他不会引入建立连接的时延.HTTP使用TCP而不是UDP,因为其对具有文本数据的web页面来说,可靠性很重要.用于Chrome浏览器的QUIC协议将UDP最为其支撑的传输层协议并在UDP之上的应用层协议中实现可靠性.
- 无连接状态.某些特定应用程序使用UDP一般能支持更多的活跃用户
- 分组首部开销小.UDP分组头部仅有8字节,TCP头部20个字节
UDP报文段结构
-
源端口和目标端口用于分解,将数据交给相应的套接字 -
长度(首部加数据)指示UDP报文段长度 -
检验和用来检查该报文段在传输过程中是否出现差错
UDP检验和
发送方的UDP对报文段中的所有16比特字的和进行反码运算,求和遇到任何溢出都被回卷.
接收方,全部4个16比特字(包括检验和)加在一起,如果分组中没有引入差错,则在接收方的和应该是全1
|