Chapter III: Transport Layer

Similar documents
CMPE 150/L : Introduction to Computer Networks. Chen Qian Computer Engineering UCSC Baskin Engineering Lecture 7

CSC358 Week 4. Adapted from slides by J.F. Kurose and K. W. Ross. All material copyright J.F Kurose and K.W. Ross, All Rights Reserved

COSC4377. Useful Linux Tool: screen

Announcement. Homework 1 due last night, how is that? Will discuss some problems in the lecture next week

Lecture 9: Transpor Layer Overview and UDP

Transport layer. Our goals: Understand principles behind transport layer services: Learn about transport layer protocols in the Internet:

Chapter 3 Transport Layer

Transport layer: Outline

CC451 Computer Networks

Chapter 3 Transport Layer

CSCD 330 Network Programming

Chapter 3 Transport Layer

CSE 3214: Computer Network Protocols and Applications Transport Layer (Part 2) Chapter 3 outline. UDP checksum. Port numbers

CS 4390 Computer Networks. Transport Services and Protocols

Last time. Mobility in Cellular networks. Transport Layer. HLR, VLR, MSC Handoff. Introduction Multiplexing / demultiplexing UDP 14-1

Internet transport-layer protocols. Transport services and protocols. Sending and receiving. Connection-oriented (TCP) Connection-oriented

Transport services and protocols. Chapter 3 outline. Internet transport-layer protocols Chapter 3 outline. Multiplexing/demultiplexing

TDTS06: Computer Networks

CSC 8560 Computer Networks: Transport Layer

Lecture 07 The Transport Layer (TCP & UDP) Dr. Anis Koubaa

Transport Layer. Chapter 3: Transport Layer

CSC 401 Data and Computer Communications Networks

CS 3516: Computer Networks

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3: Transport Layer Part A

Course on Computer Communication and Networks. Lecture 4 Chapter 3; Transport Layer, Part A

Computer Networks & Security 2016/2017

Course on Computer Communication and Networks. Lecture 4 Chapter 3; Transport Layer, Part A

CSC 401 Data and Computer Communications Networks

CSC 4900 Computer Networks: Transport Layer

CMSC 332 Computer Networks Transport Layer

Chapter 3: Transport Layer

CSCE 463/612 Networks and Distributed Processing Spring 2018

Chapter 3: Transport Layer. Chapter 3 Transport Layer. Chapter 3 outline. Transport services and protocols

CS 3516: Advanced Computer Networks

CSEN 503 Introduction to Communication Networks. Mervat AbuElkheir Hana Medhat Ayman Dayf. ** Slides are attributed to J. F.

Distributed Systems. 5. Transport Protocols. Werner Nutt

Chapter 3 outline. 3.5 connection-oriented transport: TCP segment structure reliable data transfer flow control connection management

CMSC 332 Computer Networks Reliable Data Transfer

Distributed Systems. 5. Transport Protocols

CSC 4900 Computer Networks: Reliable Data Transport

Chapter 2: outline. 2.1 principles of network applications app architectures app requirements

CS 3516: Computer Networks

Lecture 10: Transpor Layer Principles of Reliable Data Transfer

Suprakash Datta. Office: CSEB 3043 Phone: ext Course page:

The Transport Layer Multiplexing, Error Detection, & UDP

Protocoles et Interconnexions

Lecture 5. Transport Layer. Transport Layer 1-1

Input ports, switching fabric, output ports Switching via memory, bus, crossbar Queueing, head-of-line blocking

Introduction to the Transport Layer

CSE 4213: Computer Networks II

Data Communications & Networks. Session 6 Main Theme Reliable Data Transfer. Dr. Jean-Claude Franchitti

Application. Transport. Network. Link. Physical

Chapter 3 Transport Layer

CSCE 463/612 Networks and Distributed Processing Spring 2018

Chapter 3 Transport Layer

Development of reliable protocol Sliding window protocols. C = channel capacity in bps I = interrupt/service time + propagation delay

COMP211 Chapter 3 Transport Layer

CMPE 150/L : Introduction to Computer Networks. Chen Qian Computer Engineering UCSC Baskin Engineering Lecture 8

CS 655 System and Network Architectures and Implementation. Module 3 - Transport

CSCD 330 Network Programming

Computer Networking: A Top Down Approach

Chapter 3 Transport Layer

CMPE 80N: Introduction to Networking and the Internet

