TCP连接的一些可能面试问题

2019-10-28  本文已影响0人  突击手平头哥

1, 对于TCP来说什么是半连接队列

答: 服务器在第一次收到客户端的SYN后, 就会处于SYN_RCVD状态, 此种连接被放在一个队列中(半连接队列)

2, ISN(Initial Sequence Number)是固定的吗(SYN请求的序列号)

答: 不是固定的, 是根据时间动态生成的, 一个 32 比特的计数器

3, 三次握手中可以带数据吗?

答: 第一/二次不可以, 防止攻击; 第三次是客户端已经处于ESTABLISHED状态, 已经建立连接了

4, SYN攻击时什么?

答: 服务器端的资源分配是在二次握手时分配的,而客户端的资源是在完成三次握手时分配的; C端伪造IP发送SYN包, S端则不断发送SYN的确认包直到超时, 但是由于源地址不存在于是这些伪造的SYN包将会长时间占用未连接队列!

5, 为什么终止一次TCP连接需要四次挥手呢?

答: 因为当服务端收到客户端的 SYN 连接请求报文后,可以直接发送 SYN+ACK 报文。其中ACK 报文是用来应答的,SYN 报文是用来同步的。
而在终止连接时, 由于可能另外一方还在工作并不会立即关闭SOCKET, 所以先回一个ACK

6, 四次回收的状态变化

答: 1, 双方处于ESTABLISHED状态, A端发起CLOSED状态, 进入FIN_WAIT1 状态; B端收到FIN请求, 进入CLOSE_WAIT状态
2, B端返回一个ACK响应, A端进入FIN_WAIT2状态
3, B端结束工作发送一个FIN请求, 进入LAST_ACK状态, A端收到后返回一个ACK进入TIME_WAIT状态
4, B端收到响应, 进入CLOSED状态

7, TIME_WAIT状态也称为2MSL状态?

答: 1, 保证最后一个ACK能到达另外一段, 因为报文可能丢失; 2, 等待2MSL可以使得本链接所产生的报文都从网络上消失使得下一个连接不会出现这种旧的请求报文段

上一篇 下一篇

猜你喜欢

热点阅读