TCP(Transmission Control Protocol,传输控制协议)
是面向连接的协议,即在收发数据前,必须和对方建立可靠的连接,TCP的头部为20个字节。
UDP(User Datagram Protocol,用户数据报协议)
是一个面向无连接的协议,它以数据报(Datagram)的形式传输数据。在传输数据之前,源端和终端不需要建立连接,UDP的信息头部为8个字节,UDP使用 "尽最大努力交付" 的方式,导致了UDP不保证可靠交付。
区别
两种常用的传输层协议,在网络通信中有以下区别:
1. 连接性:
- TCP是面向连接的协议,通信双方在发送和接收数据之前需要先建立连接,并在连接的双方保持状态信息。
- UDP是面向无连接的协议,发送数据时不需要事先建立连接。每个数据包(称为数据报)都是独立的,相互之间没有依赖关系。
2. 数据传输方式:
- TCP提供面向字节流的传输方式,将数据分割成适当的大小并按顺序传输。数据以字节流的形式在网络上传输,保证数据的有序性。
- UDP以数据报(Datagram)的形式传输数据,每个数据报都有自己的标识和长度信息,可以独立地传输。每个数据报都是独立的,可能会被路由器拆分或重新组装。
3. 可靠性:
- TCP提供可靠的数据传输,通过序号、确认、重传、拥塞控制等机制来保证数据的完整性和有序性,但在网络拥塞时可能会产生延迟。
- UDP不提供数据的可靠传输,数据报可能会丢失或乱序。UDP适用于对实时性要求较高的应用,如音频、视频等,因为它能够更快速地传输数据。
4. 使用场景:
- TCP适用于需要可靠传输、数据顺序和错误校验的应用,如网页浏览、文件传输、电子邮件等。
- UDP适用于对实时性要求较高、数据传输速率高以及容忍少量数据丢失的应用,如视频流、语音通话、实时游戏等。
TCP可靠性机制
1. TCP是面向连接的协议,建立连接后发送和接收数据。UDP是无连接的协议,发送数据时不需要建立连接。
2. TCP提供可靠的数据传输,采用序列号、确认应答、重传和流量控制等机制来保证数据的完整性和顺序。UDP不提供可靠性保证,不进行序列号和重传,适用于实时性要求高的应用。
3. TCP使用滑动窗口协议进行流量控制,限制发送速率,防止数据丢失。TCP还有超时重传和拥塞控制机制来应对网络不稳定和拥塞。
4. UDP没有流量控制和拥塞控制机制,因此传输速度快,延迟较低,但无法保证可靠性。
TCP 报文
TCP 报文是 TCP 传输的的数据单元,也叫 报文段
1. 源端口号和目的端口号:用于标识发送方和接收方的应用进程。
2. 序列号:每个TCP报文段都有一个序列号,用于标识报文段中的数据在字节流中的位置。
3. 确认序列号:接收方发送给发送方的确认报文中包含的序列号,用于告知发送方已成功接收到的数据字节。
4. 标志位:TCP报文中的标志位用于控制连接的建立、维护和关闭,如SYN、ACK、FIN等。
5. 窗口大小:接收方通过通知发送方接收窗口大小来控制发送速率和缓存空间。
6. 校验和:用于检测报文在传输过程中是否发生了错误。
7. 首部长度:TCP首部的长度,用于提供从报文开始到数据开始位置之间的偏移量。
8. 选项:可选的TCP选项,用于提供一些额外的功能和参数设置。
9. 数据:TCP报文段中携带的数据部分。
UCP 报文
1. 源端口号和目的端口号:用于标识发送方和接收方的应用进程。
2. 长度:UDP报文的长度,包括报文头部和数据部分。
3. 校验和:用于检测报文在传输过程中是否发生了错误。
4. 数据:UDP报文中携带的数据部分。