4 ms·
TCP absolutely does have packets, it's just that by convention userland is supposed to ignore them and proxies are allowed to change the boundaries. If you con
by o11c 3y ago
TCP absolutely does have packets, it's just that by convention userland is supposed to ignore them and proxies are allowed to change the boundaries.
If you control enough of the network and set the right socket options, you can observe them being preserved though! And as a result of this observation, people ignorant of the convention have written programs that most people now consider "buggy".
- epcoa 3y agoTCP itself doesn't have packets with a size field though, it has segments. If speaking informally and everyone is on the same page, maybe it's OK to say. But this might be a good place to be pedantic, since there is confusion. The 64 KiB limit for TCP/IP is due to the 16-bit size field of the IP header. Crucially, TCP segments themselves don't have a size field (hence TCP only works over a lower layer that encodes size). TCP segments have a 16-bit window size, but that can be increased by TCP window scale option. So TCP/IP has a 64 kbyte limit, but TCP itself does not. There was a proposed RFC for IPv6 "jumbograms" but that never gained adoption. In the end, this 64k limitation being discussed comes from the DNS protocol itself where it encodes the length as a message prefix, this isn't related to TCP or IP.