【网络基础】最通俗易懂的三次握手、四次挥手

目录

三次握手

第一次

第二次

 第三次

简单概括

第一次

第二次

第三次

举例说明

四次挥手

第一次

第二次

第三次

第四次

简单概括

第⼀次挥⼿

第⼆次挥⼿

第三次挥⼿

第四次挥⼿

举例说明

三次握手

《【网络基础】最通俗易懂的三次握手、四次挥手》

第一次
 

第一次握手:建立连接时,客户端发送syn包(seq=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
 

第二次
 

第二次握手:服务器收到syn包,必须确认客户端的SYN(ack=j+1),同时自己也发送一个SYN包(seq=k),即SYN+ACK包,此时服务器进入SYN_RECV状态。
 

 第三次
 

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
 

简单概括
 

第一次
 

电脑通过DNS到服务器,等待服务器确认
 

第二次
 

服务器收到访问请求,将电脑需要的东西拿出来进行对比并发送给电脑
 

第三次
 

电脑收到服务器的确认信息,可以进入服务器。

《【网络基础】最通俗易懂的三次握手、四次挥手》

举例说明
 

​        我需要去朋友家串门,首先要打电话问朋友在不在家(第一次),然后朋友接到电话回复到XX点在家,你XX点再来(第二次),我收到回复,XX点准时到朋友家(第三次)

四次挥手

《【网络基础】最通俗易懂的三次握手、四次挥手》

第一次
 

Client发送⼀个FIN,⽤来关闭Client到Server的数据传送,Client进⼊FIN_WAIT_1状态。
 

第二次
 

Server收到FIN后,发送⼀个ACK给Client,确认序号为收到序号+1(与SYN相同,⼀个FIN占⽤⼀个序号),Server进⼊CLOSE_WAIT状态。
 

第三次
 

Server发送⼀个FIN,⽤来关闭Server到Client的数据传送,Server进⼊LAST_ACK状态。

第四次

Client收到FIN后,Client进⼊TIME_WAIT状态,接着发送⼀个ACK给Server,确认序号为收到序号+1,Server进⼊CLOSED状态,完成四次挥⼿
 

简单概括
 

第⼀次挥⼿
 

当主机A的应用程序通知TCP数据已经发送完毕时,TCP向主机B发送一个带有FIN附加标记的报文段(FIN表示英文finish)。
 

客户端:发出断开连接的请求(服务器确认客户端需要断开连接请求)
 

第⼆次挥⼿
 

主机B收到这个FIN报文段之后,并不立即用FIN报文段回复主机A,而是先向主机A发送一个确认序号ACK,同时通知自己相应的应用程序:对方要求关闭连接(先发送ACK的目的是为了防止在这段时间内,对方重传FIN报文段)。
 

服务器:收到断开连接请求,等等我数据还没发送完(客户端确认服务器收到断开连接请求)
 

第三次挥⼿
 

主机B的应用程序告诉TCP:我要彻底的关闭连接,TCP向主机A送一个FIN报文段。
 

服务器:我的数据发送完了,可以断开连接(客户端确认服务器数据传输完成,可以断开连接,如果数据早已发送完,直接忽略第三次挥手)
 

第四次挥⼿
 

主机A收到主机B的FIN报文段,主机A进入到等待断开连接状态,接着再给主机B发送一个ACK报文信息,主机B收到这个报文信息,则关闭连接,完成四次挥手
 

客户端:收到,断开连接(服务器确认客户端断开连接)
 

举例说明

​        我去朋友家临时做一件事情,这时候朋友有事要出门,朋友交代说你走的话把门锁住就好了(第一次),我听到朋友说话回复好的,你先去忙,我这还有一点问题处理(第二次),朋友说没关系,我先走了,你就在这处理,你走的时候给我说一下,我处理完问题后给朋友打个电话说我已经走了,并发送一个锁门视频到朋友微信,(第三次)朋友接到电话并看到微信视频,确认我已经离开(第四次)

如果看懂了

《【网络基础】最通俗易懂的三次握手、四次挥手》

三连关注支持博主一波

《【网络基础】最通俗易懂的三次握手、四次挥手》

如果还没有看懂

《【网络基础】最通俗易懂的三次握手、四次挥手》

《【网络基础】最通俗易懂的三次握手、四次挥手》

    原文作者:A Lucky Boy
    原文地址: https://blog.csdn.net/weixin_43797577/article/details/124340313
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