网络--四次挥手

TCP的连接释放

为更好了解挥手过程,你需要理解握手过程。点这里
1. 过程简单描述

数据传输结束后,通信的双方都可以释放连接,此时,客户机A和服务器B都处在ESTABLLISHED(已建立连接)状态。
①. A的应用进程先向TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。A连接释放报文段首部的 FIN 置 1,其序号 seq = u,它等于前面已传送过的数据的最后一个字节的序号加 1。这时,A进入FIN-WAIT-1(终止等待1)状态,等待服务器B的确认。
TCP规定,FIN报文段即使不携带数据,也会消耗一个序号。)
②. B收到连接释放报文段后即发出确认,确认号为ack = u+1,而这个报文段自己的序号是 v,等于 B 前面已传送过的数据的最后一个字节的序号加 1。之后B就进入CLOSE-WAIT(关闭等待)状态。——>这时,TCP服务器进程应通知高层应用进程,因而从AB这个方向的连接就释放了,TCP连接此时处于半关闭(half-close)状态,即A已经没有数据要发送了,但B若发送数据,A仍要接收。也就是说,从BA这个方向的连接并没有关闭。
③. A收到来自B的确认后,进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段
B已经没有要向A发送的数据,其应用进程就通知TCP释放连接。——>这时,B发出的连接释放报文段必须使FIN = 1,假定B的序号为 w(在半关闭状态B可能又发送了一些数据),B还必须重复上传已发送过的确认号ack = u+1——>这时,B进入LAST-ACK(最后确认)状态,等待A的确认。
④. A在收到B的连接释放报文段后,必须对此发出确认。在确认报文段中把ACK 置 1 ,确认号 ack = w+1,而自己的序号是 seq = u+1(注:TCP标准,前面发送过的FIN报文段要消耗一个序号)——>此时,A进入TIME-WAIT(时间等待)状态。注意,现在 TCP 连接还没有释放掉。必须经过 时间等待计时器(TIME-WAIT timer)设置的时间 2MSL 后,A 才进入CLOSED 状态。(:时间 MSL 叫做最长报文段寿命RFC 793建议设置为2分钟,对于如今的网络来说,2分钟太长了,因此TCP允许不同的实现可以根据具体的情况使用更小的MSL 值。)——>所以,从A进入TIME-WAIT状态后,要经过4分钟才能进入CLOSED状态,才能开始建立下一个新的连接。——>A撤销了相应的传输控制块TCB后,就结束了这次的TCP连接。


B只要收到了A发出的确认,就进入了CLOSED状态,同样,B在撤销相应的传输控制块TCB后,就结束了这次的TCP连接。B 结束TCP连接的时间比 A 要早一些。

上述的 TCP 连接释放过程就是四次挥手,也可以看成是两个二次挥手。



那么问题来了:

为什么 A 在 TIME-WAIT 状态必须等待 2MSL 的时间?

理由: 第一,为了保证A发送的最后一个 ACK报文段能过到达B。这个ACK报文段可能丢失,因而使处在 LAST-ACK状态下的B收不到对已发送的 FIN+ACK报文段的确认B超时重传这个FIN+ACK报文段,而A就能在 2MSL时间内收到这个重传的 FIN+ACK报文段。接着, A 重传一次确认,重新启动 2MSL计时器。最后,AB 就能都正常的进入CLOSED状态。如果ATIME-WAIT状态下不等待一段时间,而是在发送完ACK报文段之后立即释放连接,那么无法收到B重传的FIN+ACK,因而也不会再发送一次确认报文段,那么。B就无法按照正常的步骤进入CLOSED状态。
第二,为了防止“已失效的连接请求报文段”出现。A在发送完最后一个ACK报文段后,经过时间2MSL后,就可以使本连续的时间内所产生的所有报文段(包括旧的连接请求报文段)都从网络上消失。

了解:什么是保活计时器?

服务器每收到一次客户的数据,就重新设置保活计时器,时间的设置通常是 两小时。若两小时没有收到客户的数据,服务器就发送一个探测报文段。以后则每隔75 分钟发送一次,若一连发送 10个探测报文段后仍无客户的响应,服务器就会认为客户端除了故障,接着关闭了连接。所以说,保活计时器就是为了处理在客户端出了故障的时候,让服务器不再白白等下去而浪费资源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容