The Application Layer Application Services (Telnet, FTP, e-mail, WWW) Reliable Stream Transport (TCP) Connectionless Packet Delivery Service (IP) Unreliable.

Slides:



Advertisements
Similar presentations
Introduction to Sockets Jan Why do we need sockets? Provides an abstraction for interprocess communication.
Advertisements

Programming with UDP – I Covered Subjects: IPv4 Socket Address Structure Byte Ordering Functions Address Access/Conversion Functions Functions: 1.socket()
Socket Programming Application Programming Interface.
Data Communications and Networking (Third Edition)
Quick Overview. 2 ISO/OSI Reference Model Application Application Presentation Presentation Session Session Transport Transport Network Network Data Link.
Socket Programming: a Primer Socket to me!. Feb. 23, 2001EE122, UCB2 Why does one need sockets? application network protocol sockets network.
1 Socket Interfaces Professor Jinhua Guo CIS527 Fall 2003.
תקשורת באינטרנט Tutorial 8. 2 n Socket programming u What is socket ? u Sockets architecture u Types of Sockets u The Socket system calls u Data Transfer.
Tutorial 8 Socket Programming
Programming with Berkeley Sockets Presented by Chris GauthierDickey Written by Daniel Stutzbach (I think!) for CIS 432/532 Useful References: ● man pages.
Introduction to Socket Programming April What is a socket? An interface between application and network –The application creates a socket –The socket.
CSE/EE 461 Getting Started with Networking. Basic Concepts  A PROCESS is an executing program somewhere.  Eg, “./a.out”  A MESSAGE contains information.
SOCKETS Lecture #3. The Socket Interface Funded by ARPA (Advanced Research Projects Agency) in Developed at UC Berkeley Objective: to transport.
Introduction to Project 1 Web Client and Server Jan 2006.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
UNIX Sockets COS 461 Precept 1.
CPSC 441 TUTORIAL – JANUARY 18, 2012 TA: MARYAM ELAHI INTRODUCTION TO SOCKET PROGRAMMING WITH C.
Babak Esfandiari (based on slides by Qusay Mahmoud)
Socket programming in C. Socket programming Socket API introduced in BSD4.1 UNIX, 1981 explicitly created, used, released by apps client/server paradigm.
CS1652 September 13th, 2012 The slides are adapted from the publisher’s material All material copyright J.F Kurose and K.W. Ross, All Rights.
ECE 4110 – Internetwork Programming Client-Server Model.
Fall 2000Datacom 11 Socket Programming Review Examples: Client and Server-Diagnostics UDP versus TCP Echo.
TCP/IP Protocol Stack IP Device Drivers TCPUDP Application Sockets (Gate to network) TCP: –Establish connection –Maintain connection during the communication.
Operating Systems Chapter 9 Distributed Communication.
Assignment 3 A Client/Server Application: Chatroom.
Socket Programming. Introduction Sockets are a protocol independent method of creating a connection between processes. Sockets can be either – Connection.
IT1352-NETWORK PROGRAMMING AND MANAGEMENT
9/12/2015B.R1 Socket Abstraction and Interprocess Communication B.Ramamurthy CSE421.
Sirak Kaewjamnong Computer Network Systems
CSTP FS01CS423 (cotter)1 Protocols 2 References: RFC’s 791, 793, 768, 826.
 Wind River Systems, Inc Chapter - 13 Network Programming.
