Carnegie MellonIntroduction to Computer Systems15-213/18-243, spring 200923rdLecture, Apr. 14thInstructors:Gregory Kesden and Markus PüschelCarnegie MellonLast Time: Client-Server TransactionClientprocessServerprocess1. Client sends request2. Server handlesrequest3. Server sends response4. Client handlesresponseResourceNote: clients and servers are processes running on hosts (can be the same or different hosts)Carnegie MellonLast Time: Logical Structure of an internetrouterrouterrouterrouterrouterrouterhosthostCarnegie MellonLast Time: internet Protocol Provides a naming scheme An internet protocol defines a uniform format for host addresses Each host (and router) is assigned at least one of these internet addresses that uniquely identifies it Provides a delivery mechanism An internet protocol defines a standard transfer unit (packet) Packet consists of header and payload Header: contains info such as packet size, source and destination addresses Payload: contains data bits sent from source hostCarnegie MellonLAN2Transferring Data Over an internetprotocolsoftwareclientLAN1adapterHost ALAN1data(1)data PH FH1(4)data PH FH2(6)data(8)data PH FH2 (5)LAN2 frameprotocolsoftwareLAN1adapterLAN2adapterRouterdata PH(3) FH1data PH FH1(2)internet packetLAN1 frame(7) data PH FH2protocolsoftwareserverLAN2adapterHost BPH: Internet packet headerFH: LAN frame headerCarnegie MellonToday Programmer’s view of the internet Sockets interfaceCarnegie MellonA Programmer’s View of the Internet Hosts are mapped to a set of 32-bit IP addresses 128.2.203.179 The set of IP addresses is mapped to a set of identifiers called Internet domain names 128.2.203.179 is mapped to www.cs.cmu.edu A process on one Internet host can communicate with a process on another Internet host over a connectionCarnegie MellonIP Addresses 32-bit IP addresses are stored in an IP address struct IP addresses are always stored in memory in network byte order (big-endian byte order) True in general for any integer transferred in a packet header from one machine to another. E.g., the port number used to identify an Internet connection./* Internet address structure */struct in_addr {unsigned int s_addr; /* network byte order (big-endian) */};Useful network byte-order conversion functions:htonl: convert long int from host to network byte orderhtons: convert short int from host to network byte orderntohl: convert long int from network to host byte orderntohs: convert short int from network to host byte orderCarnegie MellonDotted Decimal Notation By convention, each byte in a 32-bit IP address is represented by a string: decimal values for bytes, separated by a period IP address: 0x8002C2F2 = 128.2.194.242Blackboard?Carnegie MellonDotted Decimal Notation By convention, each byte in a 32-bit IP address is represented by a string: decimal values for bytes, separated by a period IP address: 0x8002C2F2 = 128.2.194.242 Functions for converting between binary IP addresses and dotted decimal strings: inet_aton: dotted decimal string → IP address in network byte order inet_ntoa: IP address in network byte order → dotted decimal string “n” denotes network representation “a” denotes application representationCarnegie MellonIP Address Structure IP (V4) Address space divided into classes: Network ID written in form w.x.y.z/n n = number of bits in net id (yellow part above) E.g., CMU written as 128.2.0.0/16 Which class is that? Unrouted (private) IP addresses: 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 Nowadays: CIDR (Classless interdomain routing)Class AClass BClass CClass DClass E0 1 2 3 8 16 24 310Net ID Host IDHost IDHost IDNet IDNet IDMulticast addressReserved for experiments1 01 011 1 011 1 11Carnegie MellonInternet Domain Names.net .edu .gov .comcmu berkeleymitcs ecekittyhawk128.2.194.242cmclunnamed rootpdlimperial128.2.189.40 amazonwww208.216.181.15First-level domain namesSecond-level domain namesThird-level domain namesCarnegie MellonDomain Naming System (DNS) The Internet maintains a mapping between IP addresses and domain names in a huge worldwide distributed DNS database Conceptually, programmers can view the DNS database as a collection of millions of host entry structures: Functions for retrieving host entries from DNS: gethostbyname: query key is a DNS domain name gethostbyaddr: query key is an IP address/* DNS host entry structure */ struct hostent { char *h_name; /* official domain name of host */ char **h_aliases; /* null-terminated array of domain names */ int h_addrtype; /* host address type (AF_INET) */ int h_length; /* length of an address, in bytes */ char **h_addr_list; /* null-terminated array of in_addr structs */ };Carnegie MellonProperties of DNS Host Entries Each host entry is an equivalence class of domain names and IP addresses Each host has a locally defined domain name localhostwhich always maps to the loopback address 127.0.0.1 Different kinds of mappings are possible: Simple case: one-to-one mapping between domain name and IP address: kittyhawk.cmcl.cs.cmu.edu maps to 128.2.194.242 Multiple domain names mapped to the same IP address: eecs.mit.edu and cs.mit.edu both map to 18.62.1.6 Multiple domain names mapped to multiple IP addresses: aol.com and www.aol.com map to multiple IP addresses Some valid domain names don’t map to any IP address: for example: cmcl.cs.cmu.eduCarnegie MellonA Program That Queries DNSint main(int argc, char **argv) { /* argv[1] is a domain name */char **pp; /* or dotted decimal IP addr */struct in_addr addr;struct hostent *hostp;if (inet_aton(argv[1], &addr) != 0)hostp = Gethostbyaddr((const char *)&addr, sizeof(addr), AF_INET);elsehostp = Gethostbyname(argv[1]);printf("official hostname: %s\n", hostp->h_name);for (pp = hostp->h_aliases; *pp != NULL; pp++)printf("alias: %s\n", *pp);for (pp = hostp->h_addr_list; *pp != NULL; pp++) {addr.s_addr = ((struct in_addr *)*pp)->s_addr;printf("address: %s\n", inet_ntoa(addr));}}Carnegie MellonQuerying DNS from the Command Line Domain Information Groper (dig) provides a scriptable command line interface to DNSlinux> dig +short kittyhawk.cmcl.cs.cmu.edu 128.2.194.242 linux> dig +short -x 128.2.194.242 KITTYHAWK.CMCL.CS.CMU.EDU. linux> dig +short aol.com 205.188.145.215 205.188.160.121 64.12.149.24 64.12.187.25 linux> dig +short -x
View Full Document