Download presentation
Presentation is loading. Please wait.
Published byEdward Strong Modified over 9 years ago
1
1 Outline The Transport Layer The TCP Protocol (RFC 793, 1122, 1323,...) TCP Characteristics TCP Connection setup TCP Segments TCP Sequence Numbers TCP Sliding Window Timeouts and Retransmission (Congestion Control and Avoidance) The UDP Protocol (RFC 768)
2
2 Well known port numbers 0-1023 is managed by IANA, e.g.:
3
3 Review of the transport layer NickDave Leland.Stanford.edu Athena.MIT.edu Network Layer Link Layer Application Layer Transport Layer O.S. HeaderDataHeaderData HD HD HD HDHD HD
4
4 Layering: The OSI Model Session Network Link Physical Application Presentation Transport Network Link Network Transport Session Presentation Application Network Link Physical Peer-layer communication layer-to-layer communication Router 1 2 3 4 5 6 7 1 2 3 4 5 6 7
5
5 Layering: Our FTP Example Network Link Transport Application Presentation Session Transport Network Link Physical The 7-layer OSI Model The 4-layer Internet model Application FTP ASCII/Binary IP TCP Ethernet or HDLC +V.35
6
6 UDP, TCP, SCTP
7
7 TCP Characteristics TCP is connection-oriented. 3-way handshake used for connection setup/teardown. TCP provides a stream-of-bytes service. TCP is reliable: Acknowledgements indicate delivery of data. Checksums are used to detect corrupted data. Sequence numbers detect missing, or mis-sequenced data. Corrupted data is retransmitted after a timeout. Mis-sequenced data is re-sequenced. (Window-based) Flow control prevents over-run of receiver. TCP uses congestion control to share network capacity among users.
8
8 TCP is connection-oriented Connection Setup 3-way handshake (Active) Client (Passive) Server Syn Syn + Ack Ack Connection Close/Teardown 2 x 2-way handshake (Active) Client (Passive) Server Fin (Data +) Ack Fin Ack (Data)
9
9 TCP supports a “stream of bytes” service Byte 0Byte 1 Byte 2Byte 3 Byte 0Byte 1Byte 2Byte 3 Host A Host B Byte 80
10
10 …which is emulated using TCP “segments” Byte 0Byte 1 Byte 2Byte 3 Byte 0Byte 1Byte 2Byte 3 Host A Host B Byte 80 TCP Data Byte 80 Segment sent when: 1.Segment full (MSS bytes), 2.Not full, but times out, or 3.“Pushed” by application.
11
11 TCP segment format
12
12 Pseudo header used in checksum IP header
13
13 The TCP Segment Format IP Hdr IP Data TCP HdrTCP Data Src portDst port Sequence # Ack Sequence # HLEN 4 RSVD 6 URGACK PSH RSTSYNFIN Flags Window Size ChecksumUrg Pointer (TCP Options) 01531 TCP Data TCP Header and Data + IP Addresses Src/dst port numbers and IP addresses uniquely identify socket
14
14 TCP segment structure source port # dest. port # 32 bits application data (variable length) sequence number acknowledgement number rcvr window size ptr urgent data checksum F SR PAU head len not used Options (variable length) URG: urgent data (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection established (setup, tear down commands) # bytes rcvr willing to accept counting by bytes of data (not segments!) Internet checksum (as in UDP) typically: maximum TCP payload (default is 536bytes); window scale, selective repeat
15
15 Sequence Numbers Host A Host B TCP Data TCP HDR TCP HDR ISN (initial sequence number) Sequence number = 1 st byte Ack sequence number = next expected byte
16
16 Initial Sequence Numbers Connection Setup 3-way handshake (Active) Client (Passive) Server Syn +ISN A Syn + Ack +ISN B Ack
17
17 Host AHost B SYN, Seq_no = x SYN, Seq_no = y, ACK, Ack_no = x+1 Seq_no = x+1, ACK, Ack_no = y+1 3-way Handshake for connection establishment
18
18 Host A (Client) Host B (Server) SYN, Seq_no = x SYN, Seq_no = y, ACK, Ack_no = x+1 Seq_no = x+1, ACK, Ack_no = y+1 socket bind listen accept (blocks) socket connect (blocks) connect returns accept returns read (blocks) write read (blocks) read returns write read (blocks) read returns request message reply message TCP application example
19
19 Host AHost B Seq_no = 2000, Ack_no = 1, Win = 1024, Data = 2000-3023 Seq_no = 1, Ack_no = 4048, Win = 512, Data = 1-128 Seq_no = 3024, Ack_no = 1, Win = 1024, Data = 3024-4047 Seq_no = 4048, Ack_no = 129, Win = 1024, Data = 4048-4559 t1t1 t2t2 t3t3 t4t4 Seq_no = 1, Ack_no = 2000, Win = 2048, No Data t0t0 TCP Window control
20
20 FIN, seq = 5086 ACK = 5087 Data, seq. = 303, ACK = 5087 Deliver 150 bytes FIN, seq. =453, ACK = 5087 ACK = 454 Host A Host B ACK = 453 Connection Termination
21
21 TCP states
22
22 TCP finite state machine
23
23 Flow control problems
24
24 TCP window management
25
25 TCP flow control Window based Sender cannot send more data than a window without acknowledgements. Window is a minimum of receiver’s buffer and ‘congestion window’. After a window of data is transmitted, in steady state, acks control sending rate.
26
26 TCP Flow control Congestion window is increased gradually At the beginning, set cwnd = 1 (TCP segm) At the beginning, set treshold = 64K For each ack, double the cwnd until a threshold (slow start) Increase by 1 for a window of acks after that (additive increase)
27
27 Slow Start
28
28 Additive Increase
29
29 Basic Control Model Reduce speed when congestion is perceived –How is congestion signaled? Either mark or drop packets –How much to reduce? Increase speed otherwise –Probe for available bandwidth – how?
30
30 Phase Plots Simple way to visualize behavior of competing connections over time User 1’s Allocation x 1 User 2’s Allocation x 2
31
31 Phase Plots What are desirable properties? What if flows are not equal? Efficiency Line Fairness Line User 1’s Allocation x 1 User 2’s Allocation x 2 Optimal point Overload Underutilization
32
32 Additive Increase/Decrease T0T0 T1T1 Efficiency Line Fairness Line User 1’s Allocation x 1 User 2’s Allocation x 2 Both X 1 and X 2 increase/ decrease by the same amount over time –Additive increase improves fairness and additive decrease reduces fairness
33
33 Muliplicative Increase/Decrease Both X 1 and X 2 increase by the same factor over time –Extension from origin – constant fairness T0T0 T1T1 Efficiency Line Fairness Line User 1’s Allocation x 1 User 2’s Allocation x 2
34
34 What is the Right Choice? Constraints limit us to AIMD –Can have multiplicative term in increase –AIMD moves towards optimal point x0x0 x1x1 x2x2 Efficiency Line Fairness Line User 1’s Allocation x 1 User 2’s Allocation x 2
35
35 TCP Congestion Avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart Congestion avoidance 1
36
36 TCP Congestion Control When TCP sender sees loss in the network, TCP window is reduced (sending rate slowed) In fact, TCP cuts the window size in half whenever a loss occurs and then slowly builds it back up
37
37 TCP Window Dynamics
38
38 TCP Sliding Window Window Size Outstanding Un-ack’d data Data OK to send Data not OK to send yet Data ACK’d Retransmission policy is “Go Back N”. Current window size is “advertised” by receiver (usually 4k – 8k Bytes when connection set-up).
39
39 TCP Sliding Window Host A Host B ACK Window Size Round-trip time (1) RTT > Window size ACK Window Size Round-trip time (2) RTT = Window size ACK Window Size ???
40
40 TCP: Retransmission and Timeouts Host A Host B ACK Round-trip time (RTT) ACK Retransmission TimeOut (RTO) Estimated RTT Data1Data2 Guard Band TCP uses an adaptive retransmission timeout value: Congestion Changes in Routing RTT changes frequently
41
41 RTT probability density small network large network
42
42 TCP Timeout Q: how to set TCP timeout value? too short: premature timeout –unnecessary retransmissions too long: slow reaction to segment loss even worse: RTT fluctuates Q: how to estimate RTT? SampleRTT : measured time from segment transmission until ACK receipt –ignore retransmissions, cumulatively ACKed segments SampleRTT will vary, want a “smoother” estimated RTT –use several recent measurements, not just current SampleRTT Using the average of SampleRTT will generate many timeouts due to network variations –consider variance as well RTT freq.
43
43 TCP: Retransmission and Timeouts Picking the RTO is important: Pick a values that’s too big and it will wait too long to retransmit a packet, Pick a value too small, and it will unnecessarily retransmit packets. The original algorithm for picking RTO: 1. EstimatedRTT = EstimatedRTT + (1 - ) SampleRTT 2. RTO = 2 * EstimatedRTT Characteristics of the original algorithm: Variance is assumed to be fixed. But in practice, variance increases as congestion increases.
44
44 TCP: Retransmission and Timeouts Newer Algorithm includes estimate of variance in RTT: Difference = SampleRTT - EstimatedRTT EstimatedRTT = EstimatedRTT + ( *Difference) Deviation = Deviation + *( |Difference| - Deviation ) RTO = * EstimatedRTT + * Deviation 1 4
45
45 TCP Timeout: Initial Timeout EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT exponential weighted moving average influence of given sample decreases exponentially fast typical value of x: 0.125 Estimate the variance of RTT Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT| Estimate the average of RTT Set initial timeout value
46
46 An Example of Initial Timeout timeout value per packet round-trip time
47
47 TCP: Retransmission and Timeouts Karn’s Algorithm Retransmission Wrong RTT Sample Host AHost B Retransmission Wrong RTT Sample Host AHost B Problem: How can we estimate RTT when packets are retransmitted? Solution: On retransmission, don’t update estimated RTT (and double RTO).
48
48 TL: TCP flow control enhancements Solutions to silly window syndrome –Problem: sender sends in large blocks, but receiving application reads data 1 byte at the time Clark (1982) –receiver avoidance –prevent receiver from advertising small windows –increase advertised receiver window by min(MSS, RecvBuffer/2)
49
49 TL: TCP flow control enhancements Nagle’s algorithm (1984) –sender avoidance –prevent sender from unnecessarily sending small packets –http://www.rfc-editor.org/rfc/rfc896.txthttp://www.rfc-editor.org/rfc/rfc896.txt “Inhibit the sending of new TCP segments when new outgoing data arrives from the user if any previously transmitted data on the connection remains unacknowledged” Allow only one outstanding small (not full sized) segment that has not yet been acknowledged Works for idle connections (no deadlock) Works for telnet (send one-byte packets immediately) Works for bulk data transfer (delay sending)
50
50 TCP MSS Earlier –576 bytes for non-local destinations (other network) –1460 bytes for local destinations (same network) Now –1460 butes and DF bit in IP header set –ICMP message “fragmentation required, but not permitted” triggers reduction of MSS Workaround now –Restet DF bit to “0”
51
51 User Datagram Protocol (UDP) Characteristics UDP is a connectionless datagram service. There is no connection establishment: packets may show up at any time. UDP packets are self-contained. UDP is unreliable: No acknowledgements to indicate delivery of data. Checksums cover the header, and only optionally cover the data. Contains no mechanism to detect missing or mis-sequenced packets. No mechanism for automatic retransmission. No mechanism for flow control, and so can over-run the receiver.
52
52 User-Datagram Protocol (UDP) App A1A1 A2A2 B1B1 B2B2 UDP OS IP Like TCP, UDP uses port number to demultiplex packets
53
53 UDP header UDP Checksum is optional (all-0 permitted)
54
54 User-Datagram Protocol (UDP) Why do we have UDP? It is used by applications that don’t need reliable delivery, or Applications that have their own special needs, such as streaming of real-time audio/video Connection-less: no time needed to set up connection, each packet (datagram) is independent
55
55 Stream Control Transmission Protocol SCTP
56
56 SCTP open and close
57
57 Multiple interfaces
58
58 Stream v.s. Message based
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.