三次握手
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
三次握手就是建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的主要作用就是为了确认双方的发送和接受能力是否正常、并指定自己的初始化序列号为后面的可靠性传输做准备。
初始状态:客户端处于close关闭状态,服务器处于listen监听状态。
第一次握手:客户端发送请求报文将同步序列号SYN=1和初始化序列号seq=x发送给服务器,发送完之后客户端处于SYN_SEND(发送等待)状态。
第二次握手:服务器收到客户端的SYN报文之后,会以自己的同步序列号SYN=1、初始化序列号seq=y和确认号ACK=1和确认序列号ack=x+1报文作为应答,然后服务器处于SYN_RECEIVE(确认接收)状态。(将客户端的初始化序列号+1作为ack值,表示自己已经接收到了客户端的SYN)
(在两次握手之后呢,从客户端的角度考虑,我的发送和接受都正常,服务器的发送和接受也都正常。但是从服务器的角度考虑,我的接受正常,但是我不清楚我的发送和客户端的接受是否正常,所以就需要第三次握手&#x