/*Google Adsense */

TCP Sliding Window

A TCP sliding window provides more efficient use of network bandwidth than PAR because it enables hosts to send multiple bytes or packets before waiting for an acknowledgment.
Each TCP packet contains the starting sequence number of the data in that packet and the sequence number of the last byte (called the acknowledgment number) received from the remote peer. With this information, a sliding-window protocol is implemented. Forward and reverse sequence numbers are completely independent and each TCP peer must track both its own sequence numbering and the numbering being used by the remote peer.

Each endpoint of a TCP connection will have a buffer for storing data that is transmitted over the network before the application is ready to read the data. This lets network transfers take place while applications are busy with other processing, improving overall performance.

To avoid overflowing the buffer, TCP sets a Window Size field in each packet it transmits. This field contains the amount of data that may be transmitted into the buffer. If this number falls to zero, the remote TCP can send no more data. It must wait until buffer space becomes available and it receives a packet announcing a non-zero window size.
TCP uses a number of control flags to manage the connection. Some of these flags pertain to a single packet, such as the URG flag indicating valid data in the Urgent Pointer field, but two flags (SYN and FIN), require reliable delivery as they mark the beginning and end of the data stream. In order to insure reliable delivery of these two flags, they are assigned spots in the sequence number space. Each flag occupies a single byte.


TCP Packet Format:
  • Source port and Destination port: Identifies points at which upper layer source and destination processes receive TCP services.
  • Sequence Number: Usually specifiers the number assigned to the first byte of data in the current message. In the connection-establishment phase, this field also can be used to identify an initial sequence number to be used in an upcoming transmission.
  • Acknowledgment Number: Contains the sequence number of the next byte of data the sender of the packet expects to receive.
  • Data Offset: Indicates the number of 32-bit words in the TCP header.
  • Reserved: Remains reserved for future use.
  • Flags: Carries a variety of control information, including the SYN and ACK bits used for connection establishment, and the FIN bit used for connection termination.
  • Window: Specifies the size of the sender's receive window (that is, the buffer space available for incoming data).
  • Checksum: Indicates whether the header was damaged in transit.
  • Urgent Pointer: Points to the first urgent data byte in the packet.
  • Options: Specifies various TCP options.
  • Data: Contains upper-layer information.

In TCP, the receiver specifies the current window size in every packet. Because TCP provides a byte-stream connection, window sizes are expressed in bytes. This means that a window is the number of data bytes that the sender is allowed to send before waiting for an acknowledgment. Initial window sizes are indicated at connection setup, but might vary throughout the data transfer to provide flow control. A window size of zero, for instance, means "Send no data".

In a TCP sliding-window operation, for example, the sender might have a sequence of bytes to send (numbered 1 to 10) to a receiver who has a window size of five. The sender then would place a window around the first five bytes and transmit them together. It would then wait for an acknowledgment.

The receiver would respond with an ACK=6, indicating that it has received bytes 1 to 5 and is expecting byte 6 next. In the same packet, the receiver would indicate that its window size is 5. The sender then would move the sliding window five bytes to the right and transmit bytes 6 to 10. The receiver would respond with an ACK=11, indicating that it is expecting sequenced byte 11 next. In this packet, the receiver might indicate that its window size is 0 (because, for example, its internal buffers are full). At this point, the sender cannot send any more bytes until the receiver sends another packet with a window size greater than 0.

No comments:

Post a Comment

Your feedback and comments are valuable for us: