简述TCP三次握手和四次挥手流程
文章目录 前言 三次握手 四次挥手 总结 前言 关于TCP的连接过程,很多从事程序开发的小伙伴应该都听过三次握手,可这三次握手的细节还是有很多人不太清楚的,特别是有些参数记不清楚,我也经常弄错,所以我根据自己的理解画了两张图,将TCP连接和断开的流程简单记录一下,以方便后续查找复习之用。 三次握手 初始状态:客户端A和服务器B均处于 CLOSED 状态,然后服务器B创建socket,调用监听接口使得服务器处于 LISTEN 状态,等待客户端连接。(后续内容用A,B简称代替) A首先向B发起连接,这时TCP头部中的SYN标识位值为1,然后选定一个初始序号 seq=x (一般是随机的),消息发送后,A进入 SYN_SENT 状态, SYN=1 的报文段不能携带数据,但要消耗一个序号。 B收到A的连接请求后,同意建立连接,向A发送确认数据,这时TCP头部中的SYN和ACK标识位值均为1,确认序号为 ack=x+1 ,然后选定自己的初始序号 seq=y (一般是随机的),确认消息发送后,B进入 SYN_RCVD 状态,与连接消息一样,这条消息也不能携带数据,同时消耗一个序号。 A收到B的确认消息后,需要给B回复确认数据,这时TCP头部中的ACK标识位值为1,确认序号是 ack=y+1 ,自己的序号在连接请求的序号上加1,也就是 seq=x+1 ,此时A进入 ESTABLISHED 状态