UDP报文头
UDP 协议头中只包含 4 个字段,分别是源端口、目的端口、长度和校验码,其中每一个字段都占 16 比特,即 2 字节,这 4 个字段的作用如下:
- 源端口是一个可选字段,它表示发送方进程的端口号,接收方可以使用该字段(不一定准确)向发送方发送信息;
- 目的端口是数据报接收方的端口号,它只在目标的 IP 地址下才有意义;
- 长度是协议头和数据报中数据长度的总和,表示整个数据报的大小;
- 校验码使用 IP 首部、UDP 首部和数据报中的数据进行计算,接收方可以通过校验码验证数据的准确性,发现传输过程中出现的问题。
UDP特点
简单高效:
- 面向无连接
- 报文头简单,只有8字节
- 对应用层数据不分段
关于分段:
应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。若报文太长,则到达IP层需要分片,降低效率。若太短,则传输效率会下降(举个例子,1字节的数据,加上20字节的UDP首部,再加上20字节的IP层首部,结果发了41字节的包只完成了1字节有用数据的交付)。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
UDP和TCP区别?
UDP 在传送数据之前不需要先建立连接,远地主机在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 确是一种最有效的工作方式(一般用于即时通信),比如: QQ 语音、 QQ 视频 、直播等等。
TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。 TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源),这一难以避免增加了许多开销,如确认,流量控制,计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。TCP 一般用于文件传输、发送和接收邮件、远程登录等场景。