Chapter 3 Transport Layer

Chapter 3 outline. TDTS06 Computer networks. Principles of Reliable data transfer. Reliable data transfer: getting started

Chapter 6 Transport Layer

Chapter 3 Transport Layer

Transport Layer. Chapter 3. Computer Networking: A Top Down Approach

Chapter 3 outline. Chapter 3: Transport Layer. Transport vs. network layer. Transport services and protocols. Internet transport-layer protocols

Chapter 3: Transport Layer

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Computer Networks. Transport Layer

Chapter 3: Transport Layer

Chapter 3: Transport Layer

Chapter 3: Transport Layer. Chapter 3 Transport Layer. Chapter 3 outline. Transport services and protocols

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Computer Networks 1 (Mạng Máy Tính 1) Lectured by: Dr. Phạm Trần Vũ

Architettura di Reti

EC441 Fall 2018 Introduction to Computer Networking Chapter 3: Transport Layer

Transport Layer. CMPS 4750/6750: Computer Networks

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3: Transport Layer

Chapter 3: Transport Layer. Computer Networks. Transport Layer. Transport services and protocols. Chapter 3 outline. Bu-Ali Sina University, Hamedan

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Foundations of Telematics

Chapter 3 Transport Layer. Chapter 3: Transport Layer. Chapter 3 outline. Our goals: understand principles behind transport layer services:

Chapter 2: outline. 2.6 P2P applications 2.7 socket programming with UDP and TCP

Chapter 3. Transport Layer. Computer Networking: A Top Down Approach 5th edition. Jim Kurose, Keith Ross Addison-Wesley, April 2009.

internet technologies and standards

Chapter 3: Transport Layer

Transcription:

Chapter III: Transport Layer UG3 Computer Communications & Networks (COMN) Mahesh Marina mahesh@ed.ac.uk Slides thanks to Myungjin Lee and copyright of Kurose and Ross

Transport services and protocols provide logical communication between app processes running on different hosts protocols run in end systems send side: breaks app messages into segments, passes to layer rcv side: reassembles segments into messages, passes to app layer more than one protocol available to apps Internet: TCP and UDP data link logical end-end data link 2

Transport vs. layer layer: logical communication between hosts layer: logical communication between processes relies on, enhances, layer services household analogy: 12 kids in Ann s house sending letters to 12 kids in Bill s house: hosts = houses processes = kids app messages = letters in envelopes protocol = Ann and Bill who demux to inhouse siblings -layer protocol = postal service 3

Internet -layer protocols reliable, in-order delivery: TCP congestion control flow control connection setup unreliable, unordered delivery: UDP no-frills extension of besteffort IP services not available: delay guarantees bandwidth guarantees data link data link data link logical end-end data link data link data link data link data link data link 4

Multiplexing/demultiplexing multiplexing at sender: handle data from multiple sockets, add header (later used for demultiplexing) demultiplexing at receiver: use header info to deliver received segments to correct socket P3 link P1 link P2 P4 link socket process 5

How demultiplexing works host receives IP datagrams each datagram has source IP address, destination IP address each datagram carries one -layer segment each segment has source, destination port number host uses IP addresses & port numbers to direct segment to appropriate socket 32 bits source port # dest port # other header fields data (payload) TCP/UDP segment format 6

Connectionless demultiplexing recall: created socket has hostlocal port #: DatagramSocket mysocket1 = new DatagramSocket(12534); v recall: when creating datagram to send into UDP socket, must specify destination IP address destination port # when host receives UDP segment: checks destination port # in segment directs UDP segment to socket with that port # IP datagrams with same dest. port #, but different source IP addresses and/or source port numbers will be directed to same socket at dest 7

Connectionless demux: example DatagramSocket mysocket2 = new DatagramSocket (9157); link P3 DatagramSocket serversocket = new DatagramSocket (6428); link P1 DatagramSocket mysocket1 = new DatagramSocket (5775); link P4 source port: 6428 dest port: 9157 source port:? dest port:? source port: 9157 dest port: 6428 source port:? dest port:? 8

Connection-oriented demux TCP socket identified by 4-tuple: source IP address source port number dest IP address dest port number demux: receiver uses all four values to direct segment to appropriate socket server host may support many simultaneous TCP sockets: each socket identified by its own 4-tuple web servers have different sockets for each connecting client non-persistent HTTP will have different socket for each request 9

