前言:看到一篇博文图解 TCP 三次握手与四次分手,记录自己的理解。
三次握手:
一:
client:喂喂喂?server你听的到吗?
第一次握手:# 测试自己的发信能力和对方的收信能力
二:
server:恩恩,我听的到你,你听的到我吗?
第二次握手:#证明对方的发信能力和自己的收信能力,测试自己的发信能力和对方的收信能力
三:
client:我也能听到你啊,那我们就开始对话吧!
第三次握手:#证明对方的发信能力和自己的收信能力,可以开始正式对话。
四次挥手:
一:
client:我要挂电话了哦。
第一次挥手:#client发送一个FIN(M)包,此时client进入FIN-WAIT-1状态,这表明client已经没有数据要发送了。
二:
server:恩恩。
第二次挥手:server收到了client发来的FIN(M)包后,向client发回一个ACK(M+1)包,此时server进入CLOSE-WAIT状态,client进入FIN-WAIT-2状态。
三:
server:我也要挂电话了。
第三次挥手:server向client发送FIN(N)包,请求关闭连接,同时server进入LAST-ACK状态。
四:
client:恩。
第四次挥手:client收到server发送的FIN(N)包,进入TIME-WAIT状态。向server发送ACK(N+1)包
server:挂了。(吧嗒,挂电话声)
第四次挥手:server收到client的ACK(N+1)包以后,进入CLOSE状态
client:喂喂?真挂了?那我也挂了!(吧嗒,摔电话声)
第四次挥手:client等待一段时间还没有得到回复后判断server已正式关闭,进入CLOSE状态。