其实这个很简单了,只要明白,三次握手,四次挥手主要是用来干什么的就可以了.
三次握手:
三次握手主要是用来干什么的,为什么就需要三次呢?
其实很简单,三次握手的目的主要是为了确认双方是否同时具备网络收发的能力.
需要确保每一个主机能够: 发送数据/接收数据,当这个确认操作完成之后,那么咱们就可以正常通信了.
第一次握手:
B收到了A的消息,那么B知道A能发送数据,自己的接收数据的能力肯定OK,但是A并不知道B是否收到了,所以需要进行第二次握手.
第二次握手 :
B告诉A,你的数据我已经收到了,这个时候,B知道自己收数据是OK的,A知道自己发送数据是OK的。
但是B并不知道自己的发送数据是否是OK的?大家想想是不是,? 因为B把消息发送出去后,没有应答
所以需要第三次握手.
第三次握手:
A会告诉B,我已经确认你收到消息了,咱们可以愉快的交流了.
接下来我们来讲四次挥手。
四次挥手的目的是为什么? 其实也很简单,就是确认关闭自己的收发功能.
每个主机能同时接受数据/发送数据,所以我们必须关闭接受数据/发送数据.
第一次挥手:
A告诉B:我没有数据再发送给你了,你还有没有数据发送给我(还是可以接受数据的).
注意这里:
A只是告诉B,我不会再发送数据了,但是其实并没有关闭发送数据的连接,所以A这个时候会进行Wait,也就是进入到了Time_Wait状态.
A必须在确认B知道这个消息后关闭。
第二次挥手:
B告诉A:我知道你不会发送数据了,我这边关闭接收数据了,接下来我会把没有发送完的数据发送完毕.
这2次挥手之后,A关闭发送,B关闭接收,第三次,第四次,其实大家也都很明白了,那就是A关闭接收,B关闭发送.
第三次挥手:
B告诉A,我该发送的数据都已经发送完毕了,我已经没有数据发送给你了.
第四次挥手:
A告诉B:嗯,我已经知道你不会发送数据了,我现在已经关闭了我的接收端,你可以关闭你的发送端了.
具体这个Time_Wait的时间是多少呢?,有的说是2分钟,这块暂时遗留一下,后面补充去查一下,要么在某个系统目录,要么就定义在内核宏中.