The Socket Interface Chapter 21. Application Program Interface (API) Interface used between application programs and TCP/IP protocols Interface used between.
The Socket Interface Chapter 22. Introduction This chapter reviews one example of an Application Program Interface (API) which is the interface between.
Networking Tutorial Special Interest Group for Software Engineering Luke Rajlich.
CS 158A1 1.4 Implementing Network Software Phenomenal success of the Internet: – Computer # connected doubled every year since 1981, now approaching 200.
CPSC 441 TUTORIAL – FEB 13, 2012 TA: RUITNG ZHOU UDP REVIEW.
1 Computer Networks An Introduction to Computer Networks University of Tehran Dept. of EE and Computer Engineering By: Dr. Nasser Yazdani Lecture 3: Sockets.
TELE202 Lecture 15 Socket programming 1 Lecturer Dr Z. Huang Overview ¥Last Lecture »TCP/UDP (2) »Source: chapter 17 ¥This Lecture »Socket programming.
An Introductory 4.4BSD Interprocess Communication Tutorial Stuart Sechrest.
University of Calgary – CPSC 441.  A socket is an interface between the application and the network (the lower levels of the protocol stack)  The application.
UNIX Sockets COS 461 Precept 1. Socket and Process Communication The interface that the OS provides to its networking subsystem application layer transport.
Client-Server Model of Interaction Chapter 20. We have looked at the details of TCP/IP Protocols Protocols Router architecture Router architecture Now.
Introduction to Socket
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)
CSE/EE 461 Getting Started with Networking. 2 Basic Concepts A PROCESS is an executing program somewhere. –Eg, “./a.out” A MESSAGE contains information.
Socket Programming Lab 1 1CS Computer Networks.
Sockets Socket = abstraction of the port concept: –Application programs request that the operating system create a socket when one is needed –O.S. returns.
2: Application Layer1 Chapter 2: Application layer r 2.1 Principles of network applications r 2.2 Web and HTTP r 2.3 FTP r 2.4 Electronic Mail  SMTP,
CSCI 330 UNIX and Network Programming Unit XV: Transmission Control Protocol.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
CSCI 330 UNIX and Network Programming Unit XIV: User Datagram Protocol.
Socket Programming. Computer Science, FSU2 Interprocess Communication Within a single system – Pipes, FIFOs – Message Queues – Semaphores, Shared Memory.
1 Spring Semester 2008, Dept. of Computer Science, Technion Internet Networking recitation #7 Socket Programming.
Socket programming in C. Socket programming with TCP Client must contact server server process must first be running server must have created socket (door)
Socket Programming in C CS587x Lecture 3 Department of Computer Science Iowa State University.
1 Socket Interface. 2 Client-Server Architecture The client is the one who speaks first Typical client-server situations  Client and server on the same.
Socket Programming(1/2). Outline  1. Introduction to Network Programming  2. Network Architecture – Client/Server Model  3. TCP Socket Programming.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
SOCKET PROGRAMMING Presented By : Divya Sharma.
UNIX Sockets COS 461 Precept 1.
CS 1652 Jack Lange University of Pittsburgh
Socket Programming in C
Socket Interface 1 Introduction 11 Socket address formats 2 API 12 13
Tutorial on Socket Programming
Transport layer API: Socket Programming
Chapter 2 Application Layer
Socket Programming(1/2)
Internet Networking recitation #8
Presentation transcript:

The Application Layer Application Services (Telnet, FTP, , WWW) Reliable Stream Transport (TCP) Connectionless Packet Delivery Service (IP) Unreliable Transport Service (UDP)

The Client-Server Model Commonly used model for application interaction over a TCP/IP internet –Server: a program that offers a service that can be reached over a network Examples: web server, file server –Client: a program that requests a service from a server Examples: ping, browser

The Client-Server Model (cont)

Example: UDP Echo Server Server process attaches to port 7 (echo port) While (TRUE) do –Wait for a user datagram to arrive –Swap the source and destination IP addresses and port numbers –Return the user datagram to the original sender

Example: UDP Echo Client Obtain an unused UDP port Create a user datagram –Source and destination IP addresses –Source and destination port numbers Send the user datagram to the echo server Await the server’s reply

Differences Between Clients and Servers

Servers - Master and Slaves Can receive multiple concurrent requests Each request can take considerable time to process Most complex servers have two parts: –A single master program that accepts new requests –A set of slaves that are responsible for handling individual requests

The Master-Slave Server Algorithm Master: –Open a well-known port for requests –While (TRUE) do Waits for a client request Start an independent, concurrent slave to handle the request Slave: –Process the request given by the master –Send reply to the client –Exit

Servers - Must be well Written! Servers are usually more complex and harder to write than clients: –Handle multiple, concurrent requests –Enforce authorization and protection –Must handle errors/malformed requests The Oracle of Bacon at Virginia The Internet worm

Alternatives to the Client-Server Model Consider ARP: –Follows the client-server model –Demand driven Consider NNTP (Network News Transport Protocol): –Does not follow the client-server model –Uses precollection

