CSCD 330 Network Programming

Slides:



Advertisements
Similar presentations
Transport Layer3-1 Transport Overview and UDP. Transport Layer3-2 Goals r Understand transport services m Multiplexing and Demultiplexing m Reliable data.
Advertisements

Transport Layer 3-1 Transport services and protocols  provide logical communication between app processes running on different hosts  transport protocols.
Some slides are in courtesy of J. Kurose and K. Ross Review of Previous Lecture Electronic Mail: SMTP, POP3, IMAP DNS Socket programming with TCP.
EEC-484/584 Computer Networks Lecture 6 Wenbing Zhao (Part of the slides are based on Drs. Kurose & Ross ’ s slides for their Computer.
1 Outline r Transport-layer services r Multiplexing and demultiplexing r Connectionless transport: UDP r Principles of reliable data transfer.
Transport Layer3-1 Data Communication and Networks Lecture 6 Reliable Data Transfer October 12, 2006.
Announcement Project 1 due last night, how is that ? Project 2 almost ready, out tomorrow, will post online –Much harder than project 1, start early!
Transport Layer3-1 Reliable Data Transfer. Transport Layer3-2 Principles of Reliable data transfer r important in app., transport, link layers r top-10.
Lecture 8 Chapter 3 Transport Layer
3-1 Sect. 3.4 Principles of reliable data transfer Computer Networking: A Top Down Approach Featuring the Internet, 1 st edition. Jim Kurose, Keith Ross.
1 Internet transport-layer protocols r reliable, in-order delivery (TCP) m congestion control m flow control m connection setup r unreliable, unordered.
Announcement Homework 1 due last night, how is that ? –Will discuss some problems in the lecture next week Should have completed at least part II of project.
Transport Layer3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley,
9/30/ /2/2003 The Transport Layer September 30-October 2, 2003.
3-1 Transport services and protocols r provide logical communication between app processes running on different hosts r transport protocols run in end.
1 Transport Layer goals: r understand principles behind transport layer services: m multiplexing/demultiplexing m reliable data transfer m flow control.
Transport Layer Transport Layer. Transport Layer 3-2 Chapter 3 Transport Layer Computer Networking: A Top Down Approach Featuring the Internet,
Previous Lecture r P2P file sharing r Socket programming with TCP r Socket programming with UDP.
Transport Layer 3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012 
Transport Layer 3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley Chapter3_1.
Transport Layer3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 5 th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.
14-1 Last time □ Mobility in Cellular networks ♦ HLR, VLR, MSC ♦ Handoff □ Transport Layer ♦ Introduction ♦ Multiplexing / demultiplexing ♦ UDP.
Transport Layer3-1 Chapter 3: Transport Layer Our goals: r understand principles behind transport layer services: m multiplexing/demultipl exing m reliable.
1 of 44 Week 2 Lecture 2 – Network Layers Transport Layer – Example: TCP/UDP.
Lecture91 Administrative Things r Return homework # 1 r Review some problems in homework # 1 r Questions about grading? Yona r WebCT for CSE245 is working!
CS 3830 Day 15 Introduction 1-1. Announcements r Quiz 3: Wednesday, Oct 10 r Prog3 due (in 1DropBox) on Wednesday, Oct 10 r Prog4: m Parts A and B m Work.
Transport Layer3-1 Chapter 3 outline r 3.1 Transport-layer services r 3.2 Multiplexing and demultiplexing r 3.3 Connectionless transport: UDP r 3.4 Principles.
Transport Layer 3-1 Chapter 3 outline 3.4 Principles of reliable data transfer.
Transport Layer3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley,
Transport Layer 3-1 Chapter 3: Transport Layer Our goals: r understand principles behind transport layer services: m Multiplexing/demultip lexing m reliable.
1 CSCD 330 Network Programming Some Material in these slides from J.F Kurose and K.W. Ross All material copyright Lecture 9 Transport Layer Winter.
Transport Layer3-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 5 th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.
Application Layer 2-1 Chapter 3 Transport Layer Computer Networking: A Top Down Approach 6 th edition Jim Kurose, Keith Ross Addison-Wesley March 2012.
Chapter 3 Transport Layer
Chapter 3 Transport Layer
Chapter 3 Transport Layer
Chapter 3 Transport Layer
Transport Layer Slides are originally from instructor: Carey Williamson at University of Calgary Very minor modification are made Notes derived from “Computer.
Chapter 3 outline 3.1 Transport-layer services
Chapter 3 outline 3.1 transport-layer services
06- Transport Layer Transport Layer.
Session 8 INST 346 Technologies, Infrastructure and Architecture
Reliable Data Transfer Reliable Data Transfer.
Chapter 3 Transport Layer
CS 1652 Jack Lange University of Pittsburgh
Chapter 3: Transport Layer
Transport Layer Our goals:
EEC-484/584 Computer Networks
Chapter 3: Transport Layer
Chapter 3: Transport Layer
September 19th, 2013 CS1652 Jack Lange University of Pittsburgh
Transport Layer Our goals:
Chapter 3 outline 3.1 Transport-layer services
EEC-484/584 Computer Networks
Chapter 3 Transport Layer
EEC-484/584 Computer Networks
EEC-484/584 Computer Networks
EEC-484/584 Computer Networks
CSCD 330 Network Programming
Chapter 3 outline 3.1 transport-layer services
EEC-484 Computer Networks
Never take life seriously. Nobody gets out alive anyway
Chapter 3: Transport Layer
EEC-484/584 Computer Networks
Chapter 3: Transport Layer
EEC-484/584 Computer Networks
Chapter 3: Transport Layer
CS 5565 Network Architecture and Protocols
Transport Layer Our goals:
Chapter 3: Transport Layer
Presentation transcript:

CSCD 330 Network Programming Lecture 9 Transport Layer Spring 2018 Reading: Begin Chapter 3 Some Material in these slides from J.F Kurose and K.W. Ross All material copyright 1996-2007 1 1

Outline Overview of Transport Layer Multiplexing / Demultiplexing UDP Functions Reliable Transport State Diagram of Reliable Transport Building it from basics

Introduction to Transport Layers 1, 2 and 3 Physical, Data Link and Network Concerned with actual packaging, addressing, routing and delivery of data Physical layer handles bits Data link layer deals with local networks Network layer handles routing between networks Transport layer in contrast, does not concern itself with these “nuts and bolts” matters It relies on lower layers to handle process of moving data between devices

Transport Layer Purpose Transport Layer’s Job Provides for communication between application processes on different computers Computers have many applications all trying to send and receive data Example: Web Browser open Bit Torrent downloading in the background and WoW gaming session open Transport layer enables these applications to send and receive data All applications must use same lower-layer protocol implementation

Transport Layer Purpose How Does it Do This? Transport layer protocol must keep track of data from each application, Combines this data into a single flow of data to send to lower layers Device receiving information must reverse these operations, splitting data and funneling it to appropriate recipient processes Transport layer provides connection services for protocols and applications that run at levels above it Categorized as either Connection-oriented services Connectionless services

Transport Layer

Introduction to Transport Layer Recall the simplified model we have of today's Internet We are here Transport layer Transport layer Network layer Network layer

Introduction to Transport Layer Apps What do we know about the Network Layer? Best effort service No guarantees No orderly delivery of segments Said to be “Unreliable Service” All hosts have at least one IP address Transport

Introduction to Transport Layer On top of Network Layer UDP and TCP two main protocols of transport layer Responsibility of this layer Minimum Extend delivery service between two hosts to Delivery service between two processes running on a source and destination host Error checking of packets

Transport Layer UDP Two flavors of Transport Protocols UDP – simpler, faster and unreliable What does it do? Delivers packets Checks Errors That's all it does!

Transport Layer TCP TCP – more complex, slower and reliable What does it do? Flow control Sequence numbers for packets 1,2,3,4,5,6,7 ... 10 Acknowledgments and timers Ensures data arrives in order and is correct Congestion control

Introduction Transport Layer Goals Understand principles behind transport layer services Multiplexing/demultiplexing Reliable data transfer vs Unreliable data transfer Flow control Congestion control 12

logical end-end transport Transport services and protocols Provide Logical Communication between application processes running on different hosts Transport protocols run on end systems Sender side Breaks messages into segments, pass to network layer Receiver side Reassembles segments into messages, pass to application layer application transport network data link physical logical end-end transport application transport network data link physical 13

Transport vs. Network Layer Logical communication between hosts Transport layer Logical communication between processes Relies on and enhances, network layer services 14

Multiplexing and demultiplexing In General 15

Multiplexing and Demultiplexing Transport protocol does multiplexing and demultiplexing Sends and Delivers packets to correct application Say single host runs four network applications FTP Session, 2 SSH Sessions, HTTP Session TCP Layer must keep track of four applications and their separate streams of data

Multiplexing and Demultiplexing Transport protocol does multiplexing and demultiplexing Gathers data from different applications, Through sockets, Encapsulates each data chunk with headers and passes them to network layer -> Multiplexing Delivers data to receiving socket of application -> Demultiplexing

Multiplexing/demultiplexing Multiplexing at send host: Demultiplexing at rcv host: Gathering data from multiple sockets, enveloping data with header (later used for demultiplexing) Delivering received segments to correct socket = socket = process application transport network link physical P1 P2 P3 P4 host 1 host 2 host 3 FTP telnet

How Demultiplexing Works Host Receives IP Datagrams Each Datagram has source IP Address, Destination IP Address Each Datagram carries 1 transport layer segment Each Segment has source/destination port number Host Uses IP Addresses and Port numbers ----> direct segments to appropriate socket 32 bits source port # dest port # other header fields application data (message) Generic TCP/UDP segment format

UDP Demultiplexing

Connectionless UDP Demultiplexing When host receives UDP segment Checks destination port number within data Directs UDP segment to socket with that port number Sockets have port numbers DatagramSocket mySocket1 = new DatagramSocket(12534); DatagramSocket mySocket2 = new DatagramSocket(12535); Note: Above are examples of UDP Servers UDP Socket identified by two-tuple: (dest IP address, dest port number)‏ 21

Connectionless UDP Demultiplexing DatagramSocket serverSocket = new DatagramSocket(6428); Client IP:B P2 IP: A P1 P3 DNS server IP: C SP: 6428 DP: 9157 SP: 9157 DP: 6428 DP: 5775 SP: 5775 DNS Reply DNS Request Dest Port (DP) provides “send address” Src Port (SP) provides “return address” 22

TCP Demultiplexing

Connection-oriented TCP Demultiplexing TCP socket identified by 4-tuple: Source IP address Source port number Dest IP address Dest port number Receive host uses all four values to direct segment to appropriate socket Server may support many simultaneous TCP sockets: Each socket identified by its own 4-tuple Web servers can have multiple different connections for each connecting client Why is that? Non-persistent HTTP will have different socket for each request!!! 24

Connection-oriented TCP Demultiplexing DP 80 SP 9157 SP 5775 SP 9157 client IP: A P4 P5 P6 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 DP: 80 DP: 80 Client IP:B Web server IP: C Src-IP: A Src-IP: B Dest-IP:C Dest-IP:C Note: Two machines with same Source Port (SP) = 9157, Is that allowed? 25

Connection-oriented demumtiplexing Threaded Web Server SP 9157 DP 80 SP 5775 SP 9157 P1 client IP: A P4 P2 P1 P3 SP: 5775 DP: 80 S-IP: B D-IP:C SP: 9157 SP: 9157 DP: 80 DP: 80 Client IP:B server IP: C Src-IP: A Src-IP: B Dest-IP:C Dest-IP:C 26

UDP: More Often used for streaming multimedia applications Loss tolerant Faster Other UDP uses DNS SNMP Reliable transfer over UDP How would you do it? Add reliability at application layer Application-specific error recovery! 32 bits source port # dest port # Length, in bytes of UDP segment, including header length checksum Application data (message)‏ UDP segment format 27

Connection Oriented Transport 28

Transport Reliability What does it mean to be reliable if you are a transport protocol? No data is corrupted All data is delivered in order in which it was sent All data is delivered, not lost Delivered when needed, time aspect important 29

Reliable Data Transfer Next few slides, Build a reliable transfer protocol step by step So, you can see the design decisions that went into the design of TCP to make it reliable Have a protocol that works perfectly to deliver data reliably … 30

Reliable data Transfer We’ll Incrementally develop sender, receiver sides of reliable data transfer protocol (rdt)‏ Consider only unidirectional data transfer But control info will flow in both directions! Use Finite State Machines (FSM) to specify sender, receiver event causing state transition actions taken on state transition state 1 State: When in this “state” next state uniquely determined by next event state 2 event actions 31

Rdt1.0: Reliable transfer over reliable channel Underlying channel perfectly reliable No bit errors No loss of packets Separate FSMs for Sender, Receiver Sender sends data into underlying channel Receiver reads data from underlying channel Initial State Initial State Wait for call from above rdt_send(data)‏ Wait for call from below rdt_rcv(packet)‏ extract (packet,data)‏ deliver_data(data)‏ packet = make_pkt(data)‏ udt_send(packet)‏ sender receiver 32

Rdt2.0: Channel With Bit Errors What do we need to add to protocol to deliver packets with Bit Errors?

Rdt2.0: Channel With Bit Errors What do we need to add to protocol to deliver packets with Bit Errors? Method to detect errors Method to send back a negative acknowledgment Recognition of negative ack -> resend of packet

Rdt2.0: Channel with bit errors Underlying channel may flip bits in packet Checksum to detect bit errors How to recover from errors? Acknowledgments (ACKs): Receiver tells sender that packet received OK Negative acknowledgments (NAKs): Receiver tells sender that packet had errors Sender retransmits packet on receipt of NAK New mechanisms in rdt2.0 (beyond rdt1.0): Error detection Receiver feedback: control msgs (ACK,NAK) rcvr- >sender 35

Rdt2.0: FSM specification rdt_send(data)‏ sendpkt = make_pkt(data, checksum)‏ udt_send(senddpkt)‏ receiver rdt_rcv(rcvpkt) && isNAK(rcvpkt)‏ Wait for ACK or NAK Wait for call from above udt_send(NAK)‏ rdt_rcv(rcvpkt) && corrupt(rcvpkt)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && isACK(rcvpkt)‏ Wait for call from below  sender rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)‏  - Means no action on event extract(rcvpkt,data)‏ deliver_data(data)‏ udt_send(ACK)‏ 36

