09 Transport Layer TCP Transport Layer 3 1

  • Slides: 15
Download presentation
09 -Transport Layer: TCP Transport Layer 3 -1

09 -Transport Layer: TCP Transport Layer 3 -1

ANNOUNCEMENTS Please read chapter 3! Exam 1 next Thursday Please read chapter 3! Lab

ANNOUNCEMENTS Please read chapter 3! Exam 1 next Thursday Please read chapter 3! Lab 2 due at 6: 00 PM today Candidate seminar 10 th hour, Olin 267 Transport Layer 3 -2

GBN and SR r To the applets… Transport Layer 3 -3

GBN and SR r To the applets… Transport Layer 3 -3

TCP: Overview r point-to-point: m one sender, one receiver r reliable, in-order byte stream:

TCP: Overview r point-to-point: m one sender, one receiver r reliable, in-order byte stream: m no “message boundaries” r pipelined: m TCP congestion and flow control set window size r send & receive buffers RFCs: 793, 1122, 1323, 2018, 2581 r full duplex data: m bi-directional data flow in same connection r connection-oriented: m handshaking (exchange of control msgs) r flow control: m sender will not overwhelm receiver r congestion control Transport Layer 3 -4

TCP segment structure 32 bits URG: urgent data (generally not used) ACK: ACK #

TCP segment structure 32 bits URG: urgent data (generally not used) ACK: ACK # valid PSH: push data up now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) Internet checksum (as in UDP) source port # dest port # sequence number acknowledgement number head not UA P R S F len used checksum Receive window Urg data pnter Options (variable length) counting by bytes of data (not segments!) # bytes rcvr willing to accept application data (variable length) Transport Layer 3 -5

TCP seq. #’s and ACKs Seq. #’s: m byte stream “number” of first byte

TCP seq. #’s and ACKs Seq. #’s: m byte stream “number” of first byte in segment’s data ACKs: m seq # of next byte expected from other side m cumulative ACK Q: how receiver handles out-of-order segments m A: TCP spec doesn’t say, - up to implementor Host B Host A User types ‘C’ Seq=4 2, ACK = 79, da ta ata = d , 3 4 K= , AC q=79 Se host ACKs receipt of echoed ‘C’ = ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ Seq=4 3, ACK =80 simple telnet scenario Transport Layer time 3 -6

TCP: retransmission scenarios Host A 2, 8 by tes da t Seq=92 timeout a

TCP: retransmission scenarios Host A 2, 8 by tes da t Seq=92 timeout a 100 X = ACK loss Seq=9 2, 8 by tes da ta 100 Sendbase = 100 Send. Base = 120 = ACK Send. Base = 100 time Host B Seq=9 Send. Base = 120 lost ACK scenario 2, 8 by tes da ta Seq= 100, 2 0 byte s data 0 10 = K 120 = C K A AC Seq=9 2, 8 by Seq=92 timeout Seq=9 timeout Host A Host B time tes da t a 20 K=1 AC premature timeout Transport Layer 3 -7

TCP retransmission scenarios (more) Host A Host B Seq=9 timeout 2, 8 by Send.

TCP retransmission scenarios (more) Host A Host B Seq=9 timeout 2, 8 by Send. Base = 120 Seq=1 tes da t a =100 K C A 00, 20 bytes data X loss 120 = ACK time Cumulative ACK scenario Transport Layer 3 -8

TCP ACK generation [RFC 1122, RFC 2581] Event at Receiver TCP Receiver action Arrival

TCP ACK generation [RFC 1122, RFC 2581] Event at Receiver TCP Receiver action Arrival of in-order segment with expected seq #. All data up to expected seq # already ACKed Delayed ACK. Wait up to 500 ms for next segment. If no next segment, send ACK Arrival of in-order segment with expected seq #. One other segment has ACK pending Immediately send single cumulative ACK, ACKing both in-order segments Arrival of out-of-order segment higher-than-expect seq. #. Gap detected Immediately send duplicate ACK, indicating seq. # of next expected byte Arrival of segment that partially or completely fills gap Immediate send ACK, provided that segment starts at lower end of gap Transport Layer 3 -9

TCP Flow Control r receive side of TCP connection has a receive buffer: flow

TCP Flow Control r receive side of TCP connection has a receive buffer: flow control sender won’t overflow receiver’s buffer by transmitting too much, too fast r speed-matching r app process may be service: matching the send rate to the receiving app’s drain rate slow at reading from buffer Transport Layer 3 -10

TCP Flow control: how it works r rcvr advertises spare (suppose TCP receiver discards

TCP Flow control: how it works r rcvr advertises spare (suppose TCP receiver discards out-of-order segments) r spare room in buffer room by including value of Rcv. Window in segments r sender limits un. ACKed data to Rcv. Window m guarantees receive buffer doesn’t overflow = Rcv. Window = Rcv. Buffer-[Last. Byte. Rcvd Last. Byte. Read] Transport Layer 3 -11

TCP Connection Management Recall: TCP sender, receiver establish “connection” before exchanging data segments r

TCP Connection Management Recall: TCP sender, receiver establish “connection” before exchanging data segments r initialize TCP variables: m seq. #s m buffers, flow control info (e. g. Rcv. Window) r client: connection initiator Socket client. Socket = new Socket("hostname", "port number"); r server: contacted by client Socket connection. Socket = welcome. Socket. accept(); Three way handshake: Step 1: client host sends TCP SYN segment to server m specifies initial seq # m no data Step 2: server host receives SYN, replies with SYNACK segment server allocates buffers m specifies server initial seq. # Step 3: client receives SYNACK, replies with ACK segment, which may contain data m Transport Layer 3 -12

TCP Connection Management (cont. ) Closing a connection: client closes socket: client. Socket. close();

TCP Connection Management (cont. ) Closing a connection: client closes socket: client. Socket. close(); client close Step 1: client end system sends TCP FIN control segment to server FIN ACK close FIN replies with ACK. Closes connection, sends FIN. timed wait Step 2: server receives FIN, ACK closed Transport Layer 3 -13

TCP Connection Management (cont. ) Step 3: client receives FIN, replies with ACK. m

TCP Connection Management (cont. ) Step 3: client receives FIN, replies with ACK. m Enters “timed wait” - will respond with ACK to received FINs client closing FIN timed wait Connection closed. can handle simultaneous FINs. FIN ACK Step 4: server, receives ACK. Note: with small modification, server ACK closed Transport Layer 3 -14

RST and FIN r FIN is the bit set when a client is ready

RST and FIN r FIN is the bit set when a client is ready to close the connection. r RST is used by the server to indicate that the port and IP address do not match any sockets on the server. Transport Layer 3 -15