加载中...

| 所属协议 | TCP |
| 目的 | 建立全双工连接、同步序列号 |
| 报文类型 | SYN → SYN-ACK → ACK |
三次握手的三个步骤:
初始序列号随机化很重要:早期实现的序列号可预测,攻击者可以伪造 RST 包强制断开连接(RST 攻击),随机 ISN 让这种攻击几乎不可能成功。[1]
三次握手的设计存在一个经典攻击面:服务器收到 SYN 后要保存状态等待最后的 ACK,如果大量伪造 SYN 涌入(攻击者用假 IP,ACK 永远不来),服务器的半连接队列会被撑满,新的合法连接无法处理,这就是 SYN Flood 攻击。
对策是 SYN Cookie:服务器收到 SYN 后不保存状态,而是用一个包含客户端信息和时间戳的哈希值作为 ISNs 发出去;只有收到合法 ACK(其中会带回这个值+1)时才真正分配资源。Linux 内核从很早就支持 SYN Cookie,可通过 net.ipv4.tcp_syncookies=1 开启。

| 所属协议 | TCP |
| 目的 | 建立全双工连接、同步序列号 |
| 报文类型 | SYN → SYN-ACK → ACK |
登录 后参与讨论
暂无讨论,来发表第一条评论吧