Rdt2.0: operation with no errors rdt_send(data)‏ snkpkt = make_pkt(data, checksum)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && isNAK(rcvpkt)‏ Wait for ACK or NAK Wait for call from above udt_send(NAK)‏ rdt_rcv(rcvpkt) && corrupt(rcvpkt)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && isACK(rcvpkt)‏ Wait for call from below  rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)‏ extract(rcvpkt,data)‏ deliver_data(data)‏ udt_send(ACK)‏ 37

Rdt2.0: error scenario rdt_send(data)‏ snkpkt = make_pkt(data, checksum)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && isNAK(rcvpkt)‏ Wait for ACK or NAK Wait for call from above udt_send(NAK)‏ rdt_rcv(rcvpkt) && corrupt(rcvpkt)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && isACK(rcvpkt)‏ Wait for call from below  rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)‏ extract(rcvpkt,data)‏ deliver_data(data)‏ udt_send(ACK)‏ 38

Rdt2.0 Has a fatal flaw! What happens if ACK/NAK corrupted? Repeat that What happens if ACK/NAK corrupted? Sender doesn’t know what happened at receiver! If Human conversation, just say, please repeat that ... maybe multiple times If Computer conversation Add enough checksum bits to correct the error Or, retransmit, but add identifier to packet to say its a retransmission ... this is what TCP does!!! 39

