目录
三次握手
第一次
第一次握手:建立连接时,客户端发送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收到这个报文信息,则关闭连接,完成四次挥手
客户端:收到,断开连接(服务器确认客户端断开连接)
举例说明
我去朋友家临时做一件事情,这时候朋友有事要出门,朋友交代说你走的话把门锁住就好了(第一次),我听到朋友说话回复好的,你先去忙,我这还有一点问题处理(第二次),朋友说没关系,我先走了,你就在这处理,你走的时候给我说一下,我处理完问题后给朋友打个电话说我已经走了,并发送一个锁门视频到朋友微信,(第三次)朋友接到电话并看到微信视频,确认我已经离开(第四次)
如果看懂了
三连关注支持博主一波
如果还没有看懂