简单讲讲前端TCP协议三次握手和四次挥手

先上一张形象图:


微信图片_20220719114547.png

正图:


20210330174258408.png

三次握手过程简述:
  1:客户端发起请求建立连接,数据报文中标志位SYN=1(表示建立连接),同时要生成一个随机的32位序列号seq=x。
  2:服务端serve收到后就知道,客户端想要建立连接,于是发送一个数据报文,其中SYN=1,也会生成一个序列号seq=y,还会有一个标志位ACK=1(表示确认号有效),同时还有一个ack(确认号)=x+1,此时表示服务端告诉客户端,接下来你给我发的数据报文要从x+1开始。
(此时,对于客户端而言,我给服务端发送信息,服务端回复我了,同时我能收到服务端的信息,说明客户端这边是没问题的。但是服务端发给客户端的报文,客户端一定能收到吗?)
  3:为了安全,为了可靠,显然两次握手达不到这个目的,服务端只能知道我能收到客户端信息,但是客户端能不能收到我的信息还不确定。所以客户端在收到服务端的消息后,立马返回给服务端一个信息,其中ACK=1,ack=y+1,道理同上,至此两方面通信都可以进行。
  4:(上图中,ACK为标志位,seq为序号,ack为确认号序列)。

四次挥手过程简述:
  1:服务端要断开连接,发送报文中的标志位FIN=1,seq也是有的但不是随机生成的,而是随着通信的进行不断叠加的,假设到seq=x+2。
  2:服务端进行应答,其中标志位ACK=1,ack=y+1,于是客户端就知道服务端已经收到了我的消息
  3:服务端向客户端发送报文消息,其中FIN=1,seq=,此时服务端得到的消息是,客户端不会在向我发送数据报文了,客户端已经准备好断开了,但是服务端可能还有消息给客户端?所以2.3次握手是不能合并的。
  4:客户端同理进行应答,其中ACK=1,ack=
*,至此成功的断开连接。
注意:TCP/IP连接是安全的,是建立在连接上的。TCP 使用四次挥手的原因是因为 TCP 的连接是全双工的,所以需要双方分别释放到对方的连接,单独一方的连接释放,只代 表不能再向对方发送数据,连接处于的是半释放的状态。

为什么是要三次握手,不是二次四次。
  简单来说,两次不够安全,四次过于浪费。
严格来说可以从三次握手过程来看,客户端发起请求建立连接必须要发送标识码,服务端收到客户端想要连接的标识码后,也会发返回一个确认号,并且告诉客户端接下来你发给我的数据报文要从X+1开始。此时服务端不知道客户端是否收到这个消息。所以两次握手是不够的。因此在客户端收到服务端的响应后,会再次发送新的报文。通过这三次链接,不管是客户端还是服务端,都知道要给对方发消息,也能收到对方的响应。所以这个链接就已经被安全的建立了。

面试场景:(建议梳理成自己的方式,熟悉表达)
  TCP/IP 协议是传输层的一个面向连接的安全可靠的一个传输协议,三次握手的机制是为了保证能建立一个安全可靠的连接,那么第一次握手是由客户端发起的,客户端会向服务端发送一个报文,告诉服务端我要发起链接了。服务端收到这个报文后,知道客户端要和我建立连接,于是服务端就会向客户端发送一个确认消息,表示确认客户端发起第一次链接请求。经过以上两次握手之后,对于客户端而言,已经明确了能给服务端发送成功消息,也能收到服务端的响应,但是对于服务端来说是不够的。因为两次握手服务器知道了客户端要向我链接,我响应给客户端的消息客户端是否能收到,服务端不确定的。所以此时还需要第三次握手。第三次握手就是当客户端收到我的确认消息后,还要继续给服务端进行回应。通过以上3次链接,不管是客户端还是服务端都知道既能给对方发送消息,也能收到对方的响应,那么这个连接就被安全的建立了。
  因为TCP协议是通讯双方的,所以断开连接也需要四次挥手。四次挥手也是有客户端发起的,客户端会发送一个我要断开连接的报文发给服务端,服务端此时不一定做好准备了,因为当客户端发起断开连接这个消息的时候,服务端可能还有未发送完的消息,服务端还要继续发送。所以服务端会告诉客户端,我还没做好准备,你还要等我一下。等服务端完全准备好后,就会发一个新的消息给客户端,告诉客户端,我准备好了。你可以断开连接了。客户端收到后,会发送一个包给服务端,好的,那我这边就断开了。不用回复了。通过这四次的相互连接,不管是服务端还是客户端度一斤刚做好了断开连接的准备,于是连接就断开了。
  以上就是我个人对三次握手和四次挥手的一个理解。

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