目录
一、TCP协议格式长啥样?
二、TCP协议属性解释
1)源端口号/目的端口号
2)序号/确认序号
3)TCP报头长度
4)保留位
5)标志位
6)窗口大小
7)校验和
8)紧急指针
9)选项
10)数据
三、TCP协议通讯的特点
四、TCP协议和UDP协议的应用场景对比
五、基于TCP的应用层协议
一、TCP协议格式长啥样?
二、TCP协议属性解释
1)源端口号/目的端口号
指数据发送端和数据接收端端口号,各占16个bit位。 |
2)序号/确认序号
序号用于标识数据包在传输过程中的位置,每一个数据包的序号都是唯一的。 |
接收端收到数据包后,会对序号进行确认并记录,以确保数据传输的完整性。同时,计算确认序号,将确认序号填入应答报文中。 |
确认序号用于接收端向发送端确认已接受的数据包的序号和指示下一个数据包序号。 |
序号和确认序号就是一系列具有大小关系的整数,描述了数据的先后顺序。 |
序号和确认序号各占32个bit位。 |
3)TCP报头长度
TCP报头长度这个属性占4个bit位,每个bit位指代4个字节。 |
TCP报头的长度是不固定的,最短20字节,根据选项内容,最长为60字节。 |
4)保留位
预留6个bit位,没有实际内容。 |
5)标志位
标志位名 | 说明(6个标志位各占一个bit位,使用0和1表示) |
URG | 紧急标志,表示紧急指针是否有效。 |
ACK | 确认标志,表示发来的数据已确认接收无误。 |
PSH | 提示接收端应用程序立刻从TCP缓冲区中把数据读取走。 |
RST | 复位报文段标志,用于请求重新建立连接。 |
SYN | 同步报文段标志,用于请求建立连接。 |
FIN | 结束报文段标志,用于通知对端,本端将结束通讯。 |
6)窗口大小
占16个bit位。用于表示接收端可以接受的数据量,用于控制发送端和接收端之间的数据传输速度。 |
可以动态调整,用以平衡发送端和接收端的传输速度。 |
7)校验和
占16个bit位。由发送端填充,接收端使用CRC校验,校验不通过则认为数据有误。 |
校验内容既包括首部,也报过数据(荷载)部分。 |
8)紧急指针
占16个bit位。用于标识紧急数据,通知接收端优先处理紧急数据。 |
9)选项
占40字节。选项主要包括多种可选的扩展选项。 |
这些选项可以增强TCP协议的可靠性和灵活性,但也增加了协议的复杂度和字节长度。 |
选项包括:4位首部长度属性的扩展因子、16位窗口大小属性的窗口扩展因子等。 |
10)数据
应用层数据包,即荷载。是字节流数据。 |
三、TCP协议通讯的特点
<1> 有连接 |
通信时会先建立连接,存储对端信息。 |
<2> 可靠传输 |
有确认和重传机制,发送数据后会期待确认应答。 |
<3> 面向字节流 |
使用字节流传输数据,读写灵活,但要注意处理好数据边界问题。 |
<4> 全双工 |
使用一个连接,既可以发送又可以接收数据。 |
四、TCP协议和UDP协议的应用场景对比
TCP协议和UDP协议有各自的应用领域。 |
TCP协议适用于有可靠传输要求,传输数据包较大的情况。TCP适用于绝大部分场景,但不支持广播(增加应用层代码可以实现)。 |
UDP适用于要求高速传输和实时性要求较高的通信领域,且天然支持广播。 |
五、基于TCP的应用层协议
基于TCP的应用层协议包括:HTTP、HTTPS、SSH等。 |
阅读指针 -> 《 TCP 的通信机制 -- TCP如何确保可靠及高效传输?》
<JavaEE> TCP 的通信机制 -- 确认应答 和 超时重传-CSDN博客介绍 TCP 的通信机制,确认应答和超时重传。https://blog.csdn.net/zzy734437202/article/details/135228875