Rdt2.0 Has a fatal flaw! Handling Duplicates: Sender retransmits current packet if ACK/NAK garbled Sender adds sequence number to each packet Receiver discards (doesn’t deliver up) duplicate packet stop and wait Sender sends one packet, then waits for receiver response

Wait for call 0 from above Rdt2.1: Sender, handles garbled ACK/NAKs rdt_send(data)‏ sndpkt = make_pkt(0, data, checksum)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) )‏ Wait for ACK or NAK 0 Wait for call 0 from above udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt)   Wait for ACK or NAK 1 Wait for call 1 from above rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) )‏ rdt_send(data)‏ sndpkt = make_pkt(1, data, checksum)‏ udt_send(sndpkt)‏ udt_send(sndpkt)‏ 41

Rdt2.1: receiver, handles garbled ACK/NAKs rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data)‏ deliver_data(data)‏ sndpkt = make_pkt(ACK, chksum)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && (corrupt(rcvpkt)‏ rdt_rcv(rcvpkt) && (corrupt(rcvpkt)‏ sndpkt = make_pkt(NAK, chksum)‏ udt_send(sndpkt)‏ sndpkt = make_pkt(NAK, chksum)‏ udt_send(sndpkt)‏ Wait for 0 from below Wait for 1 from below rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt)‏ rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt)‏ sndpkt = make_pkt(ACK, chksum)‏ udt_send(sndpkt)‏ sndpkt = make_pkt(ACK, chksum)‏ udt_send(sndpkt)‏ rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data)‏ deliver_data(data)‏ sndpkt = make_pkt(ACK, chksum)‏ udt_send(sndpkt)‏ 42