Connection-oriented demux: example P3 link P4 P5 link P6 server: IP address B P2 P3 link host: IP address A source IP,port: B,80 dest IP,port: A,9157 source IP,port: A,9157 dest IP, port: B,80 three segments, all destined to IP address: B, dest port: 80 are demultiplexed to different sockets source IP,port: C,5775 dest IP,port: B,80 source IP,port: C,9157 dest IP,port: B,80 host: IP address C 10

Connection-oriented demux: example threaded server P3 link P4 link server: IP address B P2 P3 link host: IP address A source IP,port: B,80 dest IP,port: A,9157 source IP,port: C,5775 dest IP,port: B,80 host: IP address C source IP,port: A,9157 dest IP, port: B,80 source IP,port: C,9157 dest IP,port: B,80 11

UDP: User Datagram Protocol [RFC 768] no frills, bare bones Internet protocol best effort service, UDP segments may be: lost delivered out-of-order to app connectionless: no handshaking between UDP sender, receiver each UDP segment handled independently of others UDP use: streaming multimedia apps (loss tolerant, rate sensitive) DNS SNMP reliable transfer over UDP: add reliability at layer -specific error recovery! 12

UDP: segment header source port # dest port # length 32 bits data (payload) checksum UDP segment format length, in bytes of UDP segment, including header why is there a UDP? no connection establishment (which can add delay) simple: no connection state at sender, receiver small header size no congestion control: UDP can blast away as fast as desired 13

UDP checksum Goal: detect errors (e.g., flipped bits) in transmitted segment sender: treat segment contents, including header fields, as sequence of 16-bit integers checksum: addition (one s complement sum) of segment contents sender puts checksum value into UDP checksum field receiver: compute checksum of received segment check if computed checksum equals checksum field value: NO - error detected YES - no error detected. But maybe errors nonetheless? More later. 14

Internet checksum: example example: add two 16-bit integers 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 wraparound sum checksum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 Note: when adding numbers, a carryout from the most significant bit needs to be added to the result 15

Principles of reliable data transfer important in,, link layers top-10 list of important ing topics! characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt) 16

Principles of reliable data transfer important in,, link layers top-10 list of important ing topics! characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt) 17

Principles of reliable data transfer important in,, link layers top-10 list of important ing topics! characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt) 18

Reliable data transfer: getting started rdt_send(): called from above, (e.g., by app.). Passed data to deliver to receiver upper layer deliver_data(): called by rdt to deliver data to upper send side receive side udt_send(): called by rdt, to transfer packet over unreliable channel to receiver rdt_rcv(): called when packet arrives on rcv-side of channel 19

we ll: Reliable data transfer: getting started incrementally develop sender, receiver sides of reliable data transfer protocol (rdt) consider only unidirectional data transfer but control info will flow on both directions! use finite state machines (FSMs) to specify sender, receiver state: when in this state next state uniquely determined by next event event causing state transition actions taken on state transition state 1 state 2 event actions 20

rdt1.0: reliable transfer over a 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 Wait for call from above rdt_send(data) packet = make_pkt(data) udt_send(packet) Wait for call from below rdt_rcv(packet) extract (packet,data) deliver_data(data) sender receiver 21

rdt2.0: channel with bit errors underlying channel may flip bits in packet checksum to detect bit errors the question: how to recover from errors: acknowledgements (ACKs): receiver explicitly tells sender that pkt received OK negative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errors sender retransmits pkt on receipt of NAK How do humans recover from errors during conversation? new mechanisms in rdt2.0 (beyond rdt1.0): error detection receiver feedback: control msgs (ACK,NAK) rcvr->sender 22

rdt2.0: channel with bit errors underlying channel may flip bits in packet checksum to detect bit errors the question: how to recover from errors: acknowledgements (ACKs): receiver explicitly tells sender that pkt received OK negative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errors sender retransmits pkt on receipt of NAK new mechanisms in rdt2.0 (beyond rdt1.0): error detection feedback: control msgs (ACK,NAK) from receiver to sender 23

rdt2.0: FSM specification rdt_send(data) sndpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L sender Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) receiver rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 24

rdt2.0: operation with no errors rdt_send(data) sndpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L sender Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) receiver rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 25

rdt2.0: error scenario rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) L sender Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) receiver rdt_rcv(rcvpkt) && corrupt(rcvpkt) udt_send(nak) Wait for call from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 26