浅显大白话来明白TCP协定的三次握手和四次分离

近来在恶补计算机收集方面的学问,之前关于TCP的三次握手和四次分离也是迷迷糊糊,关于个中的细节更是浑然不知,近来看了很多这方面的学问,也在体系的进修计算机收集,加深本身的CS功底,就把看过的一些比较好的东西和本身的一些邃晓二次加工构造一下然后交换分享,一同进修提高,对了这个口试彷佛常常问到。

原文收录在我的 GitHub博客 (https://github.com/jawil/blog) ,喜好的可以关注最新动态,人人一同多交换进修,共同提高,以进修者的身份写博客,纪录点滴。

浅显邃晓:

《浅显大白话来明白TCP协定的三次握手和四次分离》

然则为什么一定要举行三次握手来保证衔接是双工的呢,一次不可么?两次不可么?我们举一个现实生活中两个人举行言语沟通的例子来模仿三次握手。

援用网上的一些浅显易懂的例子,虽然不太准确,背面会指出,然则不阻碍我们邃晓,大致就是这么个邃晓法。

第一次对话:

妻子让甲出去打酱油,半路碰到一个朋侪乙,甲问了一句:哥们你用饭了么?

效果乙带着耳机听歌呢,基本没听到,没反应。甲内心想:跟你措辞也没个音,不跟你说了,沟通失利。申明乙吸收不到甲传过来的信息的状况下沟通肯定是失利的。

如果乙听到了甲说的话,那末第一次对话胜利,接下来举行第二次对话。

第二次对话:

乙听到了甲说的话,然则他是老外,中文不好,不晓得甲说的啥意义也不晓得怎样回复,因此随意回复了一句学过的中文 :我去茅厕了。甲一听立时笑喷了,“去茅厕用饭”?道差别不相为谋,离你远点吧,沟通失利。申明乙没法做出准确应对的状况下沟通失利。

如果乙听到了甲的话,做出了准确的应对,而且还举行了反问:我用饭了,你呢?那末第二次握手胜利。

经由历程前两次对话证实了乙可以听懂甲说的话,而且能做出准确的应对。 接下来举行第三次对话。

第三次对话:

甲刚和乙打了个召唤,倏忽妻子喊他,“你个死鬼,打个酱油咋这么半天,看我回家咋摒挡你”,甲是个妻管严,听完吓得二话不说就跑回家了,把乙本身晾那了。乙心想:这什么人啊,得,我也回家吧,沟通失利。申明甲没法做出应对的状况下沟通失利。

如果甲也做出了准确的应对:我也吃了。那末第三次对话胜利,两人已竖立起了顺畅的沟通渠道,接下来最先延续的谈天。

经由历程第二次和第三次的对话证实了甲可以听懂乙说的话,而且能做出准确的应对。

可见,两个人举行有用的言语沟通,这三次对话的历程是必需的。

为了保证效劳端能收吸收到客户端的信息并能做出准确的应对而举行前两次(第一次和第二次)握手,为了保证客户端可以吸收到效劳端的信息并能做出准确的应对而举行后两次(第二次和第三次)握手。

这个例子举得挺好的。不过个人觉得为什么是三次而不是二次,不是因为为了证实甲能听懂乙并回应(第二次乙能准确的相应甲申明俩人之间沟通已无停滞了),而是怕涌现以下状况而糟蹋情绪。这个情形是如许的(例子有点不现实领悟就好):甲在路上跟乙打召唤,因为起风什么的这句活被吹跑了,然后甲又跟打了个召唤,乙听到了并作出了回应。此时不管是三次握手照样两次握手两个人都能兴奋的沟通。0.1秒后俩人四次挥手告别了。此时被风刮跑的那句话又传到了乙的耳朵里,乙认为甲又要跟他沟通,所以做出了相应的回应。(题目涌现了)如果采纳2次握手,乙就认定了甲要跟他沟通,因此就不断的等,糟蹋情绪。可如果是采纳3次握手,乙等了一会后发明甲没有回应他就认为甲走了然后本身也就走了!

这就很邃晓了,实在第三步是防备了乙的一向守候而糟蹋本身的时刻,而不是为了保证甲可以准确回应乙的信息。。。背面的也会讲到。

援用知乎上的他人援用的一个回复,从别的一个角度阐释:

在Google Groups的TopLanguage中看到一帖议论TCP“三次握手”觉得很有意义。贴主提出“TCP竖立衔接为什么是三次握手?”的题目,在浩瀚复兴中,有一条复兴写道:“这个题目的实质是, 信道不牢靠, 然则通讯双发须要就某个题目杀青一致. 而要处置惩罚这个题目, 不管你在音讯中包括什么信息, 三次通讯是理论上的最小值. 所以三次握手不是TCP本身的要求, 而是为了满足”在不牢靠信道上牢靠地传输信息”这一需求所致使的. 请注意这里的实质需求,信道不牢靠, 数据传输要牢靠. 三次到达了, 那背面你想接着握手也好, 发数据也好, 跟举行牢靠信息传输的需求就没关系了. 因此,如果信道是牢靠的, 即不管什么时刻发出音讯, 对方一定能收到, 或许你不关心是不是要保证对方收到你的音讯, 那就可以像UDP那样直接发送音讯就可以了.”。这可视为对“三次握手”目的的另一种解答思绪。

上面的纯属大白话文娱解说,能够另有误差,例子能够有点不得体。在我们真正相识TCP的三次握手和四次分离之前,必需相识一些基本的观点,末了和这大白话例子对照连系一下邃晓,说不定就会立时举一反三。





HTTP衔接

HTTP协定即超文本传送协定(Hypertext Transfer Protocol ),是Web联网的基本,也是手机联网经常运用的协定之一,HTTP协定是竖立在TCP协定之上的一种运用。
HTTP衔接最明显的特点是客户端发送的每次要求都须要效劳器回送相应,在要求终了后,会主动开释衔接。从竖立衔接到封闭衔接的历程称为“一次衔接”。
1)在HTTP 1.0中,客户端的每次要求都要求竖立一次零丁的衔接,在处置惩罚完本次要求后,就自动开释衔接。

