Tcp为什么三次握手?为什么不是二次、或者四次?

一、首先第一个要知道的就是tcp是一个可靠的、全双工的协议。

       并且提供排序、确认等机制,双方会互相确认,客户端(client)向 服务器(server) 发送一个 包(例如:syn),那么服务器同样也会恢复一个(ask)的确认包,根据这个概念。

  二、四次握手:

     首先4次握手是可以的,如下就是发送步骤,但是可以发送中间有两次是服务端一起发起的,那么就是不是可以一起发送嗯?根据如下的列子就可以发送4次其实是浪费资源的。

      1、客户端像服务端发送一个 的包(syn)。

      2、服务端也想客户端发送一个(ask)。

      3、服务端向客户端发送一个(syn)。

      4、客户端确认服务端发送的包(ask)。

   三、两次握手:

          如果根据4次握手可以发现4次握手是浪费的,那么中间的两次一起发就是3次握手,如果最后的一次 ask 的包不发送的话,就违背了全双工协议、不发送最后的ack整个握手也就建立不成功,会造成服务资源的浪费,这个时候服务端在发送的话就会造成资源的浪费,双发一定要有一个确认的机制。

     1、客户端像服务端发送一个 的包(syn)。

     2、服务端也想客户端发送一个(ask) + syn (包)。

     3、没有最后的ask(没有握手) 。  

总结: 三次握手是最完美的,不会造成资源的浪费,也不会造成最后的握手完成不了。

 

 Tcp为什么三次握手?为什么不是二次、或者四次?_第1张图片

  

你可能感兴趣的:(网络编程)