15 213 The course that gives CMU its Zip Network programming April 19 2001 Topics Client server model Sockets interface Echo client and server class24 ppt Client server programming model Client server are both processes Server manages a resource Client makes a request for a service request may involve a conversation according to some server protocol Server provides service by manipulating the resource on behalf of client and then returning a response class24 ppt 2 client request server process request client client server response server CS 213 S 01 Clients Examples of client programs Web browsers ftp telnet ssh How does the client find the server 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 class24 ppt 3 CS 213 S 01 Using ports to identify services server machine 128 2 194 242 client machine client service request for 128 2 194 242 80 i e the Web server Web server port 80 kernel 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 4 CS 213 S 01 Servers Servers are long running processes daemons Created at boot time typically by the init process process 1 Run continuously until the machine is turned off Each server waits for requests to arrive on a wellknown port associated with a particular service port 7 echo server port 25 mail server port 80 http server A machine that runs a server process is also often referred to as a server class24 ppt 5 CS 213 S 01 Server examples Web server port 80 resource files compute cycles CGI programs service serves files and runs CGI programs on behalf of the client FTP server 20 21 resource files service stores and serves files Telnet server 23 resource terminal service proxies a terminal on the server machine 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 6 CS 213 S 01 The two basic ways that clients and servers communicate Connections reliable two way byte stream looks like a file akin to placing a phone call slower but more robust Bk Bk 1 B1 B0 client connection server 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 We will only discuss connections class24 ppt dgram dgram client server dgram 7 dgram CS 213 S 01 Linux file I O open Must open a file before you can do anything else open returns a small integer file descriptor fd 0 indicates that an error occurred predefined file descriptors 0 stdin 1 stdout 2 stderr int fd file descriptor if fd open etc hosts O RDONLY 0 perror open exit 1 class24 ppt 8 CS 213 S 01 Linux file I O read read allows a program to access the contents of file 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 read returns the number of bytes read from file fd nbytes 0 indicates that an error occurred if successful read places nbytes bytes into memory starting at address buf class24 ppt 9 CS 213 S 01 File I O write write allows a program to modify file contents char buf 512 int fd file descriptor int nbytes number of bytes read 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 write returns the number of bytes written from buf to file fd nbytes 0 indicates that an error occurred class24 ppt 10 CS 213 S 01 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 Provides a user level interface to the network Underlying basis for all Internet applications Based on client server programming model class24 ppt 11 CS 213 S 01 What is a socket 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 Clients and servers communicate with each other by reading from and writing to socket descriptors Using regular Linux read and write I O functions The main difference between file I O and socket I O is how the application opens the socket descriptors class24 ppt 12 CS 213 S 01 Key data structures Defined in usr include netinet in 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 Internet style sockets are characterized by a 32 bit IP address and a port class24 ppt 13 CS 213 S 01 Key data structures Defined in usr include netdb h Domain Name Service DNS struct hostent char h name char h aliases int h addrtype int h length char h addr list 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 class24 ppt 14 CS 213 S 01 Echo client prologue 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 main int argc char argv local variable definitions 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 CS 213 S 01 Echo client socket The client creates a socket that will serve as the endpoint of an Internet AF INET connection SOCK STREAM int sockfd socket descriptor sockfd socket AF INET SOCK STREAM 0 if sockfd 0 error ERROR opening socket socket returns an integer socket descriptor sockfd 0 indicates that an error occurred class24 ppt 16 CS 213 S 01 Echo client gethostbyname The client builds the server s
View Full Document