Computer Networking — A Top-down Approach Chpt 3
CHAPTER 3
1. Transport-layer protocol provides for logical communication between application processes running on different hosts
2. compared to network layer — which is the logic communication between hosts
3. TCP — reliable data transfer; congestion control
4. Multiplexing & demultiplexing — transport to network & network to transport
5. port number — 0 ~ 65536; 0 ~ 1023 well know ports
6. connectionless transport — UDP; DNS service; RIP routing table updates
7. UDP segment structure — UDP checksum
8. Data transfer protocol — FSM
9. ACK & NAK — need putting sequence number
10. Stop-and-wait versus pipelined protocol — most of the time, sender is waiting. Because, sender sent the package out very fast. The most time consumption is the RTT. So we should use pipeline
11. Go-Back-N
N is often referred to as the window size and the GBN protocol itself as a sliding-window protocol.
12. Selective Repeat
As the name suggests, selective-repeat protocols avoid unnecessary retransmissions by having the sender retransmit only those packets that it suspects were received in error (that is, were lost or corrupted) at the receiver
13. Now comes to TCP; just now was general principles of reliable data transfer
14. TCP
Required knowledge: error detection, retransmissions, cumulative acknowledgments, timers and header fields for sequence and acknowledgment numbers.
TCP — connection-oriented, full-duplex service, always point-to-point, three-way handshake
TCP buffer — maximum segment size MSS or maximum transmission unit MTU
TCP Sequence number & acknowledgement number — Seq #= previous_it + MSS; Ack # = receive_id + 1 → expecting
15. RTT — use Exponential Weighted Moving Average (EWMA)
EstimatedRTT = (1 – α) * EstimatedRTT + α * SampleRTT
SampleRTT = currentRTT; changes overtime;
EstimatedRTT = smoother RTT; used to set timeout period
DevRTT is EWMA of difference between SampleRTT & EstimatedRTT
DevRTT = (1 – β) * DevRTT + β * | SampleRTT – EstimatedRTT |
16. TCP timeout
TimeoutInterval = EstimatedRTT + 4 * DevRTT
Timeout and Retransimission
17. Doubling Timeout — be polite
18. Fast Retransimit — duplicate ACK
19. TCP flow-control — 1 receive windows + 1 tcp application buffer = RcvBuffer
LastByteRead: the number of the last byte in the data stream read from the
buffer by the application process in BLastByteRcvd: the number of the last byte in the data stream that has arrived from the network and has been placed in the receive buffer at B
For sender: LastByteSent – LastByteAcked <= rwnd
rwnd is the “windows size” in TCP header, which indicate how many data can be receive
20. TCP connection management — P253 →step 123, need to set ACK flag to 1 or not?
21. FIN flag is set to tear down the connection
22. SYN flood attack
23. Congestion Control — available bit-rate (ABR); asynchronous transfer mode (ATM)
a. large queuing delay
b. packets lost due to route buffer overflow
c. unneeded retransimission
d. due to congestion
24. Approaches to congestion control — end2end control, tcp must use; network-assisted congestion control, routers feedback to senders, network layer
25. resource-management cells — convey congestion-related information among the hosts and switches
26. TCP congestion control — end-to-end congestion control
27. LastByteSent – LastByteAcked <= min{cwnd, rwnd}
28. TCP self-clocking
29. slow start — exponential growth; ssthresh, slow start treshold;
when the value of cwnd equals ssthresh, slow start ends and TCP transitions into congestion avoidance mode
30. Congestion Avoidance — Tahoe vs Reno
31. TCP fairness
In particular, it has been shown that when multiple connections share a common bottleneck, those sessions with a smaller RTT are able to grab the available bandwidth at that link more quickly as it becomes free (that is, open their congestion windows faster) and thus will enjoy higher throughput than those connections with larger RTTs
32. Fariness & UDP — UDP are always not friendly
33. Use parallel TCP connection to dominate network
Update:
34. ssthresh is initialized to a large value; 64kB