TCP四次挥手过程

TCP四次挥手过程四次挥手状态转化:A、B连接建立状态ESTABLISHED->A终止等待1状态FIN-WAIT-1->B关闭等待状态2CLOSE-WAIT->A终止等待2状态FIN-WAIT-2->B最后确认状态LAST-ACK->A时间等待状态TIME-WAIT->B、A关闭状态CLOSED 四次挥手过程 第一次挥手:A数据传输完毕需…

大家好,又见面了,我是你们的朋友全栈君。

四次挥手

TCP四次挥手过程

状态转化:A、B连接建立状态ESTABLISHED -> A终止等待1状态FIN-WAIT-1 -> B关闭等待状态2CLOSE-WAIT -> A终止等待2状态FIN-WAIT-2 -> B最后确认状态LAST-ACK -> A时间等待状态TIME-WAIT -> B、A关闭状态CLOSED

  • 四次挥手过程

第一次挥手:A数据传输完毕需要断开连接,A的应用进程向其TCP发出连接释放报文段(FIN = 1,序号seq = u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待B的确认。

第二次挥手:B收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT关闭等待状态,此时的TCP处于半关闭状态,A到B的连接释放。而A收到B的确认后,进入FIN-WAIT-2状态,等待B发出的连接释放报文段。

第三次挥手:当B数据传输完毕后,B发出连接释放报文段(FIN = 1,ACK = 1,序号seq = w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A 的最后确认。

第四次挥手:A收到B的连接释放报文段后,对此发出确认报文段(ACK = 1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSE状态。

  • 为什么A在TIME-WAIT状态必须等待2MSL(最大报文生存时间)的时间?

1.保证A发送的最后一个ACK报文段能够到达B,保证A、B正常进入CLOSED状态。

   这个ACK报文段有可能丢失,使得处于LAST-ACK状态的B收不到对已发送的FIN+ACK报文段的确认,B超时重传FIN+ACK报文段,A能2MSL时间内收到这个重传的FIN+ACK报文段,接着A重传一次确认,同时重启2MSL计数器,2MSL时间后A和B进入CLOSE状态,如果A在TIME-WAIT状态时接收到B的FIN+ACK报文段之后向B发出确认报文段,而不再确认B是否收到立即进入CLOSED状态,如若B并没有正常收到A 的确认报文段,则B无法正正常进入到CLOSED状态。

2.防止“已经失效的连接请求报文段”出现在本连接中。

   A在发送完最后一个ACK报文段并经过2MSL,会使本次连接持续时间内所有产生的报文段消失,保证在下一次新连接中不会出现旧连接遗留的请求报文段。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137247.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • matlab plotyy 标注,Matlab关于plotyy 标注 legend 的问题[通俗易懂]

    matlab plotyy 标注,Matlab关于plotyy 标注 legend 的问题[通俗易懂]我用plotyy做了一个图,想用legend标注图形,但是还想只能标注一个,我的原始程序时这样的[AX,H1,H2]=plotyy(xx,c,xx,p8);set(get(AX(1),’Ylabel’),’String’,’地面水汽压e/(hpa)’,’color’,’k’,’linewidth’,1.2)set(get(AX(2),’Ylabel’),’String’,’大气可降水量W/…

  • centos7 kill程序进程_centos杀死进程命令

    centos7 kill程序进程_centos杀死进程命令经过搜集和整理相关的linux杀死进程的材料,在这里本人给大家推荐本篇文章,希望大家看后会有不少收获。1.kill作用:根据进程号杀死进程用法:kill[信号代码]进程ID举例:[root@localhost~]#psauxf|grephttpd注意:kill-9来强制终止退出举例[root@localhost~]#psaux|grepgaim或者[root@l…

  • mysql 索引中的USING BTREE 的意义

    mysql 索引中的USING BTREE 的意义

  • C++ – 实现strstr函数

    C++ – 实现strstr函数分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net/**CreatedbyChimomo**函数名:strStr*功能:找出字符串str2在字符串str1中第一次出现的位置(不包括str2的串结束符)。*返回值:若找到,返回指向该位置的指针;否则,返回空指针。…

  • 韩国代理服务器_国内免费代理服务器

    韩国代理服务器_国内免费代理服务器由于台湾地区的地震影响到内地出口光缆,造成国内访问国外网站出现故障。推荐代理服务器:地址:222.231.50.97端口:80……[digit,linkhttp://wangxinyu.net/]…

  • idea2021永久激活码【2021.7最新】

    (idea2021永久激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html65MJGLILER-eyJsaWNlbnNlSWQi…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号