TCP 的三次握手,四次挥手和重要的细节—干货满满,建议细读( 六 )

服务器的这种状态称为静默(muted) 。 为了抵御 SYN Flood 攻击 , 服务器可以采用「SYN cookies」 , 这种思想是 , 当 SYN 到达时 , 并不直接为其分配内存 , 而是把这条连接的信息编码并保存在 SYN-ACK 报文段的序列号字段 , 如果客户端回复了 , 服务器再从 ACK 字段里解算出 SYN 报文的重要信息(有点黑魔法的感觉了) , 验证成功后才为该连接分配内存 。 这样 , 服务器不会响应攻击者的请求 , 正常连接则不会受到影响 。

但 SYN cookies 本身有一些限制 , 并不适合作为默认选项 , 有兴趣可以自行 Google 。

第三次握手

这是建立 TCP 连接的最后一步 , 经过前两次握手 , 客户端(服务器)已经知道对方的滑动窗口大小 , 初始序列号等信息了 , 这不就完了吗?为什么还要第三次握手?

这是因为服务器虽然把数据包发出去了 , 但他还不知道客户端是否收到了这个包 , 所以服务器需要等待客户端返回一个 ACK , 表明客户端收到了数据 , 至此 , 连接完成 。

连接建立后 , 进入传输数据的阶段 , 这里就涉及到很多很多技术 , 我会另写文章 。

推荐阅读