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

Similar documents
Chapter III: Transport Layer

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

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

COSC4377. Useful Linux Tool: screen

CC451 Computer Networks

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

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

Transport layer: Outline

CSCD 330 Network Programming

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

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

CS 3516: Computer Networks

Computer Networks & Security 2016/2017

Chapter 3 Transport Layer

Chapter 3 Transport Layer

TDTS06: Computer Networks

Lecture 9: Transpor Layer Overview and UDP

Chapter 3 Transport Layer

CSC 401 Data and Computer Communications Networks

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

CSCE 463/612 Networks and Distributed Processing Spring 2018

CSC 8560 Computer Networks: Transport Layer

Chapter 3: Transport Layer Part A

CS 3516: Advanced Computer Networks

Chapter 3: Transport Layer

CMSC 332 Computer Networks Reliable Data Transfer

CSC 4900 Computer Networks: Reliable Data Transport

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

Lecture 10: Transpor Layer Principles of Reliable Data Transfer

Distributed Systems. 5. Transport Protocols. Werner Nutt

Distributed Systems. 5. Transport Protocols

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

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

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

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

Lecture 5. Transport Layer. Transport Layer 1-1

Transport Layer. Chapter 3: Transport Layer

CS 4390 Computer Networks. Transport Services and Protocols

Chapter 3 Transport Layer

CMSC 332 Computer Networks Transport Layer

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

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

The Transport Layer Multiplexing, Error Detection, & UDP

Chapter 3 Transport Layer

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

Protocoles et Interconnexions

Chapter 3 Transport Layer

CSC 401 Data and Computer Communications Networks

CSC 4900 Computer Networks: Transport Layer

CSCE 463/612 Networks and Distributed Processing Spring 2018

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

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

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

Application. Transport. Network. Link. Physical

Chapter 3 Transport Layer

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

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

Chapter 3 Transport Layer

CMPE 80N: Introduction to Networking and the Internet

CSE 4213: Computer Networks II

Rdt2.0: channel with packet errors (no loss!)

Transport Layer Overview

Chapter 3: Transport Layer

COMP211 Chapter 3 Transport Layer

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 outline. Transport services and protocols

Chapter 3 Transport Layer

Chapter 3 Transport Layer

Computer Networks. 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ũ

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

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 outline. Transport services and protocols

CSCD 330 Network Programming

Chapter 3 Transport Layer

Transport Layer. CMPS 4750/6750: Computer Networks

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

Computer Networking: A Top Down Approach

Transport services and protocols. Chapter 3 Transport Layer. Chapter 3: Transport Layer. Transport vs. network layer

Chapter 3: Transport Layer

Chapter 3: Transport Layer

Chapter 3 Transport Layer. Chapter 3: Transport Layer. Chapter 3 outline

Chapter III: Transport Layer

Chapter 3 Transport Layer

Foundations of Telematics

rdt2.0 has a fatal flaw!

Chapter 3: Transport Layer

CSCI Computer Networks Fall 2016

Chapter 3. Kultida Rojviboonchai, Ph.D. Dept. of Computer Engineering Faculty of Engineering Chulalongkorn University

Chapter 3: Transport Layer

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

Chapter 3 Transport Layer

Chapter 3: Transport Layer. Chapter 3 Transport Layer. Transport Services and Protocols. Chapter 3 Outline

Chapter 3 Transport Layer

CSCI Computer Networks Spring 2017

CS 3516: Computer Networks

Transcription:

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 1 Homework 2 will be out next week

Review of Previous Lecture Socket programming with TCP Socket programming with UDP I/O multiplexing Web caching Some slides are in courtesy of J. Kurose and K. Ross

Chapter 3: Transport Layer Our goals: understand principles behind transport layer services: multiplexing/demultiple xing reliable data transfer flow control congestion control learn about transport layer protocols in the Internet: UDP: connectionless transport TCP: connection-oriented transport TCP congestion control

Outline Transport-layer services Multiplexing and demultiplexing Connectionless transport: UDP Principles of reliable data transfer

Transport services and protocols provide logical communication between app processes running on different hosts transport protocols run in end systems send side: breaks app messages into segments, passes to layer rcvside: reassembles segments into messages, passes to app layer application transport data link data link logical end-end transport data link data link data link data link application transport data link

Transport vs. layer layer: logical communication between hosts transport layer: logical communication between processes relies on, enhances, layer services On one host, there may be several processes communicating with processes on several other hosts, with different protocols

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

