总结下TCP的三次握手和四次挥手

之前看过很多博文和其他同僚的一些个见解。在这里我想通过自己的理解来总结一下,有总结的不到位的地方还希望各位大佬指出并纠正。

1、首先来说下TCP的三次握手直接上图

 这个图上面其实已经描述的很清晰了,在这里我用自己的话来总结下。举个简单的例子A(客户端)、B(服务端)两个人在通电话。所谓的三次握手就是A向B拨号(syn(x))、B收到(ack(x+1))后并且回复A(syn(y))、A收到B的回复(ack(y+1))ack就是知道了B的回复。

那么到这儿问题来了为什么第三次握手不可以去掉存在的意义又是什么呢?

答:第三次握手的存在是为了避免TCP的建立失败,只有在客户端和服务端相互确认收到彼此的syn同步消息后才会进行后面http相关内容的处理。在服务端向客户端同步消息的时候不确定客户端没有问题所以这第三次握手是不能够被合并或者去掉的。

2、接着讲一下三次握手之后如何关闭建立起来的TCP链接。即四次挥手

 其实如果还是拿A、B通话来说的话就是A完成后会向B同步一个结束(fin(x))指令、B接收到A的指令(ack(x+1))会向A发布知道了、B向A发布结束(fin(x))指令、A接收到A的指令(ack(x+1))会向B发布知道了那么到此结束了。

问题:为什么四次挥手中间服务端向客户端发的两次指令不能够合并到一起呢?

因为在客户端结束后想服务端发送指令后,服务端会向客户端同步指令知道了,但是此时服务端可能还没有结束可能在服务端向客户端发送结束指令前还有一些内容所以这两次挥手不能够合并到一起

原文地址:https://www.cnblogs.com/zerodang/p/15153879.html