程序员面试:三次握手与四次挥手

2025-11-19 21:01:25

1、握手的过程:

第一次握手:客户端给服务器端发送一个SYN报文;

第二次握手:服务器收到SYN报文之后,会应答一个SYN+ACK报文。

第三次握手:客户端收到SYN+ACK报文之后,会回应一个ACK报文。

服务器收到ACK报文之后,三次握手建立完成。

程序员面试:三次握手与四次挥手

2、三次握手的作用是为了确认双方的接受和发送能力是否正常。

·第一次握手:客户端发送网络包,服务器收到了。

服务器断就能得到结论:客户端的发送能力、服务端的接收能力是正常的。

·第二次握手:服务端发包,客户端收到了。

客户端就能得出结论:服务端的接收能力、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。

·第三次握手:客户端发包,服务器端收到了。

这样服务端得出结论:客户端的接收能力、发送能力正常,服务器自己的发送能力,接收能力正常。

程序员面试:三次握手与四次挥手

3、三次握手我们还能描述的详细:

刚开始客户端处于closed状态,服务端处于Listen状态。

然后:

第一次握手:客户端给服务端发送一个SYN报文,并指明客户端的初始化序列号ISN(c).此时客户端处于SYN_SEND状态。

第二次握手:服务器收到SYN报文后,会以自己的SYN报文作为应答,并且也指定了自己的初始化序列号ISN(S)。同时会把客户端的SYN+1作为ACK的值,表示自己已经收到了客户端的SYN,此时服务器处于SYN_READ状态。

第三次握手:客户端收到SYN报文之后,会发送一个ACK报文,并且也是一样把服务器的ISN+1作为ACK的值,表示已经收到服务端的SYN报文,此时客户端处于establised状态。

服务器收到ACK报文之后,也处于establised状态,此时,双方已经建立起了链接。

程序员面试:三次握手与四次挥手

4、三次握手的作用:

程序员面试:三次握手与四次挥手

5、ISN(初始化序列号)是固定的吗?

程序员面试:三次握手与四次挥手

6、什么是半连接队列?

程序员面试:三次握手与四次挥手

7、三次握手过程中可以携带数据吗?

程序员面试:三次握手与四次挥手

8、四次挥手,关闭时挥手操作。

程序员面试:三次握手与四次挥手

9、客户端主动发起关闭请求,挥手过程如图示。

程序员面试:三次握手与四次挥手

程序员面试:三次握手与四次挥手

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