TCP协议的特点:
- TCP协议 是一种面向连接的、可靠的、基于字节流的传输层通信协议。
- 面向连接的:指在传输数据之前,必须建立连接。数据传输之后则释放连接。
- 可靠的:指数据在传输的过程中无重复、无丢失、无错误。
- 基于字节流的:数据传输过程中是流入进程和流出进程的字节序列,是一个一个数据包。
TCP报文格式
- 源端口和目的端口:各占2个字节。端口是指传输层和应用层的服务端口。
传输层的分用和复用就是通过端口实现的。
分用:在发送端,多个客户端进程公用一个传输层。
复用:在接收端,传输层会根据端口号分配给不同的应用进程。 - 序号字段(SN):占4个字节。范围是0 ~ 2^32-1。
因为TCP是面向字节流,所以它为每一个字节进行编号。 - 确认号(ASN):占4个字节。
- 是期望收到下一个报文段的数据部分的第一个序号。
- 数据偏移:占4个字节。
是指TCP报文段的数据开始的部分距TCP报文段起始部分的偏移量。 - 6 位标志位:
字段 | 含义 |
---|---|
URG | 紧急指针是否有效;当URG置1时,表示此报文段有紧急数据,应尽快传送。 |
ACK | 确认号是否有效;1表示有效,0表示无效。 |
PSH | 提示接收端应用程序立即从 TCP 缓冲区中把数据读走。 |
RST | RST=1时,表示TCP连接出现了严重的问题,必须释放重连。 |
SYN | 请求建立连接;当SYN=1,ACK=0时,表示为请求连接。当SYN=1,ACK=1时,表示为同意连接的请求应答。 |
FIN | FIN=1时,表示请求释放连接。 |
- 窗口:占2个字节,表示接受端的接收窗口的大小。
用于实现流量控制。将接收端发送过去的窗口大小设置成发送端的发送窗口大小,从而控制了发送端的发送效率。 - 校验和:用于检测发送过程中是否出现错误。