TCP三次握手和TCP四次挥手
前言
以前经常听见TCP三次握手和TCP四次挥手,但是自己都没有具体的了解过它们的过程。这次终于了解一些了,所以就记录一下把。
一、TCP三次握手:
当两台主机要进行相互通信时。要确保双方通信的正常,所以要确认两台主机都具备收和发的功能。其实三次握手就是主机A和B之间发了三条消息
一、首先主机A需要确认主机B既可以收又可以发,于是给主机B发送一条请求通信的消息即第一次握手。
第一次握手主要传递两个信息:
(1)是请求建立链接用SYN= 1表示;
(2)是发出一个序列号用seq = X表示(X是一个数);
二、当主机B收到来自主机A的消息后,主机B回复主机A的消息,表示主机B可以收到消息并且能够发送消息。这就是第二次握手。
第二次握手主要传递三个信息:
(1)是同意建立链接 SYN = 1;
(2)是确认收到了刚才的消息,ack = X + 1;(主机A发出的 seq + 1)
(3)是发送自己的序列号 seq = Y(Y也是一个数);
三、主机A收到主机B的回复消息后,为了表示自己也能收到消息,还要向主机B发送一条消息。这就是第三次握手
第三次握手主要传递三个信息:
(1)是表示现在开始发送 SYN = 0;
(2)是表示能成功收到主机B的消息 ack = Y + 1;(主机B发出的 seq + 1)
(3)这条消息的序列号 seq = X+ 1;(自己开始发送的 seq + 1)
当三次握手完毕后,主机A与主机B之间就可以相互通信了
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、TCP四次挥手:
在两台主机通信完毕后就应该“挥手告别”。并且告知对方自己任务已经完成不要再发送信息了。
1、第一次挥手:这时候相当于A向B传递数据,数据已经传递完了,但是还是不能断开链接,因为B不知道数据已经传递完毕了。于是有了第一次挥手,A告诉B自己的数据已经发送完了
2、第二次挥手:当收到A发送的消息后,B的数据还没有接收完毕。所以只能向A发送自己知道数据已经发送完毕了。这就有了第二次挥手,B回复A自己知道数据已经发送完毕了。
3、第三次挥手:A收到了B的回复。但是B数据还没有接收完毕,所以A只有等待B接收完数据再向它发送消息了。当B终于接收完数据后,开始向A发送消息了。这样就有了第三次挥手,B再向A发送一封自己数据已经接收完毕的消息。
4、第四次挥手:A终于等到B发来的数据接收完毕消息了,这时它就安心的断开与B的连接了。这就是第四次挥手,A了解了B已经接收完毕了,并且断开连接了。
总结
感觉TCP的三次握手就像是间谍在向自己人汇报敌国情报,间谍A向自己人B传递信息:兄弟,是自己人吗,现在通信安全吗? 然后,间谍B回复:是自己人,可以通信,但是你那里安全吗? 第三次,间谍A回复:我这里安全,我们开始通信吧。
而TCP的四次挥手,就像是间谍A发完秘密情报后,A对B发消息:兄嘚我的情报汇报完毕了,你接受完了吗? 然后B对A说:兄弟知道了,但是你的情报有的还在路上,你还要等一下。要是情报丢失了,你还要重新发一份。 于是A就继续等待,终于情报成功送到了,然后B向A发消息说:我们已经成功收到敌国的情报了,你就等着回国接收奖励吧。 最后,间谍A回复B,表示自己知道了,很荣幸为国家效力。然后心满意足的断开了与B的通信渠道,继续开始了他的间谍生涯。