TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,用于在互联网上可靠地传输数据。
- TCP头部格式组成
序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一次数据,序列号加一。
确认应答号:下一次应该收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。
控制位:
- ACK:该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1 。
- RST:该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。
- SYN:该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。
- FIN:该位为 1 时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时,通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段。
- TCP三次握手过程
TCP的三次握手和四次挥手是建立和关闭TCP连接时所使用的过程。
TCP三次握手:
- 第一步(客户端 -> 服务器):客户端发送一个带有SYN(同步)标志的数据包给服务器,包含了客户端的初始化序列号(ISN)。
- 第二步(服务器 -> 客户端):服务器收到客户端的SYN后,会发送一个带有SYN/ACK(同步/确认)标志的数据包给客户端,确认客户端的SYN,并将服务器的初始化序列号(ISN)和确认号设置为客户端的ISN加一。
- 第三步(客户端 -> 服务器):客户端收到服务器的SYN/ACK后,发送一个带有ACK(确认)标志的数据包给服务器,确认服务器的SYN/ACK,并将自己的确认号设置为服务器的ISN加一。
这样,TCP的三次握手完成,建立起了双方之间的可靠连接。
- TCP四次挥手过程
TCP四次挥手:
- 第一步(客户端 -> 服务器):当客户端想要关闭连接时,它发送一个带有FIN(结束)标志的数据包给服务器,表示客户端已经没有数据要发送了。
- 第二步(服务器 -> 客户端):服务器收到客户端的FIN后,发送一个带有ACK标志的数据包给客户端,确认收到了客户端的关闭请求,并继续允许数据传输。
- 第三步(服务器 -> 客户端):当服务器确定没有更多的数据要发送时,它会发送一个带有FIN标志的数据包给客户端,表示服务器准备关闭连接。
- 第四步(客户端 -> 服务器):客户端收到服务器的FIN后,发送一个带有ACK标志的数据包给服务器,确认收到了服务器的关闭请求。
这样,TCP的四次挥手完成,连接彻底关闭。
通过三次握手,确保了双方都已经准备好进行数据传输。通过四次挥手,双方协商完成数据传输并关闭连接,释放网络资源。TCP的三次握手和四次挥手过程可以确保可靠的数据传输和连接的正常关闭。