Unformatted text preview:

CS 105 Tour of the Black Holes of Computing Network Programming Topics Programmer s view of the Internet review Sockets interface Writing clients and servers Client Server Transactions Every network application is based on client server model Server process and one or more client processes Server manages some resource Server provides service by manipulating resource for clients 4 Client handles response Client process 1 Client sends request 3 Server sends response Server process Resource 2 Server handles request Note clients and servers are processes running on hosts can be the same or different hosts 2 CS 105 Programmer s View of Internet 1 Hosts are mapped to set of 32 bit or 128 bit IP addresses 134 173 42 2 2001 1878 301 902 214 22ff fe7c 883f 2 IP addresses are mapped to identifiers called Internet domain names 134 173 42 2 maps to www cs hmc edu In general mapping is many to many 3 Process on one Internet host can communicate with process on another over a connection 3 CS 105 1 IP Addresses Computers are identified by IP addresses Two flavors IPv4 old and IPv6 new Both are stored in an IP address struct of appropriate type in addr for IPv4 in6 addr for IPv6 Details don t matter library functions usually hide them 4 CS 105 2 Domain Naming System DNS Internet maintains mapping between IP addresses and domain names in huge worldwide distributed database called DNS Conceptually programmers can view DNS database as collection of millions of host entry structures DNS host entry structure struct hostent char h name char h aliases int h addrtype int h length char h addr list official domain name of host null terminated array of domain names host address type AF INET or AF INET6 length of an address in bytes null terminated array of in addr structs Functions for retrieving host entries from DNS 5 getaddrinfo query key is a DNS domain name getnameinfo query key is an IP address CS 105 3 Internet Connections Clients and servers communicate by sending streams of bytes over connections Connections are point to point full duplex 2 way communication and reliable Client socket address 128 2 194 242 51213 Client Server socket address 134 173 42 2 80 Connection socket pair 128 2 194 242 51213 134 173 42 2 80 Server port 80 Client host address 128 2 194 242 Server host address 134 173 42 2 Note 51213 is an ephemeral port allocated 6 by the kernel Note 80 is a well known port associated with Web servers CS 105 Clients Examples of client programs Web browsers ftp telnet ssh How does a client find the server IP address in server socket address identifies host more precisely an adapter on the host Well known port in server socket address identifies service and thus implicitly identifies server process that provides it Examples of well known ports Port 7 Echo server Port 23 Telnet server Port 25 Mail server Port 80 Web server 7 CS 105 Using Ports to Identify Services Server host 134 173 42 2 Client host Client Service request for 134 173 42 2 80 i e Web server Web server port 80 Kernel Echo server port 7 Client Service request for 134 173 42 2 7 i e echo server Web server port 80 Kernel Echo server port 7 8 CS 105 Servers Servers are long running processes daemons Created at boot time typically by init process process 1 Run continuously until machine is turned off Or spawned by inetd in response to connection to port Each server waits for requests to arrive on well known port associated with that particular service Port 7 echo server Port 22 ssh server Port 25 mail server Port 80 HTTP server Machine that runs a server process is also often referred to as a server 9 CS 105 Server Examples Web server port 80 Resource files compute cycles CGI programs Service retrieves files and runs CGI programs on behalf of the client FTP server 20 21 Resource files Service stores and retrieve files Ssh server 22 See etc services for a comprehensive list of the services potentially available on a Linux machine Resource terminal Service proxies a terminal on the server machine Mail server 25 10 Resource email spool file Service stores mail messages in spool file CS 105 Sockets Interface Created in the early 80 s as part of original Berkeley distribution of Unix that contained an early version of the Internet protocols Designed for any network protocol Provides a user level interface to the network Underlying basis for all Internet applications Based on client server programming model 11 CS 105 Overview of Sockets Interface Client Server socket socket bind open listenfd open clientfd listen connect accept write read read write close 12 Connection request EOF Await connection request from next client read close CS 105 Sockets What is a socket To kernel socket is endpoint of communication To application socket is file descriptor that lets application read from or write to network Remember All Unix I O devices including networks are modeled as files Clients and servers communicate with each other by reading from and writing to socket descriptors Main distinction between regular file I O and socket I O is how application opens socket descriptors 13 CS 105 Socket Address Structures Generic socket address struct sockaddr For address arguments to connect bind and accept Necessary because other networks non TCP IP have different address formats But doesn t work for IPv6 Internet specific socket addresses 14 IPv4 uses sockaddr in IPv6 uses sockaddr in6 Must use union to be sure of having enough space sigh CS 105 Echo Client Main Routine include lots of stuff usage echoclient host port int main int argc char argv int clientfd size t n char host port buf MAXLINE host argv 1 port argv 2 if clientfd open clientfd host port 1 exit 1 while fgets buf sizeof buf 1 stdin NULL write clientfd buf strlen buf n read clientfd buf sizeof buf 1 if n 0 buf n 0 fputs buf stdout close clientfd exit 0 15 CS 105 Echo Client open clientfd int open clientfd char hostname char port int clientfd error struct addrinfo hints hostaddresses NULL This function opens connection from client to server at hostname port Details follow Find out the server s IP address and port memset hints 0 sizeof hints hints ai flags AI ADDRCONFIG AI V4MAPPED hints ai family AF INET6 hints ai socktype SOCK STREAM if getaddrinfo hostname port hints hostaddresses 0 return 2 We take advantage of the fact that AF and PF are identical clientfd socket hostaddresses ai family hostaddresses ai socktype hostaddresses ai protocol if clientfd 1 return 1 check errno for cause of error


View Full Document

Harvey Mudd CS 105 - Network Programming

Documents in this Course
Processes

Processes

25 pages

Processes

Processes

27 pages

Load more
Loading Unlocking...
Login

Join to view Network Programming and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Network Programming and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?