When you use a TCP socket, as the name "SOCK_STREAM" indicates you are not writing individual packets to the socket, but a data stream, and the way TCP handles this is transparent to you. So if you write 1461 (or 1,000,000 for that matter) bytes to the stream, at the other end you will be able to read 1461 (or 1,000,000) bytes. TCP automagically takes care of chopping the stream op in segments (this is where the MSS comes into play), retransmitting listlost segments, re-ordering segments that are received out-of-order etc. If you do a packet capture (e.g using tcpdump or wireshark) then you will see (part of) that, but to your process using the socket it is all invisible.