TCP三次握手及四次挥手细节

三次握手:
该过程发生前提:Server端:调用socket,bind,listen函数后进入监听状态,然后调用accept函数,阻塞等待,Client创建socket后。
Client: 调用connect,阻塞等待,发送SYN,
当server收到client请求后,返回ACK J+1, 同时发送SYN,此时客户端收到消息connect函数返回,且发送ACK k+1给Server,此时Server的accept函数返回。

四次挥手:
主动关闭方调用close会发送FIN,进入FIN_WAIT_1,
被动关闭方收到FIN, 进入到CLOSE_WAIT,read返回0.发送ACK. 此时主动关闭方进入FIN_WAIT_2.
被动关闭方传输完数据后,调用close, 进入LAST_ACK,发送FIN.
主动关闭方收到后进入到TIME_WAIT,此时回复ACK。被动关闭方收到后进入CLOSED状态。

注:大部分情况下都是客户端调用close, 但HTTP协议是服务器端主动调用close。

TIME_WAIT执行主动关闭的那端进入该状态(理由:因为可能不得不重发最终ACK的是这一端),该端点停留在这种状态的持续时间是最长分节生命期(maximum segment lifetime,简称MSL)的两倍,即2MSL。
存在TIME_WAIT状态的两个理由:1.可靠的实现TCP全双工连接的终止。2.允许老的重复分节(之前某IP和端口建立的连接关闭后,在以后某个时间点又重复建立相同IP,端口的TCP连接)在网络中消逝。
MSL是IP数据报能在互联网中生存的最长时间

在执行步骤2与步骤3之间可以有从执行被动关闭到执行主动关闭端的数据流,这称为半关闭(half-close)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值