Client server programming model 15 213 The course that gives CMU its Zip Network programming April 19 2001 Client server are both processes Server manages a resource Client makes a request for a service client request may involve a conversation according to some server protocol client Server provides service by manipulating the resource on behalf of client and then returning a response Topics Client server model Sockets interface Echo client and server class24 ppt class24 ppt Clients request server process request client 2 server response server CS 213 S 01 Using ports to identify services Examples of client programs Web browsers ftp telnet ssh server machine 128 2 194 242 How does the client find the server client machine The address of the server process has two parts IPaddress port The IP address is a unique 32 bit positive integer that identifies the machine dotted decimal form 0x8002C2F2 128 2 194 242 The port is positive integer associated with a service and thus a server on that machine port 7 echo server port 23 telnet server port 25 mail server port 80 web server service request for 128 2 194 242 80 i e the Web server Web server port 80 kernel client Echo server port 7 client service request for 128 2 194 242 7 i e the echo server Web server port 80 kernel Echo server port 7 class24 ppt 3 class24 ppt CS 213 S 01 Page 1 4 CS 213 S 01 Servers Server examples Web server port 80 Servers are long running processes daemons resource files compute cycles CGI programs service serves files and runs CGI programs on behalf of the client Created at boot time typically by the init process process 1 Run continuously until the machine is turned off FTP server 20 21 Each server waits for requests to arrive on a wellknown port associated with a particular service resource files service stores and serves files port 7 echo server port 25 mail server port 80 http server Telnet server 23 resource terminal service proxies a terminal on the server machine A machine that runs a server process is also often referred to as a server Mail server 25 resource email spool file service stores mail messages in spool file See etc services for a comprehensive list of the services available on a Linux machine class24 ppt 5 class24 ppt CS 213 S 01 reliable two way byte stream looks like a file akin to placing a phone call slower but more robust Must open a file before you can do anything else int fd Bk Bk 1 B1 B0 client connection CS 213 S 01 Linux file I O open The two basic ways that clients and servers communicate Connections 6 server file descriptor if fd open etc hosts O RDONLY 0 perror open exit 1 B0 B1 Bk 1 Bk Datagrams data transferred in unreliable chunks can be lost or arrive out of order akin to using surface mail faster but less robust dgram open returns a small integer file descriptor dgram client fd 0 indicates that an error occurred server dgram predefined file descriptors dgram 0 stdin 1 stdout 2 stderr We will only discuss connections class24 ppt 7 class24 ppt CS 213 S 01 Page 2 8 CS 213 S 01 Linux file I O read File I O write read allows a program to access the contents of file write allows a program to modify file contents char buf 512 int fd file descriptor int nbytes number of bytes read char buf 512 int fd file descriptor int nbytes number of bytes read open the file read up to 512 bytes from file fd if nbytes read fd buf sizeof buf 0 perror read exit 1 open the file write up to 512 bytes from buf to file fd if nbytes write fd buf sizeof buf 0 perror write exit 1 read returns the number of bytes read from file fd write returns the number of bytes written from buf to file fd nbytes 0 indicates that an error occurred if successful read places nbytes bytes into memory starting at address buf class24 ppt 9 nbytes 0 indicates that an error occurred class24 ppt CS 213 S 01 A socket is a descriptor that lets an application read write from to the network Key idea Linux uses the same abstraction for both file I O and network I O Provides a user level interface to the network Clients and servers communicate with each other by reading from and writing to socket descriptors Underlying basis for all Internet applications Using regular Linux read and write I O functions Based on client server programming model 11 CS 213 S 01 What is a socket Berkeley Sockets Interface Created in the early 80 s as part of the original Berkeley distribution of Unix that contained an early version of the Internet protocols class24 ppt 10 The main difference between file I O and socket I O is how the application opens the socket descriptors class24 ppt CS 213 S 01 Page 3 12 CS 213 S 01 Key data structures Key data structures Defined in usr include netinet in h Defined in usr include netdb h Internet address struct in addr unsigned int s addr 32 bit IP address Internet style socket address struct sockaddr in unsigned short int sin family unsigned short int sin port struct in addr sin addr unsigned char sin zero Address family AF INET Port number IP address Pad to sizeof struct sockaddr 13 host entry official name of host alias list host address type length of address list of addresses Hostent is a DNS host entry that associates a domain name e g cmu edu with an IP addr 128 2 35 186 DNS Domain Name Service is a world wide distributed database of domain name IP address mappings Can be accessed from user programs using gethostbyname domain name to IP address or gethostbyaddr IP address to domain name Can also be accessed from the shell using nslookup or dig Internet style sockets are characterized by a 32 bit IP address and a port class24 ppt Domain Name Service DNS struct hostent char h name char h aliases int h addrtype int h length char h addr list class24 ppt CS 213 S 01 14 CS 213 S 01 Echo client socket Echo client prologue The client creates a socket that will serve as the endpoint of an Internet AF INET connection SOCK STREAM The client connects to a host and port passed in on the command line error wrapper for perror void error char msg perror msg exit 0 int sockfd socket descriptor sockfd socket AF INET SOCK STREAM 0 if sockfd 0 error ERROR opening socket int main int argc char argv local variable definitions socket returns an integer socket descriptor sockfd 0 indicates that an error occurred check command line arguments if argc 3 fprintf stderr usage s hostname port n argv 0 exit 0 hostname argv 1 portno atoi argv 2 class24 ppt 15 class24 ppt CS 213 S 01 Page 4 16 CS 213 S 01 Echo client gethostbyname Echo
View Full Document