2020.05.24
核心思想或者说实现目标:
按照这样的逻辑来看必须在客户端和服务端至少有三次通信:
client server
|-------- SYN seq=x ------->|
|<--- SYN seq=y ACK=x+1 ----|
|--------- ACK=y+1 -------->|
顺便说一下,DDOS攻击中就有一种是利用发送建立联机请求但是不响应占用服务器资源的攻击方式。
client server
|-------- FIN seq=x ------->|
|<------- ACK=x+1 ----------|
|<------- FIN seq=y --------|
|-------- ACK=y+1 --------->|
这里需要说明的是为什么会有第五步,而不是在第四步结束后双方都关闭连接,这是因为客户端需要保证服务端能顺利接收到 ACK=y+1
,当服务端接收不到的时候,服务端会在第三步 FIN seq=y
的基础上进行一次重新发送,所以4m的等待时间(time_wait
状态)是为了这里重发的可能性。