2)在HTTP 1.1中则可以在一次衔接中处置惩罚多个要求,而且多个要求可以堆叠举行,不须要守候一个要求终了后再发送下一个要求。

因为HTTP在每次要求终了后都邑主动开释衔接,因此HTTP衔接是一种“短衔接”,要坚持客户端递次的在线状况,须要不断地向效劳器提议衔接要求。平常 的做法是马上不须要取得任何数据,客户端也坚持每隔一段牢固的时刻向效劳器发送一次“坚持衔接”的要求,效劳器在收到该要求后对客户端举行复兴,表明晓得 客户端“在线”。若效劳器长时刻没法收到客户端的要求,则认为客户端“下线”,若客户端长时刻没法收到效劳器的复兴,则认为收集已断开。






SOCKET道理

套接字(socket)观点

套接字(socket)是通讯的基石,是支撑TCP/IP协定的收集通讯的基本操纵单位。它是收集通讯历程当中端点的笼统示意,包括举行收集通讯必需的五种信息:衔接运用的协定,当地主机的IP地点,当地历程的协定端口,远地主机的IP地点,远地历程的协定端口。
运用层经由历程传输层举行数据通讯时,TCP会碰到同时为多个运用递次历程供应并发效劳的题目。多个TCP衔接或多个运用递次历程能够须要经由历程同一个 TCP协定端口传输数据。为了辨别差别的运用递次历程和衔接,很多计算机操纵体系为运用递次与TCP/IP协定交互供应了套接字(Socket)接口。应 用层可以和传输层经由历程Socket接口,辨别来自差别运用递次历程或收集衔接的通讯,完成数据传输的并发效劳。

竖立socket衔接

竖立Socket衔接最少须要一对套接字,个中一个运转于客户端,称为ClientSocket ,另一个运转于效劳器端,称为ServerSocket 。
套接字之间的衔接历程分为三个步骤:效劳器监听,客户端要求,衔接确认。
效劳器监听:效劳器端套接字并不定位细致的客户端套接字,而是处于守候衔接的状况,及时监控收集状况,守候客户端的衔接要求。
客户端要求:指客户端的套接字提出衔接要求,要衔接的目的是效劳器端的套接字。为此,客户端的套接字必需起首形貌它要衔接的效劳器的套接字,指出效劳器端套接字的地点和端口号,然后就向效劳器端套接字提出衔接要求。
衔接确认:当效劳器端套接字监听到或许说吸收到客户端套接字的衔接要求时,就相应客户端套接字的要求,竖立一个新的线程,把效劳器端套接字的形貌发 给客户端,一旦客户端确认了此形貌,两边就正式竖立衔接。而效劳器端套接字继承处于监听状况,继承吸收其他客户端套接字的衔接要求。

