TCP连接与断开

TCP建立连接是三次握手的理由:

  • 第一次client—>server client发送一个SYN(J)包给server,server接收到之后server可以确认client的发送和自己的接收是没有问题的;
  • 第二次server—>client server接收到SYN(seq=J)包后就返回一个ACK(J+1)包以及一个自己的SYN(K)包,client端接收到后client可以确认server的发送和自身的接收是没有问题的;( 注:这个时候server端并不能确定自己的发送是否有问题,加入恰巧server端的发送时存在问题的那么在这时server端给client端发包就是对资源的浪费,所以需要第三次握手。)
  • 第三次client—>server client接收到server发回的ACK(J+1)包后,进入ESTABLISHED状态。然后根据server发来的SYN(K)包,返回给等待中的server一个ACK(K+1)包,server端确认自己的发送也是没有问题的,这时连接已经建立,可以开始正式的通信。

TCP断开连接时的四次挥手:

  • 第一次client—>server client发送一个FIN(M)包,此时client进入FIN-WAIT-1状态,表明client已经没有要发送的包;
  • 第二次server—>client server收到了client发来的FIN(M)包后,向client发回一个ACK(M+1)包,此时server进入CLOSE-WAIT状态,client进入FIN-WAIT-2状态;
  • 第三次server—>client server向client发送FIN(N)包,请求关闭连接,同时server进入LAST-ACK状态;
  • 第四次client—>server client收到server发送的FIN(N)包,进入TIME-WAIT状态。向server发送ACK(N+1)包,server收到client的ACK(N+1)包以后,进入CLOSE状态;client等待一段时间还没有得到回复后判断server已正式关闭,进入CLOSE状态。

client请求关闭连接并收到server的确认后只是代表client端不在发送数据但仍可以接收server端发来的数据,只有server发来关闭连接请求client发出确认,client等待一段时间还没有得到回复后client才才关闭连接,此时双向连接关闭。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值