Alternatives to the Client-Server Model Precollection –Advantages Speed Mask network/hardware failures –Disadvantages Uses processor time and network bandwidth whether anyone uses the service or not

How Programmers use TCP/IP Example: UNIX –Application programs interact with the operating system by making system calls –Standard I/O operations: Open Read/write Close –Network I/O: has own system calls and library routines

Using UNIX Sockets for Network I/O Socket = abstraction of the port concept: –Application programs request that the operating system create a socket when one is needed –O.S. returns a small integer (socket descriptor) that the program uses to reference the socket –Application program can then use read and write system calls on the socket –Program closes the socket when finished using it

Creating a Socket The socket system call: int sd; // socket descriptor int pf; // protocol family (one of PF_INET, // PF_PUP, PF_APPLETALK, // PF_UNIX, etc.) int type;// type of service (one of SOCK_RAW, // SOCK_DGRAM, SOCK_STREAM) int protocol;// specific protocol in pf sd = socket(pf, type, protocol)// create a new socket

Binding a Socket to a Source Address Some programs (mainly servers) will want a specific (reserved) address Some programs (mainly clients) don’t care what address they use and will allow the O.S. to choose one Uses the bind system call

Binding a Socket to a Source Address (cont) The bind system call: int sd; // socket descriptor struct sockaddr addr;// structure specifying source // address int len;// length (in bytes) of // addr struct bind(sd,addr,len)// bind socket to source address

Binding a Socket to a Source Address (cont) The sockaddr struct: Address family field: determines the format of the remaining address octets ADDRESS FAMILY ADDRESS OCTETS 0-1 ADDRESS OCTETS 2-5 ADDRESS OCTETS 6-9 ADDRESS OCTETS 10-13

Binding a Socket to an Internet Source Address The sockaddr_in struct for PF_INET: ADDRESS FAMILY(2) PROTOCOL PORT IP ADDRESS UNUSED (ZERO)

Binding a Socket to an Internet Source Address (cont) The bind system call: int sd; // socket descriptor struct sockaddr_in addr;// structure specifying source // address int len;// length (in bytes) of // addr struct bind(sd,addr,len)// bind socket to source IP // address

Connecting a Socket to a Destination Address The connect system call: int sd; // socket descriptor struct sockaddr addr;// structure specifying dest addr int len;// length (in bytes) of // addr struct connect(sd,addr,len)// connect socket to // dest address Can also use a sockaddr_in struct for dest address

Sending Data Through a Socket The write system call: int sd; // socket descriptor void *buffer;// address of the data to be sent int len;// number of bytes to send write(sd,buffer,len)// send data through socket

Receiving Data Through a Socket The read system call: int sd; // socket descriptor void *buffer;// address in memory at which // to store the data int len;// number of bytes to receive read(sd,buffer,len)// receive data through socket

Closing a Socket The close system call: int sd; // socket descriptor close(sd)// close socket

Obtaining Local Socket Addresses The getsockname system call: int sd; // socket descriptor struct sockaddr *addr; // address structure to be filled int *len;// pointer to integer that will // contain the length of the // address getsockname(sd, addr, len); // obtain local socket address

Obtaining and Setting Socket Options The getsockopt system call: int sd; // socket descriptor int level; // option for socket or protocol? int optionid;// which specific option? void *optionval;// where to place the requested // value int *len; // length of the optionval getsockopt(sd, level, optionid, optionval, len); // obtain // socket opt

Obtaining and Setting Socket Options (cont) Values for level (from ): –SOL_SOCKEToption for the socket –IPPROTO_IPoption for IP –IPPROTO_ICMPoption for ICMP –IPPROTO_TCPoption for TCP –IPPROTO_UDPoption for UDP

Obtaining and Setting Socket Options (cont) Values for optionid (from ): –SO_TYPEsocket type –SO_SNDBUFsend buffer size –SO_RCVBUFreceive buffer size –SO_DEBUGdebugging info available? –SO_ACCEPTCONNsocket listening enabled? –SO_BROADCASTbroadcast supported? –SO_REUSEADDRaddress reuse allowed? –SO_KEEPALIVEkeep alive after close?

