1

In doing online searches, the value "65,535" is often referenced as the maximum packet size for TCP. Where is this stated?

I ask because RFC 793 states, in relation to the "Maximum Segment Size" field...

"If this option is present, then it communicates the maximum receive segment size at the TCP which sends this segment. This field must only be sent in the initial connection request (i.e., in segments with the SYN control bit set). If this option is not used, any segment size is allowed."

Since this field is 16-bits wide, I can see where the maximum constrained segment size would be 65,535 bytes. But, absent the constraint, this reads that there is no limit on segment size.

The "only workaround" I see is that RFC 1122 identifies a default of 576 if a value is not provided, which becomes a forcing factor that either defaults to 576 or to a supplied value...for which the maximum is 65,535.

While I can see that the combination of RFCs 793 and 1122 lead to the 64,535 limit, is there anywhere where this is pulled together in a single reference?

  • 2
    The Total Length field in the IP header is 16 bit and thus an IP packet (and therefore TCP packet) can not be larger than 65535 bytes. The TCP payload is actually even smaller since you have to subtract the TCP header from maximum packet size of the IP packet. – Steffen Ullrich Aug 11 '17 at 18:06
  • Okay, this is more directly traceable. TCP rides on IP, and IP has a "TCP Length" field that is 16-bits wide, constraining the TCP payload to 65,535 bytes. And, extending your assertion about "...is actually even smaller...", the min TCP header size is 20 bytes, and max is 60. So, the max reliable value would be 65,475. - Thanks! Way better than having to reference RFC 1122 for a rationale. – SoCal Aug 14 '17 at 19:13
  • 1
    "IP has a "TCP Length" field" No, it doesn't. IP doesn't know anything about TCP. The IPv4 header has a 16-bit Total Length field that specifies the length of the entire IPv4 packet, including the IPv4 header and the payload (which may include a TCP segment). The IPv6 header has a 16-bit Payload Length field that specifies the length of the IPv6 packet payload (which may include a TCP segment), exclusive of the IPv6 packet header. IP really doesn't know or care what is in the packet payload. It may be TCP, UDP, or something else entirely. – Ron Maupin Oct 11 '17 at 13:01
  • Did any answer help you? If so, you should accept the answer so that the question doesn't keep popping up forever, looking for an answer. Alternatively, you can provide and accept your own answer. – Ron Maupin Feb 19 '18 at 19:34
1

RFC 791 might be what your looking for. Search 65,535 to find it quickly in the doc. link

For Ipv6 is rfc 2675 includes info on Jumbo link

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.