- Oct 3, 2014
- 2
- 0
- 0
Hey guys. I'm new here. I have a question concerning TCP Maximum Segment Size advertising between two endpoints that I wasn't able to find in the RFCs and other documents that I've read.
Say that I have a TCP connection to a server (of any kind) and I advertise an MSS of 800 bytes in my SYN packet and in the server's SYN+ACK it advertises it's own MSS of 1,000 bytes. The lower of the two is supposed to be taken and used, to avoid IP fragmentation, so I could receive up to 800 bytes (the server could send me up to that amount) and the server can receive up to 1,000 bytes. Would it be legal (as per the TCP MSS standard spec) to send the server >800 bytes? IE., say I send the server 900 or 1,000 byte TCP segments but continue to receive the 800 byte limit that I advertised/imposed during the TCP connection setup, would this still be legal since it's within the server's own advertised MSS?
What's unclear to me is whether the MSS is always supposed to apply to both inbound and outbound TCP segment transmissions (ingress & egress/Rx & Tx). While this seems to be the case, I also know that the MSS can differ for an endpoint's inbound and outbound interfaces (ie., they're different, multihomed), so this is why I ask. As long as I send <= 1,000 byte TCP segments, there wouldn't be any fragmentation between us (provided that the path's intermediate routers/hops support up to 1,000 byte segments), and on the return path I'd be able to receive up to my advertised 800 bytes for TCP segments.
From what I've read it sounds like the MSS is a bidirectional/symmetrical value that applies to them both, even though this could be different (variable) in each direction. Other papers I've read and e-books say it only corresponds to how many bytes per TCP segment that can be received without incurring IP fragmentation. If any networking experts could help clarify this I'd really appreciate it. While every TCP/IP stack I know would likely limit my outbound TCP segments to 800 bytes as well, I'm just asking if my scenario would still be technically legal in regard to the TCP MSS spec (and TCP in general), not whether it's actually ever handled like this in various OS TCP/IP stacks.
Thanks in advance!
			
			Say that I have a TCP connection to a server (of any kind) and I advertise an MSS of 800 bytes in my SYN packet and in the server's SYN+ACK it advertises it's own MSS of 1,000 bytes. The lower of the two is supposed to be taken and used, to avoid IP fragmentation, so I could receive up to 800 bytes (the server could send me up to that amount) and the server can receive up to 1,000 bytes. Would it be legal (as per the TCP MSS standard spec) to send the server >800 bytes? IE., say I send the server 900 or 1,000 byte TCP segments but continue to receive the 800 byte limit that I advertised/imposed during the TCP connection setup, would this still be legal since it's within the server's own advertised MSS?
What's unclear to me is whether the MSS is always supposed to apply to both inbound and outbound TCP segment transmissions (ingress & egress/Rx & Tx). While this seems to be the case, I also know that the MSS can differ for an endpoint's inbound and outbound interfaces (ie., they're different, multihomed), so this is why I ask. As long as I send <= 1,000 byte TCP segments, there wouldn't be any fragmentation between us (provided that the path's intermediate routers/hops support up to 1,000 byte segments), and on the return path I'd be able to receive up to my advertised 800 bytes for TCP segments.
From what I've read it sounds like the MSS is a bidirectional/symmetrical value that applies to them both, even though this could be different (variable) in each direction. Other papers I've read and e-books say it only corresponds to how many bytes per TCP segment that can be received without incurring IP fragmentation. If any networking experts could help clarify this I'd really appreciate it. While every TCP/IP stack I know would likely limit my outbound TCP segments to 800 bytes as well, I'm just asking if my scenario would still be technically legal in regard to the TCP MSS spec (and TCP in general), not whether it's actually ever handled like this in various OS TCP/IP stacks.
Thanks in advance!
 
				
		 
			 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		
 Facebook
Facebook Twitter
Twitter