Outline Transport-layer services Multiplexing and demultiplexing Connectionless transport: UDP Principles of reliable data transfer

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

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 (recall: well-known port numbers for specific applications) Host uses IP addresses & port numbers to direct segment to appropriate socket 32 bits source port # dest port # other header fields application data (message) TCP/UDP segment format

IP datagram format IP protocol version number header length (bytes) type of data max number remaining hops (decremented at each router) upper layer protocol to deliver payload to how much overhead with TCP? 20 bytes of TCP 20 bytes of IP = 40 bytes + app layer overhead ver head. len 16-bit identifier time to live type of service upper layer 32 bits flgs length fragment offset Internet checksum 32 bit source IP address 32 bit destination IP address Options (if any) data (variable length, typically a TCP or UDP segment) total datagram length (bytes) for fragmentation/ reassembly E.g. timestamp, record route taken, specify list of routers to visit.

Connectionless demultiplexing UDP socket identified by two-tuple: (dest IP address, dest port number) When host receives UDP segment: checks destination port number in segment directs UDP segment to socket with that port number IP datagrams with different source IP addresses and/or source port numbers directed to same socket

Connectionless demux (cont) P2 P3 P1P1 SP: 6428 DP: 9157 SP: 6428 DP: 5775 SP: 9157 SP: 5775 client IP: A DP: 6428 server IP: C DP: 6428 Client IP:B SP provides return address

Connection-oriented demux TCP socket identified by 4-tuple: source IP address source port number dest IP address dest port number recv host 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

Connection-oriented demux (cont) P2 P3 P4 P1P1 SP: 80 DP: 9157 SP: 80 DP: 5775 SP: 9157 SP: 5775 client IP: A DP: 80 server IP: C DP: 80 Client IP:B

Outline Transport-layer services Multiplexing and demultiplexing Connectionless transport: UDP Principles of reliable data transfer

UDP: User Datagram Protocol [RFC 768] no frills, bare bones Internet transport 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 Why is there a UDP? no connection establishment (which can add delay) simple: no connection state at sender, receiver small segment header no congestion control: UDP can blast away as fast as desired

UDP: more often used for streaming multimedia apps loss tolerant rate sensitive reliable transfer over UDP: add reliability at application layer application-specific error recovery! Length, in bytes of UDP segment, including header 32 bits source port # dest port # length Application data (message) checksum UDP segment format

treat segment contents as sequence of 16-bit integers checksum: addition (1 s complement sum) of segment contents sender puts checksum value into UDP checksum field UDP checksum Goal: detect errors (e.g., flipped bits) in transmitted segment Sender: Receiver: addition of all segment contents + checksum check if all bits are 1: NO - error detected YES - no error detected. But maybe errors nonetheless? More later. Addition: 1 s complement sum: 0110 0101 1011 0100 1 s complement sum: Addition: 0110 0101 0100 1111

Outline Transport-layer services Multiplexing and demultiplexing Connectionless transport: UDP Principles of reliable data transfer

Principles of Reliable data transfer Top-10 list of important ing topics! Characteristics of unreliable channel will determine complexity of reliable data transfer protocol (rdt)

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

Reliable data transfer: getting started We ll: 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 (FSM) to specify sender, receiver state: when in this state next state uniquely determined by next event state 1 event causing state transition actions taken on state transition event actions state 2

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 read 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

Rdt2.0: channel with bit errors underlying channel may flip bits in packet recall: UDP 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 receiver feedback: control msgs (ACK,NAK) rcvr->sender

rdt2.0: FSM specification rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) Λ 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)

rdt2.0: operation with no errors rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) Wait for call from above rdt_rcv(rcvpkt) && isack(rcvpkt) Λ Wait for ACK or NAK rdt_rcv(rcvpkt) && isnak(rcvpkt) udt_send(sndpkt) 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)

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

rdt2.0 has a fatal flaw! What happens if ACK/NAK corrupted? sender doesn t know what happened at receiver! can t just retransmit: possible duplicate What to do? sender ACKs/NAKs receiver s ACK/NAK? What if sender ACK/NAK lost? retransmit, but this might cause retransmission of correctly received pkt! Handling duplicates: sender adds sequence number to each pkt sender retransmits current pkt if ACK/NAK garbled receiver discards (doesn t deliver up) duplicate pkt stop and wait Sender sends one packet, then waits for receiver response

rdt2.1: sender, handles garbled ACK/NAKs rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) Λ rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) Wait for call 0 from above Wait for ACK or NAK 1 rdt_send(data) Wait for ACK or NAK 0 Wait for call 1 from above rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) isnak(rcvpkt) ) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isack(rcvpkt) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) Λ