# Transmission Control Protocol (Peer-Peer)

# Transmission Control Protocol Simulator
(Peer-Peer)

## Protocol Description

TCP (Transmission Control Protocol) is a connection-oriented protocol for transferring data reliably in either direction between a pair of users. TCP is a rather complex protocol, so it is easy to lose track of the simulation. Try not to do anything too complicated! There is a client-server version as an alternative to this peer-peer simulation. The slow start simulation deals with only congestion avoidance.

Users simply send messages of a fixed size; the content of messages is not identified. The medium maximum packet size is the protocol segment size. Depending on this, messages may be sent as a number of fragments. Data transfer is also subject to the current window size of the receiver, and may be held up if the receiver's window becomes full.

To open a connection, a message is sent with the SYN (synchronise) flag. To close a connection, a message is sent with the FIN (finish) flag. Urgent messages may also be sent by selecting the PSH (push) flag as a protocol parameter.

When data arrives, it is not immediately delivered to the receiving user unless the PSH flag is set. Ordinary data is accumulated, and can be delivered later ("Deliver octets to user"). If the destination's receiving window becomes full, new requests to send data will be buffered. When the receiving window opens again, this buffered data can be sent ("Send octets to peer").

Messages may contain a send sequence number (the offset of where the message starts in the user's octet stream), an acknowledgement sequence number (the offset of the next octet expected), and the current window (how many octets can be received).

TCP is rather complex, so the simulation does not attempt to faithfully reflect all its details. Although the main paths should work as expected, it may be possible to get the simulation into unusual states in which it does not behave correctly.

Things the simulation does not cover include the following. See advanced guides to TCP for more information.

- losing an ACK that opens up the window
- "silly window" syndrome
- adaptive retransmission strategies
- congestion avoidance strategies
- dynamic window management

## Protocol Parameters

The following settings are adequate for a simple simulation. For a more advanced exploration, choose different options and click Change Settings. This may cause the simulation to restart.

User A Message Size (10 to 1000): |  | User A Push Flag: |
User B Message Size (10 to 1000): |  | User B Push Flag: |
Protocol A Receive Window (10 to 1000): |  |  |
Protocol B Receive Window (10 to 1000): |  |  |
Medium/Protocol Segment Size (10 to 1000): |
Loss Rate (0.0 = lose none, 1.0 = lose any): |

## Protocol Simulation

The protocol simulation shows a time-sequence diagram with two peer service users, protocol entities that support them, and a communications medium (network) that carries messages. Either peer actively opens a connection, to which the other peer responds. After a connection has been made, the two peers may send data messages to each other.

Up one level to Protocol Simulators