SOCKET衔接与TCP衔接

建立Socket衔接时,可以指定运用的传输层协定,Socket可以支撑差别的传输层协定(TCP或UDP),当运用TCP协定举行衔接时,该Socket衔接就是一个TCP衔接。

Socket衔接与HTTP衔接

因为平常状况下Socket衔接就是TCP衔接,因此Socket衔接一旦竖立,通讯两边即可最先互相发送数据内容,直到两边衔接断开。但在现实网 络运用中,客户端到效劳器之间的通讯每每须要穿越多个中心节点,比方路由器、网关、防火墙等,大部分防火墙默许会封闭长时刻处于非活泼状况的衔接而致使 Socket 衔接断连,因此须要经由历程轮询通知收集,该衔接处于活泼状况。
而HTTP衔接运用的是“要求—相应”的体式格局,不仅在要求时须要先竖立衔接,而且须要客户端向效劳器发出要求后,效劳器端才复兴数据。
很多状况下,须要效劳器端主意向客户端推送数据,坚持客户端与效劳器数据的及时与同步。此时若两边竖立的是Socket衔接,效劳器就可以直接将数 据传送给客户端;若两边竖立的是HTTP衔接,则效劳器须要比及客户端发送一次要求后才将数据传回给客户端,因此,客户端定时向效劳器端发送衔接要求, 不仅可以坚持在线,同时也是在“讯问”效劳器是不是有新的数据,如果有就将数据传给客户端。TCP(Transmission Control Protocol) 传输掌握协定

TCP是主机对主机层的传输掌握协定,供应牢靠的衔接效劳,采纳三次握手确认竖立一个衔接:

位码即tcp标志位,有6种标示:SYN(synchronous竖立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish终了) RST(reset重置) URG(urgent紧要)

Sequence number(递次号码) Acknowledge number(确认号码)






TCP是什么?

TCP(Transmission Control Protocol 传输掌握协定)是一种面向衔接的、牢靠的、基于字撙节的传输层通讯协定。

细致的关于TCP是什么,我不盘算细致的说了;当你看到这篇文章时,我想你也晓得TCP的观点了,想要更深切的相识TCP的事变,我们就继承。它只是一个超等贫苦的协定,而它又是互联网的基本,也是每一个递次员必备的基本功。起首来看看OSI的七层模子:
《浅显大白话来明白TCP协定的三次握手和四次分离》
我们须要晓得TCP事变在收集OSI的七层模子中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层;在第二层上的数据,我们把它叫Frame,在第三层上的数据叫Packet,第四层的数据叫Segment。 同时,我们须要简朴的晓得,数据从运用层发下来,会在每一层都邑加上头部信息,举行封装,然后再发送到数据吸收端。这个基本的流程你须要晓得,就是每一个数据都邑经由数据的封装息争封装的历程。 在OSI七层模子中,每一层的作用和对应的协定以下:
《浅显大白话来明白TCP协定的三次握手和四次分离》
TCP是一个协定,那这个协定是怎样定义的,它的数据花样是什么模样的呢?要举行更深条理的理会,就须要相识,以至是熟记TCP协定中每一个字段的寄义。哦,来吧。

TCP头部

个中 ACK SYN 序号 这三个部分在以下会用到,它们的引见也在下面。
《浅显大白话来明白TCP协定的三次握手和四次分离》

