TCP与UDP是TCP/IP体系中传输层最重要的两种协议。TCP传输控制协议,UDP用户数据报协议。
UDP在传输数据之前不需要先建立连接,远地主机的传输层在收到UDP报文之后,不需要给出任何确认。TCP则提供面向连接的服务。在传输数据之前必须先建立连接,数据传送结束后要释放连接。TCP不提供广播或多播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免的增加了开销,如确认、流量监控、计时器以及连接管理等。
TCP和UDP的区别
- UDP是无连接的,即发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延;TCP是面向连接的运输层协议,在使用TCP协议前必须先建立TCP连接。在数据传输结束后,必须释放连接。
- UDP使用尽最大努力交付,即不保证可靠交付;TCP提供可靠交付服务。
- UDP是面向报文通信;TCP面向字节流。
- UDP没有拥塞控制,当网络出现拥塞时不会使源主机的发送速率降低;TCP存在拥塞控制
- UDP支持一对一、一对多、多对一和多对多的交互通信;每一条TCP的连接只能有两个端点,每一条TCP连接只能是点对点(一对一)。
- UDP的首部开销小,只有8个字节;TCP的首部有20个字节。
UDP首部格式
UDP首部字段只有8个字节,由四个字段组成,每个字段长度都是2个字节。
- 源端口 源端口号。在需要对方回信时使用,不需要时全为0。
- 目的端口 目的端口号。在终点交付报文时使用
- 长度 UDP用户数据报的长度,最小值是8(仅有首部)。
- 检验和 检测用户数据报在传输中是否有错,有错就丢弃。
TCP首部格式
TCP首部字段的最小长度是20个字节(固定部分)。
- 源端口和目的端口 各占2个字节,分别写入源端口号和目的端口号。
- 序号 占4个字节。序号范围是[0,2^32-1],共2^32(即4284967296)个序号
- 确认号 占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。
- 数据偏移 占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。
- 保留 占6位。
- 紧急URG
- 确认ACK
- 推送PSH
- 复位RST
- 同步SYN
- 终止FIN
- 窗口 占2个字节。
- 检验和 占2个字节。
- 紧急指针 占2个字节。
- 选项 长度可变,最长可达40个字节。当没有运用选项时,TCP的首部是20个字节。