Cell Relay Archive[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index][Thread Index][Author Index][Subject Index] Re: TCP window size
fahad@cs.pitt.edu (Fahad A Hoymany) wrote: >Vernon Schryver (vjs@calcite.rhyolite.com) wrote: >: > The MSS value is based on the smaller of the two MSS's advertized by >: > the two ends. > >: I'm sure Rick knows about the MSS option. > >: > When connection is established a smaller MSS may be >: > used if fragmentation occurs. > >: Not quite. The MSS used is the minimum of the two, regradless of >: any considerations of fragmentation. Of course, one of the reasons >: for negotiating the MSS is to avoid fragmentation, but you do the >: negotiating and use the negotiated value without noticing whether >: fragmentation would otherwise occur. > > > Let me see if I understand what you say above. You are saying the MSS > value is based on the values reported by the two ends (which is correct) > but you are also saying that this is the value that's subsequently > used! I don't think so. Like I said above, during establishment the MSS > is the minimum of the two, but once you send the first data packet, a > router that has to fragment your packet reports an ICMP message back to > you saying it has to fragment (assuming that you set IP's DF bit which > is the case in most TCP applications). Then the connection is torn > down and a new connection is requested with a smaller MSS. > > >Fahad Hmm, this not not what I understood so far. Thought it is more like this: Maximum Segment Size (MSS) is indicated by both parties during TCP session setup (in the initial frames that have the SYN flag up). MSS says: "this is the size of my front door, don't send anything larger or I won't be able to receive it. The indicated MSS is based on the size of internal buffers, etc.. MSS can very well be larger than the MTU (Maximum Transfer Unit) of the underlying network - IP takes care of fragmentation and reassembly. (MSS *can* be larger than MTU, but it wouldn't neccesarily be efficient of course). It is funny that it is called 'MSS negociation', because - my understanding - the MSS in one direction has nothing to do with the MSS in the other direction. It is not so much an negociation as a simple message: keep whatever you send down to this size or you have a problem. If host A has MSS=1k and host B's MSS=512, there is no reason for B to limit it's transmission to 512 (unless it wants to do so for it's own internal reasons). I can immagine that some implementations try to optimize things by taking (path) MTU into account when advertising their MSS - but that is at best a guessing game: path MTU varies over time. Please correct me if I'm wrong. Ernst Lopes Cardozo |
|