In the three-way handshaking, only from the ACK packet we can send data. Why cannot the server send data with SYN-ACK packet? I understated why a client cannot send data to a server (preventing, for example, SYN flooding, of a malicious client), but why the server cannot send data, for example, a certification of the server?
From what I understand, it won't be problematic for both client and server.
From the client view, in the three way handshaking already knows the server ISN using the SYN-ACK packet, and it can create its connection without no problem (which, already happens in three-way handshaking).
From the server view, we don't need to create a receiving buffer on its kernel space. The sending buffer, can also be reduced effectively, if, for example, the second data is constant for all sockets (for example, a certification and a public key of the server).