1、UDP 协议
UDP 是一种无连接的,不可靠的传输层协议。它只提供了传输层需要实现的最低限度的功能,除了复用/分解功能和少量的差 错检测外,它几乎没有对 IP 增加其他的东西。UDP 协议适用于对实时性要求高的应用场景。
特点:
使用 UDP 时,在发送报文段之前,通信双方没有握手的过程,因此 UDP 被称为是无连接的传输层协议。因为没有握手 过程,相对于 TCP 来说,没有建立连接的时延。因为没有连接,所以不需要在端系统中保存连接的状态。
UDP 提供尽力而为的交付服务,也就是说 UDP 协议不保证数据的可靠交付。
UDP 没有拥塞控制和流量控制的机制,所以 UDP 报文段的发送速率没有限制。
因为一个 UDP 套接字只使用目的地址和目的端口来标识,所以 UDP 可以支持一对一、一对多、多对一和多对多的交互 通信。
UDP 首部小,只有 8 个字节。
报文结构:
UDP 报文段由首部和应用数据组成。报文段首部包含四个字段,分别是源端口号、目的端口号、长度和检验和,每个字段的长 度为两个字节。长度字段指的是整个报文段的长度,包含了首部和应用数据的大小。校验和是 UDP 提供的一种差错校验机制。 虽然提供了差错校验的机制,但是 UDP 对于差错的恢复无能为力。
2、TCP 协议
TCP 协议是面向连接的,提供可靠数据传输服务的传输层协议。
特点:
TCP 协议是面向连接的,在通信双方进行通信前,需要通过三次握手建立连接。它需要在端系统中维护双方连接的状态信息。
TCP 协议通过序号、确认号、定时重传、检验和等机制,来提供可靠的数据传输服务。
TCP 协议提供的是点对点的服务,即它是在单个发送方和单个接收方之间的连接。
TCP 协议提供的是全双工的服务,也就是说连接的双方的能够向对方发送和接收数据。
TCP 提供了拥塞控制机制,在网络拥塞的时候会控制发送数据的速率,有助于减少数据包的丢失和减轻网络中的拥塞程度。
TCP 提供了流量控制机制,保证了通信双方的发送和接收速率相同。如果接收方可接收的缓存很小时,发送方会降低发送 速率,避免因为缓存填满而造成的数据包的丢失。
TCP 报文结构:
TCP 报文段由首部和数据组成,它的首部一般为 20 个字节。
源端口和目的端口号用于报文段的多路复用和分解。
32 比特的序号和 32 比特的确认号,用与实现可靠数据运输服务。
16 比特的接收窗口字段用于实现流量控制,该字段表示接收方愿意接收的字节的数量。
4 比特的首部长度字段,该字段指示了以 32 比特的字为单位的 TCP 首部的长度。
6 比特的标志字段,ACK 字段用于指示确认序号的值是有效的,RST、SYN 和 FIN 比特用于连接建立和拆除。设置 PSH 字 段指示接收方应该立即将数据交给上层,URG 字段用来指示报文段里存在紧急的数据。
校验和提供了对数据的差错检测。