什么是TCP连接三次握手?
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;SYN:同步序列编号(Synchronize SequenceNumbers)。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
TCP需要三次握手才能建立连接,那么为什么需要三次握手呢?

tcp的三次握手和举例
TCP三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送)FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;第二次握手:主机B收到请求后要确认联机信息,向A发送acknumber=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送acknumber=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。 完成三次握手,主机A与主机B开始传送数据。
在一个月黑风高的夜晚,快要到如家酒店门口时,对面刚好走过来一位小姐姐 ,此时你向小姐姐打招呼(syn),然后对方点头并且微笑向你招手(ack+syn),但是小姐姐有点害羞以为你在和别人打招呼,又向你做出了回应,于是乎你大声喊到美女就是我(ack),然后你们就过上一家三口的日子!
TCP需要三次握手才能建立连接,那么为什么需要三次握手呢?

谁能告诉我tcp三次握手的过程?
一、TCP握手协议 在TCP/IP协议中,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状态,完成三次握手。完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。Backlog参数:表示未连接队列的最大容纳数目。SYN-ACK重传次数服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。 半连接存活时间:是指半连接队列的条目存活的最长时间,也即服务从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。
第一次握手,建立连接,客户端发送SYN包到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手,服务器收到SYN,同时自己也发送一个SYN包和一个ACK包来确认客户端的SYN,并进入SYN_RECV; 第三次握手,客户端收到服务器发来的SYN+ACK后,回复服务器端一个ACK确认,发送完毕后,双方进入ESTABLISHED状态。 三次握手成功后,开始传输数据。 三次握手更详细的解释和过程,到传智播客社区去找下,运维板块当中技术大牛整理的。我闺蜜在那学的运维现在16薪一个月12k左右,我就在这个社区自学呢。

