tcp 为什么要三次握手?
tcp 为什么要三次握手? 我们假设A和B是通信的双方。我理解的握手实际上就是通信,发一次信息就是进行一次握手。 第一次握手:A给B打电话说,你可以听到我说话吗?第二次握手:B收到了A的信息,然后对A说:我可以听得到你说话啊,你能听得到我说话吗?第三次握手:A收到了B的信息,然后说可以的,我要给你发信息啦!在三次握手之后,A和B都能确定这么一件事:我说的话,你能听到;你说的话,我也能听到。这样,就可以开始正常通信了。 注意:HTTP是基于TCP协议的,所以每次都是客户端发送请求,服务器应答,但是TCP还可以给其他应用层提供服务,即可能A、B在建立链接之后,谁都可能先开始通信。如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。若采用三次握手,服务器端没有收到来自客户端的再此确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。
三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。

试用具体例子说明为什么在运输连接建立时要使用三次握手。说明如不这样做可能会出现什么情况。
我们知道,3次握手完成两个重要的功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送和确认。 现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。7-06因为IP数据报的首部的总长度字段为16bit,因此IP数据报最大长度为216-1=65535字节(即64KB),再减去IP首部(20字节)和TCP首部(20字节),则为TCP报文段的最多字节即65495字节。能,当要传送的数据字节长度超过TCP报文的序号字段的最大序号时,则又重新从最小序号开始循环重复使用。因为序号字段有32位长,可对4GB的数据进行编号,这样就可以保证当序号重复使用时,旧序号的数据早已在网络中消失了。7-23因为以太网对应的MTU为1500字节,减去IP首部20字节,所以以太网上传送UDP用户数据报的最大大小为1480。8192整除1480可知应当划分为6个数据包片,前5个是1480字节,最后一个792字节。片偏移字段的值分别为:0, 1480/8 = 185, 1480*2/8 = 370, 1480*3/8 = 555, 1480*4/8 = 740, 1480*5/8 = 925。7-27发送时延 = 65535*8/(1*109) 秒。往返时延 = 2*10*10-3 = 0.02ms。总时延 = 往返时延+发送时延 = 0.02052428 秒吞吐量应为:65535*8 / 总时延 = 65535*8 / 0.02052428 = 25.5 Mb/s7-28具有相同编号的报文段不应该同时在网络中传输,必须保证,当序列号循环回来重复使用的时候,具有相同序列号的报文段已经从网络中消失。现在报文段的寿命为30秒,那么在30秒的时间内发送方发送的报文段的数目不能多于255个。 255×128×8÷30=8704b/s 所以,每一条TCP连接所能达到的最高数据率为8.704Kb/s。7-29264(字节)*8(位/字节)/(75*1012(b/s)) = 1967652.7(s) = 22.77(天)7-30一个TCP连接下面使用256kbit/s的链路,其端到端时延为128ms。经测试,发现吞吐量只有120kbit/s。试问发送窗口是多少?答:设发送窗口为X字节,假定一次最大发送量等于窗口值,那么,每发送一次都得停下来等待得到本窗口的确认,以得到新的发送许可,这样发送时延为8*x/(256*103) 秒。往返时延 = 128*2 = 256ms。总时延 = 往返时延+发送时延 = 256*10-3+8*X/(256*103) 秒吞吐量应为:8*X/总时延 = 8*X / (256*10-3+8*X/(256*103)) = 120*103所以:X = 7228 字节7-31传播时延 = 20 (km) / 200 (km/ms) = 0.1ms往返时延 = 2*传播时延 = 0.2ms发送时延 = 往返时延 = 0.2ms 发送速率 = 1*103*8 / (0.2*10-3) = 40*106 = 40Mb/s
客户A与服务器B建立连接。 三次握手主要是为了防止已失效的连接请求报文段突然又传送到了B,因而产生错误。“已失效的连接请求报文段”是这样产生的:1.考虑一种正常情况。A发出连接请求,但因连接请求报文丢失而未收到确认。于是A再重传一次连接请求。后来收到了确认,建立的连接。数据传输完毕后,就释放了连接。A共发送了两个连接请求报文段,其中第一个丢失,第二个到达了B。没有“已失效的连接请求报文段”。2.假定现出现了一种异常情况。A发出的第一个连接请求报文段没有丢失,而是在某些网络节点长时间滞留了,以致厌恶到连接释放以后的某个时间才到达B.但B受到此失效的连接请求报文段后,就误认为是A又发出一次新的连接请求。于是就向A发出确认报文段,同意建立连接。但其实A并没有发出新的连接请求,因此不回理睬B的确认,也不会像B发送数据。而B却以为新的运输链接已经建立了,并一直等待A发来数据。B的许多资源就这样白白浪费了。因此,采用三次握手的办法可以防止上述现象的发生。例如在刚才的情况下,A不会向B的确认发出确认。B由于收不到确认,就知道A并没有要求连接。 希望可以帮到你!

传输连接的建立和释放为什么要采用三次握手协议?使用两次握手建立连接会产生死销吗?
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端不会产生死销、但会增大额外开销的流量,因为TCP 需要时刻跟踪
TCP是面向连接的协议 所以需要3次握手 如果2次就是DDOS攻击的一种了 叫做land攻击

试用举例例子说明为什么在运输连接建立时要使用三次握手,如不这样做可能会出现什么情况?
传输层使用的协议为tcp和udp,而三次握手是用来确保TCP传输的安全性和可靠性,他们之间通过三次握手中的反复请求和确认,来确定目的主机的存在和允许与对方取得连接,从而保证数据传输的可靠性,这就区别与UDP的不可靠性,但是两者中TCP需要经过三次握手才能建立一个安全可靠的连接,所以效率比较低,但是安全性高,而UDP不需要,在传输数据中不管你收没收到它都会照常转发数据,所以效率高,但是不可靠,在网络数据传输中至于如果没有三次握手,会出现什么样的情况,比较一下这两个协议基本就有了一个大概的认识,但具体会出现一个什么样的情况,兄弟我就不干妄答了。

4、为何使用TCP三次握手建立连接?
TCP/IP的三次握手的过程原理 它就好象你要去找一个人一样,首先是打电话联系,看别人有空没,如果他给你回答,可以,你在去找他!就是这个过程!为什么要实现这么多的过程,不直接发送过去呢?当然是为了实现有保证的连接了,要不然的话,发送过去了,但接受方可能收不到!附原理:在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状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据。

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