三次握手和四次挥手

本文详细介绍了TCP的三次握手和四次挥手。三次握手目的是建立TCP连接、同步序列号和确认号等,客户端和服务器通过三次发送不同报文完成连接建立。四次挥手时,客户端和服务器均可主动发起,双方通过四次发送不同报文完成连接关闭,还说明了各阶段的状态变化。

1.三次握手:

 (1)目的:连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,并交换TCP窗口大小信息;

(2)过程:(在socket编程中,客户端执行connect()时进行三次握手)

如上图所示,第一握手进行后,客户端处于SYN_SENT状态,客户端的SYN报文服务器收到后,服务器处于LISTEN状态,在服务器端第二次握手进行后,服务器端处于SYN_RECV状态,在第二次握手和第三次握手之间的状态成为半连接状态,这时连接还没有完全建立,当所有报文发送完毕后,即三次握手过程进行完毕后,连接建立成功。

总的来说,第一次握手,客户端向服务器端发送[SYN]报文;第二次握手,服务器端向客户端发送[SYN,ack]报文;第三次握手,客户端再向服务器端发送[ack]报文。

其中:Seq:(4 bytes)序列号; ack:(4 bytes)确认号;

          应答ACK(1 bit):0无效,1有效

          同步SYN :同上; 终止FIN:同上

2.四次挥手:

(1)客户端和服务器端均可主动发起挥手的请求,在socket编程中,任何一方执行close()操作即可产生挥手操作;

(2)过程:

如上图所示:在四次挥手操作发生前,主动方和被动方都处于ESTABLISHED(建立)状态,第一次挥手操作进行后,主动方处于FIN_WAIT_1状态,在第二次挥手后,被动方处于CLOSE_WAIT状态,主动方处于FIN_WAIT_2状态,第三次挥手后被动方处于LAST_ACK状态,第四次挥手后,主动方处于TIME_WAIT状态,在TIME_WAIT状态结束后,主动方和被动方都处于CLOSE状态。

总的来说:第一次挥手,主动方向被动方发送[FIN,ACK]报文;第二次挥手,被动方向主动方发送[ACK]报文;第三次挥手,被动方继续向主动方发送[FIN,ACK]报文;第四次挥手,主动方向被动方发送[ACK].

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值