TCP三次握手与四次挥手的机制与原理

我们先来了解一下 为什么建立连接需要三次握手?

   首先非常明确的是两次握手是最基本的。第一次握手,客户端发了个连接请求消息到服务端,服务端收到信息后知道自己与客户端是可以连接成功的,但此时客户端并不知道服务端是否已经接收到了它的请求,所以服务端接收到消息后的应答,客户端得到服务端的反馈后,才确定自己与服务端是可以连接上的,这就是第二次握手。

那么为什么需要第三次握手呢?

   如果只有两次握手,就建立连接了,但是此时客户端并没有任何数据要发送,而服务端还在傻傻的等候佳音,造成很大的资源浪费。所以需要第三次握手,等待客户端再次回应一下,以避免这种资源浪费情况。

可以把三次握手做如下通俗易懂的比喻:
TCP三次握手与四次挥手的机制与原理

   你招手→(告诉妹子,你长得很漂亮,咱俩处处对象吧!)
   妹子点头微笑并招手→(妹子回答:好呀,我也很欣赏你)
   你点头微笑→(再次告诉妹子,认识您很高兴,咱们一起去旅游吧,接下来就是开始交谈的过程)

   试想一下,如果只有两次握手,就建立连接了,但是此时你没话跟妹子说,妹子却还在傻傻的等候您的佳音,甚至怀疑您是不是要跟我打招呼,这样就会造成很大的时间浪费,所以需要第三次握手(再次告诉妹子,认识您很高兴。然后接下来就是您和妹子开始交谈的过程)。

既然了解了建立连接需要三次握手,那么就来讲解一下TCP握手协议。

由于TCP属于面向连接,所以在进行数据通讯前要建立会话,并且同步数据包编号,采用三次握手建立一个连接。
   第一次握手:建立连接时,客户端PC发送SYN包(SYN=seq=100)到服务器,并进入SYN_SEND状态,等待服务器确认;
SYN:同步序列编号(Synchronize Sequence Numbers)。
   第二次握手:服务器收到SYN包,必须确认客户的SYN(ack=100+1),同时自己也发送一个SYN包(syn=seq=300),即SYN+ACK包,此时服务器进入SYN_RECV状态。
   第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=300+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
客户端A与服务端B建立TCP连接时:首先A向B发SYN(同步请求),然后B回复SYN+ACK(同步请求应答),最后A回复ACK确认,这样TCP的一次连接(三次握手)的过程就建立了!
TCP三次握手与四次挥手的机制与原理

TCP的四次挥手(Four-Way Wavehand)

   对于"三次握手"我们耳熟能详,因为其相对的简单。但是,我们却不常听见“四次挥手”,就算听过也未必能详细地说明白它的具体过程。下面就为大家详尽,直观,完整地介绍“四次挥手”的过程。

所谓的四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放。

可以把四次挥手做如下通俗易懂的比喻:
TCP三次握手与四次挥手的机制与原理

关于TCP连接的各种状态

TCP三次握手与四次挥手的机制与原理TCP三次握手与四次挥手的机制与原理

—————————————————————————————————————————————

版权声明:发帖不易,转载请附上原文出处链接及本声明。