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
可以使得本链接所产生的报文都从网络上消失使得下一个连接不会出现这种旧的请求报文段
网友评论