TCP三次握手和四次挥手

TCP三次握手和四次挥手

三次握手(即建立TCP连接) 

    第一次握手:客户端将SYN(SEQ=x)报文发送给服务器,然后进入等待服务器确认状态(SYN_SEND状态)。
    第二次握手:服务器收到SYN之后,再发回给客户端SYN(SEQ=y)ACK(ACK=x+1)报文来确认连接请求,然后进入SYN_RECV状态。
    第三次握手:客户收到服务器的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established( 已获确认的)状态,完成三次握手,客户端和服务器之间就可以开始传输数据了。

四次挥手(即终止TCP连接)

    第一次断开:客户端发送一个FIN(FIN=x)后,用来关闭客户端到服务器的数据传送,客户端进入FIN_WAIT_1状态。
    第二次断开:服务器收到FIN后,发送一个ACK给客户端(ACK=x+1),服务器进入CLOSE_WAIT状态。
    第三次断开:服务器发送一个FIN(FIN=y),用来关闭服务器到客户端的数据传输,服务器进入LAST_ACK状态。
    第四次断开:客户端收到FIN后,客户端进入TIME_WAIT_2状态,然后发送一个ACK(ACK=y+1)给server,服务器进入CLOSED状态,完成四次挥手。

注:
    1. 建立一个连接需要三次握手,而终止一个连接要经过四次握手,这是由TCP的半关闭(half-close)造成的。
    (TCP的半关连接是指:TCP连接只有一方发送了FIN,另一方没有发出FIN包,仍然可以在一个方向上正常发送数据。)
    2. 无论是客户还是服务器,任何一端都可以执行主动关闭。通常情况是,客户执行主动关闭,但是某些协议,例如,HTTP/1.0却由服务器执行主动关闭。
    3. Client(客户端)    Server(服务器)。

图片取自:socket编程到底是什么? - 知乎 (zhihu.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值