title: Weird IPERF observations: MSS size get decreased from what specifed
body: <p>I am using IPERF to send some packets from one PC to another. Following things have been observed while testing MSS (Maximum Segment Size) with IPERF.</p>
  
  <p><strong>Send packets with MSS = 20 Bytes:</strong>  </p>
  
  <pre><code>iperf -c 192.168.1.98 -P 1 -i 5 -p 5001 -M 20 -m
  </code></pre>
  
  <p>We were expecting that the above command will send packets with MSS = 20 Bytes and<br>
  MTU = MSS + 40Bytes = 60 Bytes but IPERF shows that MSS = 36 Bytes (MTU = 76 Bytes).</p>
  
  <p>We saw that IPERF always sends MSS of size, 12 Bytes less than what we specify.</p>
  
  <p>Here I should point out that the PC from which I send packets is a Linux machine while the one where these packets are received is a Windows machine. We generate packets in Linux using the IPERF command while on the Windows maching JPERF is running where we see information about the incoming packets.</p>
  
  <p>Another important thing is that JPERF on the Windows machine after receiving the packets we sent, says following:
  MSS and MTU size unknown (TCP_MAXSEG not supported by OS?)</p>
  
  <p>Any idea how/why MSS get decreased?</p>