Administrivia CSC458. Sliding Windows, ARQ Connections. This Time. Last Time

Similar documents
Computer Networks UDP and TCP

Tutorial on Socket Programming

ICT SEcurity BASICS. Course: Software Defined Radio. Angelo Liguori. SP4TE lab.

ELEN 602: Computer Communications and Networking. Socket Programming Basics

Transport Layer Protocols

Socket Programming. Srinidhi Varadarajan

Computer Networks Network architecture

Network Programming with Sockets. Process Management in UNIX

Implementing Network Software

q Connection establishment (if connection-oriented) q Data transfer q Connection release (if conn-oriented) q Addressing the transport user

Socket Programming. Request. Reply. Figure 1. Client-Server paradigm

The POSIX Socket API

Socket Programming. Kameswari Chebrolu Dept. of Electrical Engineering, IIT Kanpur

Computer Networks. Chapter 5 Transport Protocols

Operating Systems Design 16. Networking: Sockets

Networks. Inter-process Communication. Pipes. Inter-process Communication

Introduction to Socket Programming Part I : TCP Clients, Servers; Host information

UNIX Sockets. COS 461 Precept 1

Network Security TCP/IP Refresher

ICOM : Computer Networks Chapter 6: The Transport Layer. By Dr Yi Qian Department of Electronic and Computer Engineering Fall 2006 UPRM

[Prof. Rupesh G Vaishnav] Page 1

Transport Layer. Chapter 3.4. Think about

Ethernet. Ethernet. Network Devices

B-2 Analyzing TCP/IP Networks with Wireshark. Ray Tompkins Founder of Gearbit

Chapter 5. Transport layer protocols

Names & Addresses. Names & Addresses. Hop-by-Hop Packet Forwarding. Longest-Prefix-Match Forwarding. Longest-Prefix-Match Forwarding

