TCP三次握手和四次挥手

一、TCP三次握手的过程

第一次握手:客户机A向服务器B发送报文,SYN=1,ACK=0,seq=x,客户机进入send状态;
第二次握手:服务器B向客户机A发送应答报文,SYN=1,ACK=1,seq=y,ack=y,进入receive状态;
第三次握手:客户端A向服务器发送报文:SYN=1,ACK=1,seq=y+1,客户端和服务器端进入establish状态;
三次握手才可以保证双向连接确实已经完成建立,报文都已经正确的收到。
第二次握手,保证了A到B的方向连接建立;第三次握手,保证了B到A的方向连接也建立了;

二、四次挥手

第一次挥手:A向B发送挥手请求报文:FIN=1,seq=x,A进入终止等待的状态;
第二次挥手:B向A发送报文:ACK=1,seq=x+1;B告诉A说:我已经收到你要停止发送报文的消息;A此时不再向B发送报文,单向关闭完成;但是B向A还是能发送报文的;
第三次挥手:B向A发送报文:FIN=1,seq=y,B等待A的确认;
第四次挥手:A向B发送报文:seq=y+1,A和B都进入关闭状态;

为什么是三次握手?四次挥手?

三次握手的原因我上面已经分析过了;这里简单的分析一下四次挥手,因为TCP建立的是双向连接,关闭一个方向的通道是一来一回,双向就是四次。可能你会想,建立的时候不也是双向通道吗?但是建立的时候,是一个方向发起的,关闭的时候是双向发起的。所以会多一次握手。那可不可以挥别也是三次握手呢?我的理解是建立的时候,A接受到B的回复时,就可以直接打开接收和发送的双向开关;但是挥别时,B收到A的请求时,只能先回复确认,然后接着发送剩下的报文,等剩下的报文都发送完毕之后,再次发送关闭的请求。因为此时它们之间已经有数据在传送了。

感悟:小白转身代价小,苦逼搬砖好跳槽。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值