Transport
Protocols
IP:
Provide computer to computer communication
(only provide source and destination UP address)
TCP/UDP: Provide
application to application communication. (no reliability is required)
TCP/UDP packets contain the port numbers of the source and destination
application.
ports -> define src and dest applications.
UDP:
- unreliable
- minmal overhead
- minimal computation
- Each UDP packet is encapsulated in IP packet
- If reliability is needed, the application has to implement it
- used in applications where it is necessary to have control in the timing
and flow of messages, i.e. multimedia apps.
- best for LAN applications
- Connectionless (no state is kept in both ends)
TCP:
- major transport protocol used in INternet
- TCP is reliable
- Connection oriented
- full-duplex
- stream interface (read/write)
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 |
------------------ //////////// ----------------| 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.
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 POINTER:
- Offset in data for "out-of-band" data that is urgent for the application.
For Ex: Ctrl-C in telnet