Limi Kalita / (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 5 (3), 2014, Socket Programming

Objectives of Lecture. Network Architecture. Protocols. Contents

What is CSG150 about? Fundamentals of Computer Networking. Course Outline. Lecture 1 Outline. Guevara Noubir noubir@ccs.neu.

Outline. TCP connection setup/data transfer Computer Networking. TCP Reliability. Congestion sources and collapse. Congestion control basics

Programmation Systèmes Cours 9 UNIX Domain Sockets

TCP Performance Management for Dummies

CPS221 Lecture: Layered Network Architecture

CSE331: Introduction to Networks and Security. Lecture 9 Fall 2006

IP address format: Dotted decimal notation:

Introduction to Socket programming using C

Note! The problem set consists of two parts: Part I: The problem specifications pages Part II: The answer pages

Unix Network Programming

Overview. Securing TCP/IP. Introduction to TCP/IP (cont d) Introduction to TCP/IP

Computer Networks Practicum 2015

First Midterm for ECE374 03/09/12 Solution!!

Access Control: Firewalls (1)

Midterm Exam CMPSCI 453: Computer Networks Fall 2011 Prof. Jim Kurose

TCP/IP - Socket Programming

Final for ECE374 05/06/13 Solution!!

Architecture and Performance of the Internet

Programming with TCP/IP Best Practices

Session NM059. TCP/IP Programming on VMS. Geoff Bryant Process Software

Introduction to Computer Networks

Socket Programming in C/C++

This sequence diagram was generated with EventStudio System Designer (

TCP/IP Optimization for Wide Area Storage Networks. Dr. Joseph L White Juniper Networks

RTP / RTCP. Announcements. Today s Lecture. RTP Info RTP (RFC 3550) I. Final Exam study guide online. Signup for project demos

COMP 3331/9331: Computer Networks and Applications. Lab Exercise 3: TCP and UDP (Solutions)

TCP Flow Control. TCP Receiver Window. Sliding Window. Computer Networks. Lecture 30: Flow Control, Reliable Delivery

TCP/IP Networking for Wireless Systems. Integrated Communication Systems Group Ilmenau University of Technology

Higher Layer Protocols: UDP, TCP, ATM, MPLS

IP Network Layer. Datagram ID FLAG Fragment Offset. IP Datagrams. IP Addresses. IP Addresses. CSCE 515: Computer Network Programming TCP/IP

Computer Networks. Data Link Layer

Life of a Packet CS 640,

Chapter 3. Internet Applications and Network Programming

>>> SOLUTIONS <<< c) The OSI Reference Model has two additional layers. Where are these layers in the stack and what services do they provide?

Network Programming TDC 561

How do I get to

First Workshop on Open Source and Internet Technology for Scientific Environment: with case studies from Environmental Monitoring

Stop And Wait. ACK received; transmit frame 2 CS 455 3

Recent advances in transport protocols

IP - The Internet Protocol

TOE2-IP FTP Server Demo Reference Design Manual Rev1.0 9-Jan-15

Visualizations and Correlations in Troubleshooting

Note! The problem set consists of two parts: Part I: The problem specifications pages Part II: The answer pages

Chapter 11. User Datagram Protocol (UDP)

Basic Networking Concepts. 1. Introduction 2. Protocols 3. Protocol Layers 4. Network Interconnection/Internet

Overview of TCP/IP. TCP/IP and Internet

EITF25 Internet Techniques and Applications L5: Wide Area Networks (WAN) Stefan Höst

8-bit Microcontroller. Application Note. AVR460: Embedded Web Server. Introduction. System Description

Networking Test 4 Study Guide

Command Manual - Network Protocol Quidway S3000 Series Ethernet Switches. Table of Contents

La couche transport dans l'internet (la suite TCP/IP)

TCP in Wireless Mobile Networks

Implementing and testing tftp

Transport and Network Layer

Networking Security IP packet security

The OSI model has seven layers. The principles that were applied to arrive at the seven layers can be briefly summarized as follows:

Design and Implementation of the lwip TCP/IP Stack

How Does Ping Really Work?

LESSON Networking Fundamentals. Understand TCP/IP

1 An application in BPC: a Web-Server

Per-Flow Queuing Allot's Approach to Bandwidth Management

COMP 361 Computer Communications Networks. Fall Semester Midterm Examination

2 TCP-like Design. Answer

Networking part 3: the transport layer

Voice over IP. Demonstration 1: VoIP Protocols. Network Environment

Protocols and Architecture. Protocol Architecture.

TCP Offload Engines. As network interconnect speeds advance to Gigabit. Introduction to

Transcription:

CSC458 Sliding Windows, ARQ Connections Administrivia Projects Project #3 due on Wednesday at 2pm Project #4 out today -- last project Homework Homework #4 out last week, due in two weeks This is our last homework Readings Chapters 5.1, 5.2, 6.1, 6.3, 6.4 No tutorial today Last Time This Time We begin on the Transport layer We finished up the Network layer Internetworks (IP) Routing (DV/RIP, LS/OSPF) Application Presentation Session Focus How do we send information reliably? Application Presentation Session It was all about routing: how to provide end-to-end delivery of packets. Transport Network Link Physical Topics The Transport layer Acknowledgements and retransmissions (ARQ) Sliding windows Transport Network Link Physical

The Transport Layer Example Common Properties Builds on the services of the Network layer Communication between processes running on hosts Naming/Addressing Stronger guarantees of message delivery Reliability TCP Connection-oriented Multiple processes Reliable byte-stream delivery In-order delivery Single delivery Arbitrarily long messages Synchronization Flow control Reliable delivery IP gram oriented Lost packets Reordered packets Duplicate packets Limited size packets What does it mean to be reliable Internet Transport Protocols How can a sender know the sent packet was received? sender receives an acknowledgement How can a receiver know a received packet was sent? sender includes sequence number, checksum UDP gram abstraction between processes With error detection 0 16 31 SrcPort DstPort Length Checksum Do sender and receiver need to come to consensus on what is sent and received? When is it OK for the receiver s TCP/IP stack to deliver the data to the application? TCP Bytestream abstraction between processes With reliability Plus congestion control (later!)

Automatic Repeat Request (ARQ) The Need for Sequence Numbers Time Timeout Sender Frame Receiver Timeout Timeout Sender Frame Frame Receiver Timeout Timeout Sender Frame Frame Receiver Timeout Timeout Sender Frame Frame Receiver Packets can be corrupted or lost. How do we add reliability? Acknowledgments (s) and retransmissions after a timeout ARQ is generic name for protocols based on this strategy In the case of loss (or poor choice of timeout) the receiver can t distinguish this message from the next Need to understand how many packets can be outstanding and number the packets; here, a single bit will do Stop-and-Wait Limitation of Stop-and-Wait Only one outstanding packet at a time Also called alternating bit protocol Sender 0 1 0 1 0 1 0 1 Receiver Ack Lousy performance if trans. delay << prop. delay Max BW: B Actual BW: M/2D Example: B = 100Mb/s, M=1500Bytes, D=50ms Actual BW = 1500Bytes/100ms --> 15000 Bytes/s --> ~100Kb/s 100Mb vs 100Kb?

More BW Please Sliding Window Sender Want to utilize all available bandwidth Need to keep more data in flight How much? Remember the bandwidth-delay product? Leads to Sliding Window Protocol window size says how much data can be sent without waiting for an acknowledgement Sender: Last ed! Send Window Last Sent Window bounds outstanding data Implies need for buffering at sender Specifically, must buffer unack ed data Last applies to in-order data Need not buffer acked data Sender maintains timers too Go-Back-N: one timer, send all unacknowledged on timeout Selective Repeat: timer per packet, resend as needed Sliding Window Timeline Sliding Window Receiver <= Receive Window Time Sender Ack Receiver Receiver choices: Individual Each packet acked Cumulative (TCP) Ack says got everything up to X- 1 really, my ack means that the next byte I am expecting is X Selective (newer TCP) Ack says I got X through Y Negative Ack says I did not get X Receiver: Last byte read (by app) Largest Acceptable Receiver buffers too: data may arrive out-of-order or faster than can be consumed by receiving process No sense having more data on the wire than can be buffered at the receiver. In other words, receiver buffer size should limit the sender s window size

Flow Control Sender and Receiver Buffering Sender must transmit data no faster than it can be consumed by receiver Receiver might be a slow machine App might consume data slowly Older bytes Sending application Newer bytes Older bytes Receiving application Newer bytes Last byte read <= Receive Window Largest Acceptable LastByteWritten These bytes have gone to the app. LastByteRead These bytes have not shown up yet. LastByteAcked LastByteSent NextByteExpected LastByteRcvd Accomplish by adjusting the size of sliding window used at the sender sender adjusts based on receiver s feedback about available buffer space the receiver tells the sender an Advertised Window = available buffer LastByteAcked <= LastByteSent LastByteSent <= LastByteWritten = buffer in use LastByteRead < NextByteExpected NextByteExpected <= LastByteRvcd+1 == if data arrives in order else start of first gap. Flow Control Flow control on the receiver Receiver: MaxRcvBuffer Sender: MaxSndBuffer LastByteRead LastByteRcvd LastByteAcked LastByteWritten NextByteExpected LastByteSent Receiver s goal: always ensure that LastByteRcvd - LastByteRead <= MaxRcvBuffer in other words, ensure it never needs to buffer more than MaxRcvBuffer data To accomplish this, receiver advertises the following window size: AdvertisedWindow = MaxRcvBuffer - ((NextByteExpected - 1) - LastByteRead ) All the buffer space minus the buffer space that s in use. As data arrives: receiver acknowledges it so long as all preceding bytes have also arrived s also carry a piggybacked AdvertisedWindow So, an tells the sender: 1. All data up to the ed seqno has been received 2. How much more data fits in the receiver s buffer, as of receiving the ed data AdvertisedWindow: shrinks as data is received grows as receiving app. reads the data from the buffer

Flow Control On the Sender Sending Side Receiver: MaxRcvBuffer LastByteRead LastByteRcvd NextByteExpected Sender: MaxSndBuffer LastByteAcked LastByteWritten LastByteSent As acknowledgements arrive: advance LastByteAcked update AdvertisedWindow calculate new EffectiveWindow If EffectiveWindow > 0, it is OK to send more data Sender s goal: always ensure that LastByteSent - LastByteAcked <= AdvertisedWindow in other words, don t sent that which is unwanted Notion of EffectiveWindow : how much new data it is OK for sender to currently send EffectiveWindow = AdvertisedWindow - (LastByteSent - LastByteAcked) OK to send that which there is room for, which is that which was advertised (AdvertisedWindow) minus that which I ve already sent since receiving the last advertisement. One last detail on the sender: sender has finite buffer space as well LastByteWritten - LastByteAcked <= MaxSendBuffer OS needs to block application writes if buffer fills i.e., block write(y) if (LastByteWritten - LastByteAcked) + y > MaxSendBuffer Example Exchange of Packets Example Buffer at Sender T=1 SEQ=1 T=1 1 2 3 4 5 6 7 8 9 T=2 T=3 Stall due to T=4 flow control here T=5 =2; WIN=3 SEQ=2 =3; WIN=2 SEQ=3 SEQ=4 =4; WIN=1 Receiver has buffer of size 4 and application doesn t read T=2 T=3 T=4 T=5 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 =acked =sent =advertised T=6 =5; WIN=0 T=6 1 2 3 4 5 6 7 8 9

Packet Format Sliding Window Functions 16 bit window size gets Cramped with large Bandwidth x delay 16 bits --> 64K BD ethernet: 122KB STS24 (1.2Gb/s): 14.8MB 32 bit sequence number must not wrap around faster than the maximum packet lifetime. (120 seconds) -- 622Mb/s link: 55 seconds Sliding window is a mechanism It supports multiple functions: Reliable delivery If I hear you got it, I know you got it. (Ack # is next byte expected ) In-order delivery If you get it, you get it in the right order. SEQ # (Seq # is the byte this is in the sequence ) Flow control If you don t have room for it, I won t send it. Advertised Receiver Window AdvertisedWindow is amount of free space in buffer Key Concepts Last Time Transport layer allows processes to communicate with stronger guarantees, e.g., reliability Basic reliability is provided by ARQ mechanisms Stop-and-Wait through Sliding Window plus retransmissions We began on the Transport layer Focus How do we send information reliably? Topics ARQ and sliding windows Application Presentation Session Transport Network Link Physical

This Time Naming Processes/Services More on the Transport Layer Focus How do we connect processes? Application Presentation Session Transport Topics Naming processes Network Connection setup / teardown Link Flow control Physical Process here is an abstract term for your Web browser (HTTP), Email servers (SMTP), hostname translation (DNS), RealAudio player (RTSP), etc. How do we identify for remote communication? Process id or memory address are OS-specific and transient So TCP and UDP use Ports 16-bit integers representing mailboxes that processes rent typically from OS Identify process uniquely as (IP address, protocol, port) OS converts into process-specific channel, like socket Processes as Endpoints Picking Port Numbers app stuff OS stuff Protocol stuff write(), sendto(), send() Socket file descriptor port read(), recvfrom(), recv() Socket file descriptor port We still have the problem of allocating port numbers What port should a Web server use on host X? To what port should you send to contact that Web server? Servers typically bind to well-known port numbers e.g., HTTP 80, SMTP 25, DNS 53, look in /etc/services Ports below 1024 reserved for well-known services Clients use OS-assigned temporary (ephemeral) ports Above 1024, recycled by OS when client finished

User gram Protocol (UDP) UDP Delivery Provides message delivery between processes Source port filled in by OS as message is sent Destination port identifies UDP delivery queue at endpoint Ports Application process Application process Application process Kernel boundary 0 16 31 SrcPort DstPort Message Queues Checksum Length DeMux on Port # Packets arrive UDP Checksum Transmission Control Protocol (TCP) UDP includes optional protection against errors Checksum intended as an end-to-end check on delivery So it covers data, UDP header, and IP pseudoheader 0 16 31 SrcPort Checksum DstPort Length Reliable bi-directional bytestream between processes Message boundaries are not preserved Connections Conversation between endpoints with beginning and end Flow control Prevents sender from over-running receiver buffers Congestion control Prevents sender from over-running network buffers

TCP Delivery TCP Header Format Application process Application process Ports plus IP addresses identify a connection 0 4 10 16 31 SrcPort DstPort Write bytes Read bytes SequenceNum Acknowledgment TCP TCP Send buffer Receive buffer Transmit segments Segment Segment Segment HdrLen 0 Flags AdvertisedWindow Checksum UrgPtr Options (variable) TCP Header Format TCP Header Format Sequence, Ack numbers used for the sliding window 0 4 10 16 31 SrcPort DstPort SequenceNum Acknowledgment HdrLen 0 Flags AdvertisedWindow Checksum UrgPtr Options (variable) Flags may be URG,, PSH, RST, SYN, FIN 0 4 10 16 31 SrcPort DstPort SequenceNum Acknowledgment HdrLen 0 Flags AdvertisedWindow Checksum UrgPtr Options (variable)

TCP Header Format Other TCP Header Fields Advertised window is used for flow control 0 4 10 16 31 SrcPort DstPort SequenceNum Acknowledgment Header length allows for variable length TCP header options for extensions such as timestamps, selective acknowledgements, etc. Checksum is analogous to that of UDP Urgent pointer/data not used in practice HdrLen 0 Flags Checksum AdvertisedWindow UrgPtr Options (variable) TCP Connection Establishment Both sender and receiver must be ready before we start to transfer the data Sender and receiver need to agree on a set of parameters e.g., the Maximum Segment Size (MSS) This is signaling It sets up state at the endpoints Compare to dialing in the telephone network In TCP a Three-Way Handshake is used Three-Way Handshake Opens both directions for transfer Active opener (client) SYN, SequenceNum = x SYN +, SequenceNum = y, Acknowledgment = x + 1, Acknowledgment = y + 1 Passive listener (server) +data

Some Comments TCP State Transitions We could abbreviate this setup, but it was chosen to be robust, especially against delayed duplicates Three-way handshake from Tomlinson 1975 CLOSED Passive open Close LISTEN Close Active open/syn Choice of changing initial sequence numbers (ISNs) minimizes the chance of hosts that crash getting confused by a previous incarnation of a connection But with random ISN it actually proves that two hosts can communicate Weak form of authentication SYN/SYN + Send/ SYN SYN/SYN + SYN_RCVD Close /FIN FIN_WAIT_1 FIN_WAIT_2 Close /FIN FIN/ + FIN/ FIN/ ESTABLISHED SYN + / FIN/ SYN_SENT CLOSE_WAIT Close /FIN CLOSING LAST_ Timeout after two segment lifetimes TIME_WAIT CLOSED Again, with States Connection Teardown Active participant (client) SYN_SENT ESTABLISHED SYN, SequenceNum = x SYN +, SequenceNum = y, Acknowledgment = x + 1, Acknowledgment = y + 1 Passive participant (server) LISTEN SYN_RCVD Orderly release by sender and receiver when done Delivers all pending data and hangs up Cleans up state in sender and receiver TCP provides a symmetric close both sides shutdown independently +data ESTABLISHED

TCP Connection Teardown The TIME_WAIT State FIN_WAIT_1 Web server FIN Web browser We wait 2MSL (two times the maximum segment lifetime of 60 seconds) before completing the close FIN_WAIT_2 TIME_WAIT CLOSED FIN CLOSE_WAIT LAST_ CLOSED Why? might have been lost and so FIN will be resent Could interfere with a subsequent connection Berkeley Sockets interface TCP (connection-oriented) Networking protocols implemented in OS OS must expose a programming API to applications most OSs use the socket interface originally provided by BSD 4.1c in ~1982. Principle abstraction is a socket a point at which an application attaches to the network defines operations for creating connections, attaching to network, sending and receiving data, closing connections Block until connect Process request Server Socket() Bind() Listen() Accept() Recv() Send() Connection Establishmt. (request) (reply) Client Socket() Connect() Send() Recv()

UDP (connectionless) Socket call Server Means by which an application attached to the network Block until from client Socket() Bind() Recvfrom() (request) Client Socket() Bind() Sendto() #include <sys/socket.h> int socket(int family, int type, int protocol) Family: address family (protocol family) AF_UNIX, AF_INET, AF_NS, AF_IMPLINK Type: semantics of communication SOCK_STREAM, SOCK_DGRAM, SOCK_RAW Not all combinations of family and type are valid Protocol: Usually set to 0 but can be set to specific value. Family and type usually imply the protocol Return value is a handle for new socket Process request Sendto() (reply) Recvfrom() Bind call Listen call Typically a server call Binds a newly created socket to the specified address int bind(int socket, struct sockaddr *address, int addr_len) Socket: newly created socket handle Address: data structure of address of local system IP address and port number (demux keys) Same operation for both connection-oriented and connectionless servers Can use well known port or unique port Used by connection-oriented servers to indicate an application is willing to receive connections Int(int socket, int backlog) Socket: handle of newly creates socket Backlog: number of connection requests that can be queued by the system while waiting for server to execute accept call.

Accept call Connect call A server call After executing listen, the accept call carries out a passive open (server prepared to accept connects). int accept(int socket, struct sockaddr *address, int addr_len) It blocks until a remote client carries out a connection request. When it does return, it returns with a new socket that corresponds with new connection and the address contains the clients address A client call Client executes an active open of a connection int connect(int socket, struct sockaddr *address, int addr_len) How does the OS know where the server is? Call does not return until the three-way handshake (TCP) is complete Address field contains remote system s address Client OS usually selects random, unused port Input and Output After connection has been made, application uses send/recv to data int send(int socket, char *message, int msg_len, int flags) Send specified message using specified socket int recv(int socket, char *buffer, int buf_len, int flags) Receive message from specified socket into specified buffer Or can use read/write int read(int socket, char* buffer, int len) int write(int socket, char* buffer, int len); Or can sometimes use sendto/recvfrom Or can use sendmsg, recvmsg for scatter/gather Sample Code

Key Concepts We use ports to name processes in TCP/UDP Well-known ports are used for popular services Connection setup and teardown complicated by the effects of the network on messages TCP uses a three-way handshake to set up a connection TCP uses a symmetric disconnect