4 ms·
FYI both a TCP SYN and SYN/ACK can carry a payload (which could be the GET and RESPONSE)
by dschatz 12y ago
FYI both a TCP SYN and SYN/ACK can carry a payload (which could be the GET and RESPONSE)
- cgjaro 12y agoYeah but in practice no browser does this. There is no system call on Linux or Windows to push data as part of the SYN packet. You would have to craft TCP/IP packets and their headers with a raw socket...
- opejn 12y agoEven if you did do this, any server implementing SYN cookies would ignore the payload and require you to retransmit anyway.
- wiml 12y agoIIRC, both the Linux and BSD socket implementations let you do this with a combination of a few sockopts.
- caf 12y agoLinux does support this for "TCP Fast Open" - the system call used is sendto() or sendmsg() with the MSG_FASTOPEN flag set, in place of the usual connect().
- caf 12y agoThe SYN packet can contain data, but the spec requires that it not be passed down to the application until the three-way handshake is complete (so a SYN-with-data from a spoofed source address won't elicit a response). The TCP Fast Open proposal gets around this by using a cookie, so that the first connection requires a normal three-way-handshake, but subsequent connections between the same client and host can use an expedited handshake that eliminates a round trip.