第一次握手:主机A向主机B发送一个SYN包,并进入SYN_SEND状态,表示主机A申请发出一次连接,并等待B的确认
第二次握手:主机B接收到SYN包后要回应主机A一个确认信息 —— ACK包,表示同意建立此连接,同时主机B还要向主机A发出一个SYN包,表示主机B也有建立连接的请求。此时主机B进入SYN_RECV状态。
第三次握手:主机A接收到主机B发送过来的SYN包和ACK包后还要向主机B发一个ACK包。A和B进入ESTABLISHED状态,包发送完毕后,三次握手完成。
三次握手保证了两个流程:
(1)主机A向主机B发出建立连接请求 SYN,并得到了主机B的回应 ACK;
(2)主机B向主机A发出建立连接请求SYN, 并得到了主机A的回应ACK。这样,A、B双方连接的建立是确切可靠的,保证了主机A和主机B都知道对方要建立这个连接,并都予以了对方回应。