Obtaining and Setting Socket Options (cont) The setsockopt system call: int sd; // socket descriptor int level; // option for socket or protocol? int optionid;// which specific option? void *optionval;// option value int *len; // length of the option value setsockopt(sd, level, optionid, optionval, len); // set option // value

Socket Options for Servers The listen system call: int sd; // socket descriptor int length; // length of request queue listen(sd, length)// set socket request queue // length Can only be used for SOCK_STREAM sockets

Servers: Accepting Connections The accept system call: int sd; // socket descriptor struct sockaddr *name;// address of client int *len; // length of address struct newsock = accept(sd, addr, len) // accept connection A new socket is created that connects to the client Server handles request, sends reply, closes newsock

Servers That Provide Multiple Services The select system call: int ndesc; // check descriptors 0...ndesc-1 void *indesc;// descriptors to check for input void *outdesc; // descriptors to check for output void *excdesc;// descriptors to check for exceptions int *timeout;// how long to wait for a connection nready = select(ndesc, indesc, outdesc, excdesc, timeout) // determine which descriptors are // ready for I/O

Servers That Provide Multiple Services (cont) The select system call: nready = select(ndesc, indesc, outdesc, excdesc, timeout) Returns the number of descriptors from the specified set that are ready for I/O A process can use select to communicate over more than one socket at a time Typically each socket provides a distinct service

Miscellaneous (Useful) System Calls The gethostname system call: char *name;// buffer to store name int length;// size of buffer in bytes gethostname(name, length)// get name of host Defined in include file Process can learn host it’s running on

Miscellaneous (Useful) System Calls (cont) The network byte order conversion routines: –Network-to-host (short), ntohs, convert a short int from network byte order to host byte order –Network-to-host (long), ntohl, convert a long int from network byte order to host byte order –Host-to-network (short), htons, convert a short int from network byte order to host byte order –Host-to-network (long), htonl, convert a long int from network byte order to host byte order

Miscellaneous (Useful) System Calls (cont) Testing htons: #include main(int argc, char **argv) { if (argc != 2) exit(-1); printf("%d\n",atoi(argv[1])); printf("%d\n",htons(atoi(argv[1]))); }

Miscellaneous (Useful) System Calls (cont) The gethostbyname system call: struct hostent *h;// hostent structure char *name;// host name h = gethostbyname(name);// fill in hostent with // info about name

Miscellaneous (Useful) System Calls (cont) The hostent structure (defined in ): struct hostent { char *h_name;/* official name of host */ char **h_aliases; /* alias list */ int h_addrtype; /* host address type */ int h_length; /* length of address */ char **h_addr_list; /* list of addresses from name server */

Datagram Socket Example: Receiver #include main() { int sock, len; struct sockaddr_in name; char buf [1024]; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) exit(-1); name.sin_family = AF_INET; name.sin_addr.s_addr = INADDR_ANY; name.sin_port = 0; if (bind(sock, (struct sockaddr *) &name, sizeof(name))) exit(-1); len = sizeof(name); if (getsockname(sock, (struct sockaddr *) &name, &len)) exit(-1); printf("Receiver listening on port %d\n",ntohs(name.sin_port)); if (read(sock, buf, 1024) < 0) exit(-1); printf("%s\n",buf); close(sock); }

Datagram Socket Example: Sender #include main(int argc, char **argv) { int sock; struct sockaddr_in name; struct hostent *hp, *gethostbyname(); if (argc != 3) exit(-1); sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock < 0) exit(-1); hp = gethostbyname("prime.cs.ohiou.edu"); if (hp == 0) exit(-1); bcopy(hp->h_addr, &name.sin_addr, hp->h_length); name.sin_family = AF_INET; name.sin_port = htons(atoi(argv[1])); if (connect(sock, (struct sockaddr *) &name, sizeof(name))) exit(-1); if (write(sock, argv[2], (strlen(argv[2])+1)) < 0) exit(-1); close(sock); }

Summary The client-server model is widely-used for application interaction over a TCP/IP internet –Server: a program that offers a service that can be reached over a network Examples: web server, file server –Client: a program that requests a service from a server Examples: ping, browser Application programs typically interact with the networking software by using sockets and system calls: –Socket – create a socket –Bind – bind a socket to a port –Read/write – get/put data in a socket –Etc.