Let's suppose there are two hosts A and B and they are going to communicate over TCP. I am curious about the behavior of TCP related to MSS. Wikipedia says default value of MSS is 536. But, RFC-793 states - when MSS option is not specified any segment size is allowed. These two statements confused me and I am curious to know about following scenarios:
When both host doesn't specify MSS during TCP handshake, would the MSS value used by both host will be 536, else what? How TCP stack on both sides will treat an incoming TCP segment which has more payload than MSS? Will both the host discard that packet?
When Host A doesn't specify MSS during TCP handshake and Host B does, what would be MSS value assumed by peer (Host B)? 536 or something else? What would be the behavior of Host A when it receives a packet with TCP segment which contains payload more than 536 bytes (default MSS value). Would Host A discard that packet?
When both the hosts specify MSS and send TCP segment containing payload larger than MSS?
Thx in advance!