TCP连接的三次握手与四次挥手

TCP连接的三次握手与四次挥手

计算机网络课程估计有大半还给了老师,学习还是要时而复习才行,TCP连接作为计算机网络中重要的一部分内容,希望通过自己的复习与记录重新拾回来。

先记录几个关键字的意思:

  • 同步 SYN :synchronous。建立连接,将 SYN = 1。
  • 序号 seq: sequence。第一个字节的编号随机产生。
  • 确认位 ACK : acknowledgement 。
  • ack : 表示确认字段的值。
  • 结束 FIN : finish。FIN = 1 表示希望断开连接。

1. 三次握手过程

v2-576b043d12353928eea6e45373655668_720w.jpg
  1. A 发送同步信号 SYN 和一个随机序列号 seq = x
  2. B 确认收到 A 的同步信号,返回确认位 AKC = 1 ,并将传来的 x 加上 1 返回
  3. B 发送同步信号 SYN 和一个随机序列号 seq = y
  4. A 确认收到 B 的同步信号,返回确认位 AKC = 1 ,并将传来的 y 加上 1 返回,此时更新后的 seq = x + 1 也一并返回

其中,2、3两步可以合并,也就是我们理解的三次握手,其实也可以这么理解,双方各发送一次请求,各进行一次确认,其中一次请求和确认合并在一起就是三次。

2. 四次挥手过程

v2-c8b61ed2a249700583b11bc5d16c5711_720w.jpg
  1. A 发送结束信号 FIN 给 B,和序列号 seq = u , u 等于 A 前面已传过的数据最后一个字节序号加1。
  2. B 确认收到 A 的结束信号,返回确认位 AKC = 1 、返回确认号 ack= u + 1 ,并返回序列号 seq = v ,v 等于 B 前面已传过的数据最后一个字节序号加1。
  3. B 等待数据传送完毕,发送结束信号 FIN 给 A,和序列号 seq = w (假设等待期间又发送了一些数据),再次将确认位 AKC = 1 、确认号 ack= u + 1 一并返回。
  4. A 确认收到 B 的结束信号,返回确认位 AKC = 1 、返回确认号 ack= w + 1 ,将更新后的 seq = u + 1 返回。

3.建立TCP连接为什么需要三次握手

找了网络上的各种三次握手文章,目前能了解的有下面这几种原因

1.1 防止旧的重复连接初始化造成混乱,避免资源浪费

谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段” 的产生在这样一种情况下:client 发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达 server。本来这是一个早已失效的报文段。但 server 收到此失效的连接请求报文段后,就误认为是 client 再次发出的一个新的连接请求。于是就向 client 发出确认报文段,同意建立连接。假设不采用 “三次握手”,那么只要 server 发出确认,新的连接就建立了。由于现在 client 并没有发出建立连接的请求,因此不会理睬 server 的确认,也不会向 server 发送数据。但 server 却以为新的运输连接已经建立,并一直等待 client 发来数据。这样,server 的很多资源就白白浪费掉了。采用 “三次握手” 的办法可以防止上述现象发生。例如刚才那种情况,client 不会向 server 的确认发出确认。server 由于收不到确认,就知道 client 并没有要求建立连接。”

白话一点就是,如果只有两次握手,那么:

  1. A 向 B 发送了第一个请求,但是因为网络堵塞没有到达
  2. 超时后,于是 A 又发送了第二个请求,这此正常到达,而且 B 回复收到了
  3. A 这时就开始和 B 相互通信,并一段时间后结束了连接
  4. 此时最开始的请求到达了 B,B 以为 A 又请求了连接,并且回复了 A
  5. 但 A 认为自己并没有发送请求,所以并不会理睬 B, B 就只能一直等着
1.2 同步双方的初始序列号

举例:

  1. 例如客户端先发送了一个请求连接的数据包,初始 seq = 100 , 因为网络阻塞收不到回复,于是又发送了一个请求连接的数据包,初始 seq = 200
  2. 此时网络又恢复了正常,服务端接收到了最开始发送的 seq = 100, 于是返回 ack = 101
  3. 客户端比较上下文,发现自己希望收到的 ack 应该是 201,于是发送了 RST 给服务端,中止连接。
  4. 一段时间后 seq = 200 到达了服务端,并返回了 ack = 201 以及自己的 seq
  5. 客户端确认信息,返回服务端的 seq + 1,建立TCP连接
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容