Slide 1Last Time: Client-Server TransactionLast Time: Logical Structure of an internetLast Time: internet ProtocolTransferring Data Over an internetTodayA Programmer’s View of the InternetIP AddressesDotted Decimal NotationDotted Decimal NotationIP Address StructureInternet Domain NamesDomain Naming System (DNS)Properties of DNS Host EntriesA Program That Queries DNSQuerying DNS from the Command LineInternet ConnectionsPutting it all Together: Anatomy of an Internet ConnectionClientsUsing Ports to Identify ServicesServersServer ExamplesTodaySockets InterfaceSocketsOverview of the Sockets InterfaceSocket Address StructuresSocket Address StructuresExample: Echo Client and ServerEcho Client Main RoutineOverview of the Sockets InterfaceEcho Client: open_clientfdEcho Client: open_clientfd (socket)Echo Client: open_clientfd (gethostbyname)A Careful Look at bcopy ArgumentsEcho Client: open_clientfd (connect)Echo Server: Main RoutineOverview of the Sockets InterfaceEcho Server: open_listenfdEcho Server: open_listenfd (cont.)Echo Server: open_listenfd (socket)Echo Server: open_listenfd (setsockopt)Echo Server: open_listenfd (initialize socket address)Echo Server: open_listenfd (bind)Echo Server: open_listenfd (listen)Echo Server: Main LoopOverview of the Sockets InterfaceEcho Server: acceptEcho Server: accept IllustratedConnected vs. Listening DescriptorsEcho Server: Identifying the ClientEcho Server: echoTesting Servers Using telnetTesting the Echo Server With telnetPacket SniffingFor More InformationCarnegie MellonIntroduction to Computer Systems15-213/18-243, spring 200923rd Lecture, 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 ProtocolProvides a naming schemeAn internet protocol defines a uniform format for host addressesEach host (and router) is assigned at least one of these internet addresses that uniquely identifies itProvides a delivery mechanismAn internet protocol defines a standard transfer unit (packet)Packet consists of header and payloadHeader: contains info such as packet size, source and destination addressesPayload: 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 MellonTodayProgrammer’s view of the internetSockets interfaceCarnegie MellonA Programmer’s View of the InternetHosts are mapped to a set of 32-bit IP addresses128.2.203.179The set of IP addresses is mapped to a set of identifiers called Internet domain names128.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 Addresses32-bit IP addresses are stored in an IP address structIP 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 NotationBy convention, each byte in a 32-bit IP address is represented by a string: decimal values for bytes, separated by a periodIP address: 0x8002C2F2 = 128.2.194.242Blackboard?Carnegie MellonDotted Decimal NotationBy convention, each byte in a 32-bit IP address is represented by a string: decimal values for bytes, separated by a periodIP address: 0x8002C2F2 = 128.2.194.242Functions for converting between binary IP addresses and dotted decimal strings:inet_aton: dotted decimal string → IP address in network byte orderinet_ntoa: IP address in network byte order → dotted decimal string“n” denotes network representation“a” denotes application representationCarnegie MellonIP Address StructureIP (V4) Address space divided into classes:Network ID written in form w.x.y.z/nn = number of bits in net id (yellow part above)E.g., CMU written as 128.2.0.0/16Which class is that?Unrouted (private) IP addresses:10.0.0.0/8 172.16.0.0/12 192.168.0.0/16Nowadays: 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 databaseConceptually, 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 namegethostbyaddr: 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 EntriesEach host entry is an equivalence class of domain names and IP
View Full Document