Rdt2.1: Discussion Sender Seq number added Two sequence numbers (0,1). Is that enough? Must check if received ACK/NAK corrupted Twice as many states State must “remember” whether “current” packet has 0 or 1 sequence number Receiver Must check if received packet is duplicate State indicates whether 0 or 1 is expected packet sequence number Note: receiver can not know if its last ACK/NAK received OK at sender 43

Rdt2.2: Improves upon Rdt 2.1 NAK-free protocol Same functionality as Rdt2.1, using ACKs only instead of NAK Receiver sends ACK for last packet received OK Receiver must explicitly include seq number of packet being ACKed Duplicate ACK at sender results in same action as NAK Retransmit current packet!! Transport Layer 3-44

Rdt3.0: Now Have Channels with Errors and Loss New Assumption Underlying channel can also lose packets (data or ACKs)‏ Sender doesn’t know if data packet or ACK was lost, or just delayed So far .... Checksums, Sequence numbers, ACKs, Retransmissions Are these enough to account for lost packets? Transport Layer 45

Rdt3.0: Now Have Channels with Errors and Loss Approach: Sender waits “reasonable” amount of time for ACK Retransmits if no ACK received in this time If packet (or ACK) just delayed (not lost): Retransmission will be duplicate, but use of sequence #’s already handles this Receiver must specify seq # of packet being ACKed Requires countdown timer 46

