冲刺面试三次握手和四次挥手!!

为面试做准备中。

三次握手

如果想要准确的把数据传送给对方,一开始需要进行三次握手

如下图(图片来源网络):

冲刺面试三次握手和四次挥手!!

网上三次握手都是三步骤搞定。

这里为了方便大家理解,我先拆成四步骤。

冲刺面试三次握手和四次挥手!!

客户端要和服务端建立通信,需要发送一个SYN给服务端。

服务端接受到信息后,需要返回一个ACK表示确实收到了。

服务端要和客户端建立通信,需要发送一个SYN给客户端。

客户端接受到信息后,需要返回一个ACK表示确实收到了。

简单点理解就是一个SYN需要和一个ACK匹配,不能落单。

再来看一下这图

冲刺面试三次握手和四次挥手!!

很容易发现服务端发了一个ACK后又立马发了一个SYN。好兄弟!没必要好吧,可以一次完成的事情非得用两次吗。

于是又变成了下面这图了
冲刺面试三次握手和四次挥手!!

所以只需要3次握手可以建立通信了。

说了半天,图解也出来了,那我想问一下SYN是什么?

SYN (Synchronize Sequence Numbers)同步序列编号,是建立连接时用到的同步信号,重点在于同步。想象一下你和你家人看电视,不同步能行吗(你看你的,他看他的)?不行的小兄弟。这里只是解释一下同步。我觉得你也只需要理解到这一步就行了,太专业的术语我们不用弄的太明白。

ACK(Acknowledgement)确认的意思,不用多解释了吧。

对了听说面试官很喜欢考:第二次握手传回了ACK,为什么还要传回SYN?

修改一下别人的回答(然后就变成我的回答了)

传回ACK是为了告诉发送端,你到我这里的通信是正常的。而回传SYN则是为了建立从服务端到客户端的通信。”

再说一下为什么需要三次握手(算是对上面的总结,也是面试常客)

引用guide哥的回答:三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。

这段话你们都能明白?应该都可以把!算了我解释一下:简单点说三次握手是为了正常通信做准备,先建立一个可靠的通信信道,这样子正常交流才仅仅有了基本的保障。

三次握手就是一步步的让双方都清楚双方的发送与接受是否正常。很拗口对不!认真看完下面这一点内容你就懂了。

第一次握手:Client 什么都不能确认;Server 确认了对方发送正常,自己接收正常

第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常

第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常

上面的逻辑很简单、记得看完。

所以三次握手就能确认双发收发功能都正常,缺一不可。

你以为成功建立了三次握手就能准确通信了吗,醒醒吧孩子!这只是万里长征的第一步。
引用guide哥的一段回答:

(TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源)

有一句话叫大处着眼、小处着手。在这里体现的就是我们要知道三次握手在通信过程中是处在什么位置、然后搞懂三次握手。这样子知识才是完整的好吗?

中间的确认机制、窗口大小、重传机制啊,要是是面试重点的话,以后应该会补上吧。

有点长了,下篇在说四次握手。

赶紧关注我,点个赞!!!更多精彩内容、更多基础知识将在以后陆续放送,我们下次再见。

冲刺面试三次握手和四次挥手!!

四次挥手

上一篇:nmap相关


下一篇:通俗理解TCP的三次握手