上面就是TCP协定头部的花样,因为它太重要了,是邃晓别的内容的基本,下面就将每一个字段的信息都细致的申明一下。

  • Source Port和Destination Port:离别占用16位,示意源端口号和目的端口号;用于辨别主机中的差别历程,而IP地点是用来辨别差别的主机的,源端口号和目的端口号配合上IP首部中的源IP地点和目的IP地点就可以唯一的肯定一个TCP衔接;

  • Sequence Number:用来标识从TCP发端向TCP收端发送的数据字撙节,它示意在这个报文段中的的第一个数据字节在数据流中的序号;重要用来处置惩罚收集报乱序的题目;

  • Acknowledgment Number:32位确认序列号包括发送确认的一端所希冀收到的下一个序号,因此,确认序号应当是上次已胜利收到数据字节序号加1。不过,只需当标志位中的ACK标志(下面引见)为1时该确认序列号的字段才有用。重要用来处置惩罚不丢包的题目;

  • Offset:给出首部中32 bit字的数量,须要这个值是因为任选字段的长度是可变的。这个字段占4bit(最多能示意15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部。但是,没有任选字段,平常的长度是20字节;

  • TCP Flags:TCP首部中有6个标志比特,它们中的多个可同时被设置为1,重如果用于操控TCP的状况机的,依次为URG,ACK,PSH,RST,SYN,FIN。每一个标志位的意义以下:

URG:此标志示意TCP包的紧要指针域(背面立时就要说到)有用,用来保证TCP衔接不被中缀,而且催促中心层装备要尽快处置惩罚这些数据;

ACK:此标志示意应对域有用,就是说前面所说的TCP应对号将会包括在TCP数据包中;有两个取值:0和1,为1的时刻示意应对域有用,反之为0;

PSH:这个标志位示意Push操纵。所谓Push操纵就是指在数据包抵达吸收端今后,马上传送给运用递次,而不是在缓冲区中列队;

RST:这个标志示意衔接复位要求。用来复位那些发作毛病的衔接,也被用来谢绝毛病和不法的数据包;

SYN:示意同步序号,用来竖立衔接。SYN标志位和ACK标志位搭配运用,当衔接要求的时刻,SYN=1,ACK=0;衔接被相应的时刻,SYN=1,ACK=1;这个标志的数据包常常被用来举行端口扫描。扫描者发送一个只需SYN的数据包,如果对方主机相应了一个数据包返来 ,就表明这台主机存在这个端口;然则因为这类扫描体式格局只是举行TCP三次握手的第一次握手,因此这类扫描的胜利示意被扫描的机械不很平安,一台平安的主机将会强迫要求一个衔接严厉的举行TCP的三次握手;

FIN: 示意发送端已到达数据末端,也就是说两边的数据传送完成,没有数据可以传送了,发送FIN标志位的TCP数据包后,衔接将被断开。这个标志的数据包也常常被用于举行端口扫描。

  • Window:窗口大小,也就是著名的滑动窗口,用来举行流量掌握;这是一个庞杂的题目,这篇博文中并不会举行总结的;

临时须要的信息有:

ACK : TCP协定划定,只需ACK=1时有用,也划定衔接竖立后一切发送的报文的ACK必需为1

SYN(SYNchronization) : 在衔接竖立时用来同步序号。当SYN=1而ACK=0时,表明这是一个衔接要求报文。对方若赞同竖立衔接,则应在相应报文中使SYN=1和ACK=1. 因此, SYN置1就示意这是一个衔接要求或衔接吸收报文。

FIN (finis)即完,闭幕的意义, 用来开释一个衔接。当 FIN = 1 时,表明此报文段的发送方的数据已发送终了,并要求开释衔接。

《浅显大白话来明白TCP协定的三次握手和四次分离》

三次握手的历程:

《浅显大白话来明白TCP协定的三次握手和四次分离》

何等清楚的一张图,固然了,也不是我画的,我也只是援用过来申明题目了。

  1. 第一次握手:竖立衔接。客户端发送衔接要求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状况,守候效劳器的确认;

  2. 第二次握手:效劳器收到SYN报文段。效劳器收到客户端的SYN报文段,须要对这个SYN报文段举行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,本身本身还要发送SYN要求信息,将SYN位置为1,Sequence Number为y;效劳器端将上述一切信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时效劳器进入SYN_RECV状况;

  3. 第三次握手:客户端收到效劳器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向效劳器发送ACK报文段,这个报文段发送终了今后,客户端和效劳器端都进入ESTABLISHED状况,完成TCP三次握手。
    完成了三次握手,客户端和效劳器端就可以最先传送数据。以上就是TCP三次握手的整体引见。

那四次分离呢?

当客户端和效劳器经由历程三次握手竖立了TCP衔接今后,当数据传送终了,肯定是要断开TCP衔接的啊。那关于TCP的断开衔接,这里就有了神奇的“四次分离”。

  1. 第一次分离:主机1(可以使客户端,也可所以效劳器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状况;这示意主机1没有数据要发送给主机2了;

  2. 第二次分离:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状况;主机2通知主机1,我“赞同”你的封闭要求;

  3. 第三次分离:主机2向主机1发送FIN报文段,要求封闭衔接,同时主机2进入LAST_ACK状况;

  4. 第四次分离:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状况;主机2收到主机1的ACK报文段今后,就封闭衔接;此时,主机1守候2MSL后依旧没有收到复兴,则证实Server端已平常封闭,那好,主机1也可以封闭衔接了。

至此,TCP的四次分离就这么兴奋的完成了。当你看到这里,你的脑子里会有很多的疑问,很多的不懂,觉得很缭乱;没事,我们继承总结。

为什么要三次握手

在谢希仁著《计算机收集》第四版中讲“三次握手”的目的是“为了防备已失效的衔接要求报文段倏忽又传送到了效劳端,因此发作毛病”。在另一部典范的《计算机收集》一书中讲“三次握手”的目的是为了处置惩罚“收集中存在耽误的反复分组”的题目。

在谢希仁著《计算机收集》书中同时举了一个例子,以下:

“已失效的衔接要求报文段”的发作在如许一种状况下:client发出的第一个衔接要求报文段并没有丧失,而是在某个收集结点长时刻的滞留了,致使耽搁到衔接开释今后的某个时刻才抵达server。原本这是一个早已失效的报文段。但server收到此失效的衔接要求报文段后,就误认为是client再次发出的一个新的衔接要求。因此就向client发出确认报文段,赞同竖立衔接。假定不采纳“三次握手”,那末只需server发出确认,新的衔接就竖立了。因为如今client并没有发出竖立衔接的要求,因此不会理会server的确认,也不会向server发送数据。但server却认为新的运输衔接已竖立,并一向守候client发来数据。如许,server的很多资本就白白糟蹋掉了。采纳“三次握手”的方法可以防备上述征象发作。比方适才那种状况,client不会向server的确认发出确认。server因为收不到确认,就晓得client并没有要求竖立衔接。”

《浅显大白话来明白TCP协定的三次握手和四次分离》

这就很邃晓了,防备了效劳器端的一向守候而糟蹋资本。

为什么要四次分离

那四次分离又是为什么呢?TCP协定是一种面向衔接的、牢靠的、基于字撙节的运输层通讯协定。TCP是全双工形式,这就意味着,当主机1发出FIN报文段时,只是示意主机1已没有数据要发送了,主机1通知主机2,它的数据已悉数发送终了了;然则,这个时刻主机1照样可以吸收来自主机2的数据;当主机2返回ACK报文段时,示意它已晓得主机1没有数据发送了,然则主机2照样可以发送数据到主机1的;当主机2也发送了FIN报文段时,这个时刻就示意主机2也没有数据要发送了,就会通知主机1,我也没有数据要发送了,以后相互就会兴奋的中缀此次TCP衔接。如果要准确的邃晓四次分离的道理,就须要相识四次分离历程当中的状况变化。

  • FIN_WAIT_1: 这个状况要好好诠释一下,实在FIN_WAIT_1和FIN_WAIT_2状况的真正寄义都是示意守候对方的FIN报文。而这两种状况的辨别是:FIN_WAIT_1状况现实上是当SOCKET在ESTABLISHED状况时,它想主动封闭衔接,向对方发送了FIN报文,此时该SOCKET即进入到FIN_WAIT_1状况。而当对方回应ACK报文后,则进入到FIN_WAIT_2状况,固然在现实的平常状况下,不管对方何种状况下,都应当立时回应ACK报文,所以FIN_WAIT_1状况平常是比较难见到的,而FIN_WAIT_2状况另有经常常可以用netstat看到。(主动方)

  • FIN_WAIT_2:上面已细致诠释了这类状况,现实上FIN_WAIT_2状况下的SOCKET,示意半衔接,也即有一方要求close衔接,但别的还通知对方,我临时另有点数据须要传送给你(ACK信息),稍后再封闭衔接。(主动方)

  • CLOSE_WAIT:这类状况的寄义现实上是示意在守候封闭。怎样邃晓呢?当对方close一个SOCKET后发送FIN报文给本身,你体系毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状况。接下来呢,现实上你真正须要斟酌的事变是观察你是不是另有数据发送给对方,如果没有的话,那末你也就可以 close这个SOCKET,发送FIN报文给对方,也即封闭衔接。所以你在CLOSE_WAIT状况下,须要完成的事变是守候你去封闭衔接。(被动方)

  • LAST_ACK: 这个状况照样比较轻易好邃晓的,它是被动封闭一方在发送FIN报文后,末了守候对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状况了。(被动方)

  • TIME_WAIT: 示意收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状况了。如果FINWAIT1状况下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状况,而无须经由FIN_WAIT_2状况。(主动方)

  • CLOSED: 示意衔接中缀。






实例:

TCP的作用是流量掌握,重如果掌握数据流的传输。下面以阅读网页为例,依据本身邃晓来诠释一下这个历程。(注:第二个ack属于代码段ack位)

握手历程当中传送的包里不包括数据,三次握手终了后,客户端与效劳器才正式最先传送数据。

《浅显大白话来明白TCP协定的三次握手和四次分离》

第一次握手:客户端发送syn包(syn=j)到效劳器,并进入SYN_SEND状况,守候效劳器确认;
第二次握手:效劳器收到syn包,必需确认客户的SYN(ack=j+1),同时本身也发送一个SYN包(syn=k),即SYN+ACK包,此时效劳器进入SYN_RECV状况;
第三次握手:客户端收到效劳器的SYN+ACK包,向效劳器发送确认包ACK(ack=k+1),此包发送终了,客户端和效劳器进入ESTABLISHED状况,完成三次握手。
握手历程当中传送的包里不包括数据,三次握手终了后,客户端与效劳器才正式最先传送数据。抱负状况下,TCP衔接一旦竖立,在通讯两边中的任何一方主 动封闭衔接之前,TCP 衔接都将被一向坚持下去。断开衔接时效劳器和客户端均可以主动提议断开TCP衔接的要求,断开历程须要经由“四次握手”(历程就不细写了,就是效劳器和客 户端交互,终究肯定断开)






对应的实例

IP 192.168.1.116.3337 > 192.168.1.123.7788: S 3626544836:3626544836
IP 192.168.1.123.7788 > 192.168.1.116.3337: S 1739326486:1739326486 ack 3626544837
IP 192.168.1.116.3337 > 192.168.1.123.7788: ack 1739326487,ack 1

第一次握手:192.168.1.116发送位码syn=1,随机发作seq number=3626544836的数据包到192.168.1.123,192.168.1.123由SYN=1晓得192.168.1.116要求竖立联机;

第二次握手:192.168.1.123收到要求后要确认联机信息,向192.168.1.116发送ack number=3626544837,syn=1,ack=1,随机发作seq=1739326486的包;

第三次握手:192.168.1.116收到后搜检ack number是不是准确,即第一次发送的seq number+1,以及位码ack是不是为1,若准确,192.168.1.116会再发送ack number=1739326487,ack=1,192.168.1.123收到后确认seq=seq+1,ack=1则衔接竖立胜利。





我想你应当懂了

总结到这里,也该终了了,然则关于TCP的进修远还没有终了。TCP是一个非常庞杂的协定,这里轻微总结了一下TCP的衔接与断开衔接是发作的事变,个中另有很多的“坑”,让我们后续有时刻再继承填吧。好了,终了!



搬运文章

TCP三次握手详解及开释衔接历程
起首简朴引见一下TCP三次握手
TCP 为什么是三次握手,为什么不是两次或四次?

末了引荐一个进修HTTP的github项目地点:我本身提炼的关于《HTTP威望指南》每章的学问点总结!

    原文作者:微醺岁月
    原文地址: https://segmentfault.com/a/1190000009183220
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