sliding window sender side
play

Sliding window - Sender side Cumulative Acknowledgments Not sent - PDF document

Sliding window - Sender side Cumulative Acknowledgments Not sent Sent, no ACK ACK:ed Free Sending buffer at the sender: Sliding Window New data sent to transport layer by application, but not yet sent Free buffer space where application


  1. Sliding window - Sender side Cumulative Acknowledgments Not sent Sent, no ACK ACK:ed Free Sending buffer at the sender: Sliding Window New data sent to transport layer by application, but not yet sent Free buffer space where application can write new data to be sent Old data sent that has already been ACK:ed (Could as well be marked as free space) Sliding window - Sender side Sliding window - Sender side Cumulative Acknowledgments Cumulative Acknowledgments Not sent Sent, no ACK ACK:ed Free Not sent Sent, no ACK ACK:ed Free Sending buffer at the sender: Sending buffer at the sender: ACTION : An ACK of the oldest sent packet arrives This data can not be sent yet, as • The window slides so that the left border is in line the sliding window in this example with the oldest outstanding ACK has a maximum size of 10 • The unsent segments that fit within the window Data that has been sent, but not ACK:ed are sent Also called the Sending window This is the sliding window (yes, it slides!) Sliding window - Sender side Sliding window - Sender side Cumulative Acknowledgments Cumulative Acknowledgments Not sent Sent, no ACK ACK:ed Free Not sent Sent, no ACK ACK:ed Free Sending buffer at the sender: Sending buffer at the sender: ACTION : The application has more data to send ACTION : An ACK arrives in the middle of the window • The data is placed in free buffer slots • Older sent but un-ACK:ed segments are now considered to be ACK:ed • The window slides and unsent segments within the window are sent • The window shrinks by one segment as there is no more than 9 segments outstanding 1

  2. Sliding window - Sender side Sliding window - Sender side Cumulative Acknowledgments Cumulative Acknowledgments Not sent Sent, no ACK ACK:ed Free Not sent Sent, no ACK ACK:ed Free Sending buffer at the sender: Sending buffer at the sender: ACTION : The application has more data to send ACTION : An ACK of already ACK:ed segments arrives • The data is placed in free buffer slots • The ACK is silently ignored • As the window is currently 9 segments wide, it can grow by one segment • The new data that fits within the window is sent Sliding window - Sender side Sliding window – Receiver side Cumulative Acknowledgments Cumulative Acknowledgments Not received Received Read Free N/A • Must keep track of outstanding data – Data sent, but not ACK:ed Read buffer at the receiver: • Must not exceed maximum window size Y X – Configuration parameter – Affects memory consumption Data that was previously received, but not yet delivered to the • Must adjust window size when application – An ACK inside the window arrives Data not yet received – New data that can fit within window arrives from application Data that was previously received and that has been delivered to application Sliding window – Receiver side Sliding window – Receiver side Cumulative Acknowledgments Cumulative Acknowledgments Not received Received Read Free N/A Not received Received Read Free N/A Read buffer at the receiver: Read buffer at the receiver: Y X Y X ACTION : Segment X arrives The sliding window holds Free buffer space where data received but not yet • Store in read buffer, register as received new segments that are read. Must also be able to • Send cumulative ACK Y to indicate that receiver received can be stored keep ”holes” like segment is waiting for Y Y Y in the segments Space unavailable This sliding window has to new segments size 12, max size 14 2

  3. Sliding window – Receiver side Sliding window – Receiver side Cumulative Acknowledgments Cumulative Acknowledgments Not received Received Read Free N/A Not received Received Read Free N/A Read buffer at the receiver: Read buffer at the receiver: Y X Y X ACTION : Segment X+2 arrives ACTION : Applications try to read 5 segments • Can not fit into the buffer, must be discarded • Only two segments are returned, still waiting for Y • Send cumulative ACK Y to indicate that receiver • Application is informed of how much data was read is waiting for Y Y • The unavailable segment at the end of the buffer becomes available Sliding window – Receiver side Sliding window – Receiver side Cumulative Acknowledgments Cumulative Acknowledgments Not received Received Read Free N/A Read buffer at the receiver: Role of sliding window is different at receiver – Represents the maximum buffer size for Y X segments received but still not read – If a segment that does not fit inside the window ACTION : Segment Y arrives arrives (either too new or too old), it is discarded. • However, an ACK is sent • Store in read buffer, register as received – To avoid running out of buffer space, receiver can • Send cumulative ACK (X+1) to indicate that receiver inform sender about available buffer space in each is waiting for (X+1) X+1 ACK 3

Recommend


More recommend