网络的五层划分,TCP与UDP的区别,TCP的三次握手过程
化繁为简是人们解决复杂问题的常用方法,对计算机网络划分就是为了将计算机网络这个庞大的复杂的问题划分为简单的问题。通过“分而治之”解决简单的问题,从而解决复杂的问题。 五层划分是根据ISO/OSI参考模型和TCP/IP体系结构而来的 为了更好的学习计算机网络。他的五层分别是(从低到高):物理层、数据链路层、网络层、传输层和应用层。下面对以上几个层次进行简单的介绍1、物理层物理层为最底层。为数据链路层提供物理连接,传输比特流。物理层的特性包括电压、频率、数据传输速率、最大传输距离等。2、数据链路层数据链路层建立在通信和实体之间,传输以“帧”为单位的数据。保证点到点的可靠性传输。3、网络层网络层主要功能是为处在不同网络系统中的两个节点通信提供一条逻辑通道。基本任务包括路由选择、拥塞控制、网络互连等。4、传输层(最关键的一层,TCP工作在这一层)传输层为用户提供“端到端”的服务。透明的传送报文。他屏蔽了下次数据通信的细节,因此很关键。该层关系的主要问题是包括建立连接、维护和中断虚电路、传输差错校验和恢复,以及信息流量控制机制等。5.应用层应用层是最靠近用户的OSI层,这一层作为用户的应用程序(例如电子邮件、 文件传输 和终端仿真)来提供网络服务。我们假设A公司要给B公司发送邮件 老板叫 秘书来一下 你把这个邮件 寄到B公司 秘书找到顺丰快递告诉小哥 我要寄件 把这个寄到那那那(B公司地址等信息)然后快递小哥打包放在他车里 到了晚上或者某一规定时间 统一的 把他送到集散中心 装箱 送到 飞机上之后就是逆向过程 在这中间 秘书不需要知道 我的邮件是怎么运输的 我不管 你就给我运就行了 每一层 做自己的事情互不干扰。TCP三次握手中有一些词要用到先简单解释一下TCP序列号(序列码SN,Sequence Number) :32位的序列号标识了TCP报文中第一个byte在对应方向的传输中对应的字节序号。当SYN出现,序列码实际上是初始序列码(ISN),而第一个数据字节是ISN+1,单位是byte。TCP应答号(Acknowledgment Number简称ACK Number或简称为ACK Field) :32位的ACK Number标识了报文发送端期望接收的字节序列。如果设置了ACK控制位,这个值表示一个准备接收的包的序列码。ACK(Acknowledgment) :取值1代表Acknowledgment Number字段有效,这是一个确认的TCP包,取值0则不是确认包。SYN(Synchronize) :同步序列编号(Synchronize Sequence Numbers)有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。FIN(Finish) :带有该标志置位的数据包用来结束一个TCP会话,但对应端口仍处于开放状态,准备接收后续数据。当FIN标志有效的时候我们称呼这个包为FIN包。上图已经说明了三次握手的过程。1、首先由主机A发出请求连接即 SYN=1 ACK=0 (请看上面的介绍), TCP规定SYN=1时不能携带数据,但要消耗一个序号,因此声明自己的序号是 seq=2002、然后 Server 进行回复确认,即 SYN=1 ACK=1 seq=500, ack=200+1,3、再然后主机A再进行一次确认,但不用SYN 了,这时即为 ACK=1, seq=200+1, ack=500+1.然后连接建立1、当主机A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据),其中 FIN 设置为1。2、主机B收到后会给应用程序一个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。3、A收到B的确认后进入等待状态,等待B请求释放连接, B数据发送完成后就向A请求连接释放,也是用FIN=1 表示, 并且用 ack =100+1(如图)。4、 A收到后回复一个确认信息,并进入 TIME_WAIT 状态, 等待 2MSL 时间。为什么要等待呢?为了这种情况: B向A发送 FIN = 1 的释放连接请求,但这个报文丢失了, A没有接到不会发送确认信息, B 超时会重传,这时A在WAIT_TIME 还能够接收到这个请求,这时再回复一个确认就行了。(A收到 FIN = 1 的请求WAIT_TIME会重新记时)另外主机B存在一个保活状态,即如果A突然故障死机了,那B那边的连接资源什么时候能释放呢? 就是保活时间到了后,B会发送探测信息, 以决定是否释放连接。我在网上找了一个例子三次握手:A:“喂,你听得到吗?”A->SYN_SENDB:“我听得到呀,你听得到我吗?”应答与请求同时发出 B->SYN_RCVD | A->ESTABLISHEDA:“我能听到你,今天balabala……”B->ESTABLISHED四次挥手:A:“喂,我不说了。”A->FIN_WAIT1B:“我知道了。等下,上一句还没说完。Balabala…..”B->CLOSE_WAIT | A->FIN_WAIT2B:”好了,说完了,我也不说了。”B->LAST_ACKA:”我知道了。”A->TIME_WAIT | B->CLOSEDA等待2MSL,保证B收到了消息,否则重说一次”我知道了”,A->CLOSEDTCP提供面向连接的可靠的(没有数据重复或丢失)全双工的数据流传输服务,每一个TCP连接可靠地建立,优雅的关闭,保证数据在连接关闭之前被可靠地投递到目的地。 UDP面向非连接的,不可靠的传输服务。它使用ip数据包携带数据,但增加了对给定主机上多个目标进行区分的能力。UDP既不使用确认信息对数据的到达进行确认,也不对收到的数据进行排序,因此可能出现丢失、重复、或乱序现象。

tcp的三次握手和举例
TCP三次握手 TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:位码即tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequencenumber(顺序号码)Acknowledgenumber(确认号码)第一次握手:主机A发送位码为syn=1,随机产生seqnumber=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;第二次握手:主机B收到请求后要确认联机信息,向A发送acknumber=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包第三次握手:主机A收到后检查acknumber是否正确,即第一次发送的seqnumber+1,以及位码ack是否为1,若正确,主机A会再发送acknumber=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。 完成三次握手,主机A与主机B开始传送数据。

本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/63686.html。