三次握手是建立TCP连接的过程,在这个过程中需要客户端和服务端总共发送3个包以确认连接的建立。其流程如下图所示:
客户端发送SYN包(SYN=J)到服务器,并进入SYN_SENT状态,等待服务器确认。
- 内部原理:客户端将TCP头部标志位SYN置1,产生一个随机序号seq=J,并将该数据包发送给服务端。
服务器收到SYN包,确认客户的SYN(ACK=J+1),同时自己也发送一个SYN包(SYN=K),即SYN+ACK包,此时服务器进入SYN_RECV状态。
- 内部原理:服务端收到数据包后标志位SYN=1知道客户端请求建立连接,服务端将标志位SYN和ACK都置为1,ACK=J+1,随机产生一个值seq=K,并将该数据包发送给客户端确认连接请求。
客户端收到SYN+ACK包,向服务器发送确认包ACK(ACK=K+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态。完成三次握手后,客户端和服务端开始传输数据。
- 内部原理:客户端收到确认后,检查ACK是否为J+1,ACK是否为1,如果正确则标志位ACK置为1,ACK=K+1。
原文:https://www.cnblogs.com/jibeon/p/11321188.html