三次握手简单理解

三次握手 四次挥手

建立TCP连接需要三次握手, 而断开连接需要执行四次挥手.

信号

  1. SYN 同步
  2. ASK 确认
  3. PSH 推送
  4. FIN 结束
  5. URG 紧急
  6. RST 重置

三次握手

  1. TCP服务器进程首先创建进程控制块TCB, 服务器进入LISTEN监听状态, 时刻准备接受客户进程的请求
  2. 客户端
    • 创建TCB传输控制块. 发出请求报文
    • 同步为SYN=1, 初始序列号seq=x
    • 客户端进入同步发送状态SYN-SEND
    • TCP报文规定, SYN报文段不能携带数据, 但是需要消耗一个序列号
  3. 服务器
    • 收到客户单请求报文, 如果同意连接, 发送确认报文
    • 发送报文: ACK=1, SYN=1, 确认号ack_number=x+1, seq=y
    • 服务器进入同步收到状态SYN-RCVD
    • 该报文不能懈怠数据, 但是需要消耗一个序列号
  4. 客户端
    • 收到报文后, 还需要向服务器确认
    • 发送: ACK=1, ack_number=y+1
    • 客户端进入ESTABLISHED已经建立连接状态
    • TCP规定: 该报文可以携带数据, 但是如果没有携带数据的话, 不用消耗一个序号
  5. 当服务器收到客户端的确认后也进入ESTABLISHED状态,此后双方就可以开始通信了。

三次握手的目的:

  • 消除旧有的连接请求SYN消息, 对新连接的干扰, 同步连接双方的序列号和确认号码, 交换TCP窗口的大小信息
  • 如果采用的是三次握手,就算是那一次失效的报文传送过来了,服务端接受到了那条失效报文并且回复了确认报文,但是客户端不会再次发出确认。由于服务器收不到确认,就知道客户端并没有请求连接。

四次挥手

  1. 客户端
    • 发出连接释放报文,并且停止发送数据。
    • 释放数据报文首部,FIN=1,其序列号为seq=u
    • 客户端进入FIN-WAIT-1(终止等待1)状态
    • TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  2. 服务器
    • 发出确认报文,ACK=1,ack_number=u+1,并且带上自己的序列号seq=v,
    • 服务端就进入了CLOSE-WAIT(关闭等待)状态。
    • TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。
    • 这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
  3. 客户端 (客户端收到服务器的确认请求后)
    • 客户端就进入FIN-WAIT-2(终止等待2)状态
    • 等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  4. 服务端
    • 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文
    • FIN=1, ack=u+1
    • 由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w
    • 服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  5. 客户端
    • 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1
    • 客户端就进入了TIME-WAIT(时间等待)状态。
    • 注意此时TCP连接还没有释放,必须经过2∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
  6. 服务端
    • 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。
    • 同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

为什么客户端最后还要等待2MSL?

MSL(Maximum Segment Lifetime),TCP允许不同的实现可以设置不同的MSL值。

  • 第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到,于是服务器又会重新发送一次,而客户端就能在这个2MSL时间段内收到这个重传的报文,接着给出回应报文,并且会重启2MSL计时器。

  • 第二,防止类似与“三次握手”中提到了的“已经失效的连接请求报文段”出现在本连接中。客户端发送完最后一个确认报文后,在这个2MSL时间中,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失。这样新的连接中不会出现旧连接的请求报文。

为什么建立连接是三次握手,关闭连接确是四次挥手呢?

  1. 建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。

  2. 而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。

如果已经建立了连接,但是客户端突然出现故障了怎么办?

  1. TCP还设有一个保活计时器,显然,客户端如果出现故障,服务器不能一直等下去,白白浪费资源。

  2. 服务器每收到一次客户端的请求后都会重新复位这个计时器,时间通常是设置为2小时,

  3. 若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75分钟发送一次。若一连发送10个探测报文仍然没反应,服务器就认为客户端出了故障,接着就关闭连接。

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