三次握手
基础知识
ACK、SYN、FIN这些大写的单词表示标志位,其值只能是0或者1。seq和ack这些小写单词代表序号。其中seq代表序列号,ack代表应答。
假设客户端是你女神,服务器是你,然后通过拨通电话和挂断电话的两个过程来说明三次握手和四次分手的过程。
理解
在一个平常的夜晚,你如往常一样走在回家的路上。突然你收到了你女神打来的电话。你欣喜的接起了电话。这个时候,她先讲话了,喂, 她说你能听到我说话吗?这个时候,你没有忘记学过的计算机知识,你说老师说过,这是第一次握手。你兴高采烈地回答说我能听到,然后又迫不及待地问一句,那你呢?(这就是第二次握手的过程,你做了一个应答,同时又发出一个syn请求。),当你的话传到你女神那边的时候,她回了句我也能听见啊 !这个时候对于她来讲,这次“流畅通话”就建立了。而对于你来说,还需要等你收到这句话的时候,你的“流畅通话”连接才算建立。
然后我们再来看其中的几个状态,首先是当你接到电话后,你不好意思讲话,你在等待,所以你处于监听状态。然后当你女神讲出第一句话以后,她处于同步发送状态,直到收到你的回应和请求,并发出回应以后,她建立了连接。而当你收到她的第一句话以后,你处于同步接收状态。然后你进行了第二次握手。当你收到了女神的回应的时候,你的连接建立了。
四次分手
理解
然后到了挂电话的时候,因为一般情况下你还是想聊的,然后逐渐尬聊以后,女神提出了说,今天就聊到这里吧。然后你收到消息后,你回了一句,哦,但我我还有几句话。然后你就进入了CLOSE_WAIT阶段(即舔狗时间),因为你要最后说几句话。然后说完以后,你也回了一句,那今天就这样吧。然后女神收到这句话,然后回了句,好。你收到了这句话就挂断了电话。但女神还等了两倍MSL(MSL指的是一个片断在网络中最大的存活时间,2MSL就是一个发送和回复的最大时间)的时间–即TIME-WAIT状态(拒骚扰阶段),为什么要等待,因为她明白,舔狗都是渴望回应的,她必须确定她的回复你收到了,因为如果你没收到回应,你会一直说,那就这样吧,那就这样吧,甚至再打电话问,那就这样吧。所以她等了两倍MSL的时间,如果没有再收到你的话,那就证明你收到了消息,就可以挂电话了。
这里最常考到的是CLOSE-WAIT和TIME-WAIT这两个状态,如果根据上面的情景,然后就很好记它的作用。对于你的女神来说,她有三个阶段,一是她的挂电话阶段,即FIN-WAIT1阶段。而是因为你的舔狗时间,她需要再等待FIN-WAIT2状态。然后就是刚刚说的拒骚扰阶段。
对于你来说,一是你的舔狗时刻,二是你的挂电话时间。