在RFC7413中看到这么一段话
Standard TCP already allows data to be carried in SYN packets
([RFC793], Section 3.4) but forbids the receiver from delivering it
to the application until the 3WHS is completed. This is because
TCP's initial handshake serves to capture old or duplicate SYNs.
不是很能理解这句This is because TCP's initial handshake serves to capture old or duplicate SYNs.
点开RFC793, Section 3.4看了一些说明以及例子后还是没有找到携带数据与捕获旧/重复SYN之间的关系,希望各位能帮忙解惑。
同时有一些博客有提到一点:TCP第一次连接的时候SYN不携带数据是为了防止被利用于网络攻击上,看上去很有道理,不过我没找到什么资料证明这个观点。假设这个观点是正确的,那么服务器接受到携带数据的SYN包的响应动作会是哪个:(有点晚了明日再手动测试一波)
- 接受到SYN包,丢弃数据部分,继续进行连接步骤。
- 接受到SYN包,发现携带数据,说明这个包不讲武德是个坏包,整个包丢弃。
- ...