三次握手和四次挥手(面试题)

三次握手

第一次握手:客户端发送一个SYN,服务端收到了,就确定客户端可以发送,服务端可以接收

第二次握手:服务端发送一个SYN+ACK,客户端收到了,会回一个SYN,得出结论:服务端可以发送,客户端可以接收

第三次握手:客户端接收到了SYN+ACK,会进行一个完整的请求,再发一次ACK给服务端,服务端接收到,就确定可以发送请求

四次挥手

刚开始客户端和服务端处于establised 状态,假如是客户端先发送关闭请求

第一次挥手:客户端发送一个FIN报文给服务端,报文中会指定一个序列号,此时客户端处于 FIN-WAIT-1状态

第二次挥手:服务端接收到FIN后发送一个ACK报文给客户端,并且把客户端的序列号值+1作为ACK报文的序列号值,表明已经收到客户端的报文了,此时服务端处于CLOSE-WAIT状态

第三次挥手:如果服务端想要断开连接,跟客户端第一次挥手一样,发送一个FIN报文,并且指定一个序列号,此时处于 LAST-ACK状态

第四次挥手:客户端接收到服务端的FIN后,把服务端的序列号值+1作为ACK报文的序列号值,此时的状态是TIME_WAIT状态,需要过一阵子等确定服务端接收到ACK报文才会处于CLOSED状态

5.服务端接收到ACK之后,就会关闭连接,就处于CLOSED状态了,

这里特别需要主要的就是TIME_WAIT这个状态了,这个是面试的高频考点,就是要理解,为什么客户端发送 ACK 之后不直接关闭,而是要等一阵子才关闭。这其中的原因就是,要确保服务器是否已经收到了我们的 ACK 报文,如果没有收到的话,服务器会重新发 FIN 报文给客户端,客户端再次收到 ACK 报文之后,就知道之前的 ACK 报文丢失了,然后再次发送 ACK 报文。

      至于 TIME_WAIT 持续的时间至少是一个报文的来回时间。一般会设置一个计时,如果过了这个计时没有再次收到 FIN 报文,则代表对方成功就是 ACK 报文,此时处于 CLOSED 状态。


———————————————————————————————————————————

 

这里是简单的回答,详细的可以看

原文链接:https://blog.youkuaiyun.com/dreamispossible/article/details/91345391

面试中被问到三次握手四次挥手应该怎么回答?---------不看后悔系列_dreamispossible的博客-优快云博客_面试三次握手四次挥手

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值