rdt3.0 sender Gets more complicated with timer     rdt_send(data)‏ rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) )‏ sndpkt = make_pkt(0, data, checksum)‏ udt_send(sndpkt)‏ start_timer rdt_rcv(rcvpkt)‏   Wait for call 0from above Wait for ACK0 timeout udt_send(sndpkt)‏ start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) stop_timer stop_timer Wait for ACK1 Wait for call 1 from above timeout udt_send(sndpkt)‏ start_timer rdt_rcv(rcvpkt)‏  rdt_send(data)‏ rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) )‏ sndpkt = make_pkt(1, data, checksum)‏ udt_send(sndpkt)‏ start_timer  Transport Layer 3-47

Summary Described what the transport layer does Introduced general concepts of a connection- oriented, transport protocol Making something reliable is not easy!! Complex, not easy to understand Discussed how you would build in reliability Moving on to examine TCP as an example of a reliable protocol 48

References RFC of TCP v4, 1981 http://www.ietf.org/rfc/rfc0793.txt Original Paper by Authors of TCP/IP Suite Vinton G. Cerf, Robert E. Kahn, A Protocol for Packet Network Intercommunication, IEEE Transactions on Communications, Vol. 22, No. 5, May 1974 pp. 637-648 http://penguin.ewu.edu/cscd330/cerf74-2.pdf

Read: Keep reading Chapter 3 - Transport Transport Protocol Read: Keep reading Chapter 3 - Transport Transport Protocol Read: Keep reading Chapter 3 New Assignment - Web Server 50