白话解释 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状态,完成三次握手。通过这样的三次握手,客户端与服务端建立起可靠的双工的连接,开始传送数据。 三次握手的最主要目的是保证连接是双工的,可靠更多的是通过重传机制来保证的。

为什么TCP/IP需要三次握手
至少这样正常的三次交流双方都能够知道并且确认对方初始的序列号,也就是说主机1告诉主机2序列号,主机2回复主机1说收到了你的序列号并告诉主机1我的初始序列号是什么,主机1收到来自主机2的序列号以后,告诉主机2,我也收到你的序列号了。看一下对于特殊情况,这三次握手是如何处理的:这个时候,主机2对与这个过期的CR包,将会发送确认给主机1问问是否真的是有这个包,而对于过期的DATA包,主机2会识别到序列号不对而忽略。这个时候,主机2收到的CR包将被忽略,而DATA包也会因为序列号不对而被丢弃这时主机2会发送一个确认请求给主机1,问问他是否存在这个请求,而主机1回应说我已经放弃这个请求了,所以回复REJECT(ACK = y)拒绝主机2,主机2知道后就不再理会。假设主机1向主机2发送一个请求,这个请求在网络中游荡了好久,主机2还没有收到,这是主机1看见没有反应,放弃不再请求,而之前发送的这个请求才到达主机2:假设主机1向主机2发送的CR(seq = x)包以及DATA(seq = y, ACK = z)包都在网络中游荡了很久,而这时主机1已经和主机2建立了可靠的连接(seq = x + 100,ACK = y + 200)假设主机1向主机2发送的CR(seq = x)包以及DATA(seq = y, ACK = z)包都在网络中游荡了很久,而这时主机1与主机2并没有建立连接总之,三次握手后能够确保双方都能知道对方的初始序列号,而防止误收数据包的一个关键就是使用序列号进行确认

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

为什么TCP连接需要三次握手
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。这就是面试中经常会被问到的TCP三次握手。只是了解TCP三次握手的概念,对你获得一份工作是没有任何帮助的,你需要去了解TCP三次握手中的一些细节。 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
TCP需要三次握手才能建立连接,那么为什么需要三次握手呢?

TCP为什么需要3次握手与4次挥手
三次握手(建立连接) 1)客户端发送一个带SYN标志的TCP报文到服务器,这是第1个报文;2)服务端回应客户端,是第2个报文,同时带有ACK标志和SYN标志,以此回应第1步,SYN用于询问客户端是否准备好进行通讯;3)客户再次回应服务端一个ACK报文,是第3个报文。为什么要进行3次握手?当服务端的LISTEN状态下的SOCKET收到SYN报文的请求后,可以把ACK和SYN放在1个报文中来发送,其中ACK的作用是应答,而SYN的作用是同步。四次挥手(连接终止协议)1)TCP客户端发哦是那个一个FIN,用于关闭客户发送到服务器的数据传送;2)服务器收到这个FIN,返回一个ACK,和SYN一样,一个FIN将占用一个序号;3)服务器关闭客户端的连接,发送FIN给客户端;4)客户端返回ACK报文,并将确认序号设置为收到的序号+1。为什么要进行4次挥手? 在TCP连接时,是将SYN和ACK一起发送的,但为什么挥手却没有一起发送呢?因为TCP是全双工模式,接收到FIN时将没有数据再发来,但还是可以继续发送数据。
安全考虑,需要通信双方确认

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