CS422 lecture notes (Nov. 30-Dec. 2)


TCP

- Adaptive Retransmission

     - The retransmission timer is computed from an estimate of the roundtrip time average plus standard deviation.
              

How TCP achieves reliability?
Acknowledgements
      - receiver sends an acknowledgement when data arrives
Retransmission
      - sender starts a time whenever a message is transmitted
      - if timer expires before the acknowledgement arrives, sender retransmits message

How long should TCP wait before retransmitting?
       - timer too long: slow to send data if packet are lost
       - time too slow: many retransmissions even if packets are no lost
       - time length: should be about the round trip time. 
           - round trip time depends on:  distance,   traffic condition,     media

TCP uses "adaptive" retransmission"
        TCP keeps an estimate of roundtrip time
        TCP uses this formula:
                                retransmission time = Avg. round-trip time + variance round-trip time
        Variance is used to take into account current changes in round-trip time
        Adaptive retransmission is key to TCP success.
            - TCP has to run in slow and fast networks (28kbps or 100 Mbps ethernet)

Retransmission
    - Window: the sender can send in parallel, multiple messages w/o waiting for acknowledgement

    - Windows also allow the maximum usage of the network.

 

 

 

TCP FLOW CONTROL

__________                                                                                            _______
| Sun Server |    ------------------ XXXXXXXXXXXXX----------------| Laptop |
                                                                                            300 Kbps
64 processors, send 100 MB file                            TCP buffers in laptop will be filled if application is too slow to read from them

- Receiver tells server to slow down when the buffers in the receiver are full.
- Receivers in every acknowledge will also include the buffer space that is available.
- This available buffer space is also called "window size".
- sender can send up to the entire window size received before the next acknowledge arrives.
- acknowledgements will include:
            - number of bytes (consecutive) received correctly so far
            - windows size: Available buffer space in receiver

 

Notes of flow control:   

- By using a window size, the sender can send in parallel data up to the windows size without waiting for an acknowledgement. 
       This increases throughput.   

- Cummulative acknowledgements
            The acknowledgements are sent for all consecutive bytes received correctly so far.
            The TCP implementation in the receiver may decide not to send acknowledgements for every packets received but to wait until several packets arrive before sending an acknowledgement for all of them.

Congestion Control
    - when a network is congested, routers drop packets.
    - If packets are dropped, more packets are retransmitted making things even worse.
    - TCP decreases the problem by not being to aggressive in retransmissions.

    - TCP uses a technique called "slow start"
            - After a packet is lost, it will not send the complete window size full of bytes
            - TCP is going to send only one message with data
            - IF it succeeds, it will send two messages, then four until it reaches the window size.

    - Reliable connection startup and shutdown

        Why reliable connection/startup is difficult?
                - Packets lost, duplicated, out of order, either side can crash or reboot.
                - Duplicate shutdown messages may affect future connections.

    - TCP uses a technique called "3-way handshake" in both the connection startup and shutdown.

FORMAT OF TCP Packets

size of Ethernet= 14 bytes
size of IP header = 20 bytes
size of TCP header = 20 bytes
total = 54 bytes

FIELDS
    source port / destination port
        - identify source + destination application within the source/destination machine.
        - A TCP connection is defined uniquely in t the entire Internet by FOUR values:  
                  IP source address
                  source port
                  IP destination address
                  destination port
    The TCP implementation will separate the packets receive based on these values.

- By default TCP does not reuse the same port 266 seconds after it has been closed. An application may overwrite this behavior (http server)
- This is to prevent packets that survive after closing the connection to enter in newly opened connections.

Sequence Number
        - Offset of the data currently sent relative to all the data sent so far.
        - The sequence number does not start from 0, but it starts from a random number that the sender chooses.
        - This is for security (it is difficult to spoof a packet with right sequence number) and to prevent errant packets from previous connections to enter a new connection.
        - A receiver only receives a packet that has a sequence number in the window range.

Acknowledgement number
    - maximum sequence number of the bytes consecutively received correctly so far.
   

NOTE: Each host when connection start chooses its own initial sequence number that they use to send data.

Hlen: header length in multiples of 4 bytes.

Code bits :
            SYN   - start connection
            FIN     - end connection
            ACK   - acknowledge (acknowledge number is valid)
            PUSH  - send ACK and pass to application as soon as possible
        This bits are used to "piggy-back" the SYN, FIN, ACK messages to a data message.

Window
        - buffer size available in receiver (control flow)

Checksum

Urgent Ptr:
        - Offset in data for "out-of-band" data that is urgent for the application.
            For Ex: Ctrl-C in telnet

Reliable Connection Startup and Shutdown

•  To achieve reliability we need reliable connection startup/shutdown is difficult

•  Packets can be lost, duplicated, out of order.

•  Either side may crash and reboot

•  Duplicate shutdown messages may affect later connections

•  TCP uses “three way handshake” that means that both startup/shutdown need at least 3 messages.