软件开发类常见面试问题整理01

1.TCP三次握手,四次挥手

软件开发类常见面试问题整理01
软件开发类常见面试问题整理01
讲清楚这两张图就可以了,详细的看 谢希仁《计算机网络》

2.TCP三次握手,三次握手存在不存在什么问题,是否会发生什么攻击?

软件开发类常见面试问题整理01
软件开发类常见面试问题整理01
软件开发类常见面试问题整理01

3.accept系统调用是在三次握手的那个阶段?

软件开发类常见面试问题整理01

4.三次握手为什么比四次挥手多一次?

因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的,client在回复ACK报文。双方关闭连接要经过双方都同意。所以,首先是客服端给服务器发送FIN,要求关闭连接,服务器收到后会发送一个ACK进行确认。服务器然后再发送一个FIN,客户端发送ACK确认。

5.为什么要存在time wait状态?

客户端最后一次向服务器回传ACK包时,有可能会因为网络问题导致服务器收不到,服务器会再次发送 FIN 包,如果这时客户端完全关闭了连接,那么服务器无论如何也收不到ACK包了,所以客户端需要等待2MSL、确认对方收到ACK包后才能进入CLOSED状态。