What is actual difference b/w these two?

1) I have gone through many tutorials on Youtube where some have told that Window Size is what total packet size it can receive eg Window Size is 15000 bytes

and MSS is what maximum packet size can be sent is single time eg 1500bytes i.e it can send 10 packets of 1500 each to make it 15000.

2) But in some other tutorials i studied that Window Size is like after how many bytes of data it expects acknowledgement.

If 2) is correct then why timeout period is used in Flow Control Mechanism?

  • That is like trying to compare and ask for the difference between an artichoke and a cow. They are completely different things with different purposes. You cannot really compare them. – Ron Maupin Oct 6 '19 at 18:36
  • @BrianTurner would like to know to which flow control mechanism you refer. I think you mean if the timeout happens before an ACK is received, TCP will resend anything sent from the sequence number in the last ACK segment received. – Ron Maupin Oct 6 '19 at 18:58
  • 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 Dec 15 '19 at 19:23

The Maximum Segment Size is the largest TCP segment that can be transported in a single IP packet. It is derived from the Maximum Transfer Unit (MTU) minus IP header overhead minus TCP header overhead. For TCP over IPv4 over Ethernet without options, that's 1460 bytes.

The TCP window size is the amount of data "in flight", ie. being transmitted before an ACK is required. The window size depends on the channel, especially its available bandwidth and its round-trip time (RTT). The window size is adapted constantly to avoid congestion. Normally, it's a multiple of the MSS.

MSS and window size are completely different things and pretty much independent of each other.

  • check my question clearly to what is have asked for – shivaniverma6991 Oct 6 '19 at 17:03
  • 6
    The difference is that they are completely different things. – Zac67 Oct 6 '19 at 17:31

Window Size :

  1. is a setting on every participant (servers and clients) in a tcp data transfer.
  2. which describes the amount of data that can be sent before the transmitter will wait for an acknowledgement by the receiver.
  3. During session establishment client and server send 3 way handshake, and negotiate / agree on a Window Size for the session.
  4. You can find it in your registry and change the setting on your computer.


  1. is a setting on network equipment. (routers, switches, load balancers)
  2. which describes the *maximum size of the data inside a packet traversing a network segment"
  3. MSS should be discovered by client and server during session establishment, to prevent packet segmentation, and increase transfer efficiency.
  4. Most, but not all protocol stacks honor the MSS setting. Data Segments larger than the MSS will return an ICMP segment too large error message generated from the Ingress interface of the device which has the MSS set.

As a general rule, MSS is a problem for Network Engineers, and Window Size is a problem for Server and Application guys. In TCP multiple packets are sent before an Acknowledgement is expected, so Window Sizes will be much larger than MSS settings.

If by Flow Control you mean TCP Flow Control : If receiver reduces the window size to Zero then the transmitter is being instructed to stop sending data until it receives a non-zero Window from the receiver. Without a timer this could create a frozen session where the receiver is waiting for data and the transmitter is waiting for an okay to send data signal. The Persist Timer gives the transmitter a timer at which it will send a "WindowProbe" to the receiver giving it a chance to respond with a non-zero window.

  • Actually, TCP doesn't have clients or servers. That is an application-level distinction. TCP creates connections between peers, where each side is equal; each side can send or receive data and terminate the connection. In fact, there are some servers that will initiate a TCP connection with a client. The TCP RFC does not reference clients or servers, only TCP peers. – Ron Maupin Oct 6 '19 at 18:26
  • The reference has no bearing on the answer. It was used to provide context for the user which does have an understanding of "Client" and "Server". The purpose of it was to provide context for the statement "All Participants". That is why I put it in parentheses. To abstract it from the factual statement. I know that my primary mis-understanding 20 years ago when I learned about Windows was that changing the setting on my PC only helped if the server I talked too also had the setting increased. – Brian Turner Oct 6 '19 at 18:39
  • @RonMaupin Since I can't yet comment on the question due to my being new to this forum, maybe you could ask "Which Flow Control Mechanism" he is referring too, seeing as there are many different ones at different layers int he stack. – Brian Turner Oct 6 '19 at 18:50

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.