简介
UDP协议,只做了运输层协议所能做的最少工作,除了复用/分解功能及少量的差错检测之外,几乎没有对应用层传下来的报文增加别的东西。
UDP从应用进程得到数据,附加上用于多路复用/分解服务的源和目的端口号字段,以及两个其他的小字段,就将形成的报文段交给网络层。网络层将该运输层报文段封装到一个IP数据报中,然后尽力而为地尝试将此报文段交付给接受主机。
如果该报文段能够到达接受主机,UDP使用目的端口号将报文段中的数据交付给正确的应用进程。
UDP的特点
- UDP是无连接的,在发送报文段之前,发送方和接收方的运输层实体之间没有握手
- 不需要维护连接状态,可以支持更多的活跃用户
- UDP使用最大努力交付,但是不保证可靠交付;可靠交付由应用层保证可靠和顺序交付
- UDP是面向报文的,适合一次性传输少量数据的网络应用
- 如网络游戏,可以容忍一定程度的丢包现象,但是往往对时延有很高的要求
- UDP没有拥塞控制,适合很多实时应用
- UDP首部开销小,只有8Byte,而TCP首部是20Byte
UDP报文段结构
从图中可以看到,UDP报文段结构比较简单,首部四个字段,每个字段由两个字节组成,分别指定了源、目的端口、数据报长度以及数据报是否有错。
UDP校验和提供了UDP的差错检测功能,检验和用于确定当UDP报文段从源到目的地移动过程中,其中的比特是否发生了改变,通过对报文段中所有的比特字进行反码运算,将结果放在检验和字段。接收方收到UDP报文后,再次进行计算,与检验和字段进行对比,即可判断是否产生了差错。
但是注意,UDP只提供了差错检测,却对差错恢复无能为力
参考
- 本文作者: xczll
- 本文链接: https://xczllgit.github.io/2020/03/29/computerscience/2020-03-29-transferUDP/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!