Internetworking Topics Topics Client-server programming model Networks Internetworks Global IP Internet IP addresses Domain names Connections CS 105 “Tour of the Black Holes of Computing”
Dec 26, 2015
InternetworkingInternetworking
TopicsTopics Client-server programming model Networks Internetworks Global IP Internet
IP addressesDomain namesConnections
CS 105“Tour of the Black Holes of Computing”
– 2 –CS 105
Computer NetworksComputer Networks
A network is a hierarchical system of boxes and A network is a hierarchical system of boxes and “wires” organized by geographical proximity“wires” organized by geographical proximity LAN (local area network) spans building or campus
Ethernet802.11 (wireless)
WAN (wide-area network) spans country or worldDifferent, usually faster technology
An An internetworkinternetwork ( (internetinternet) ) is an interconnected set of is an interconnected set of networksnetworks Global IP Internet (uppercase “I”) is most famous example of
an internet (lowercase “i”)
– 9 –CS 105
Transferring Data via an internetTransferring Data via an internet
protocolsoftware
client
LAN1adapter
Host A
data
data PH FH1
data PH
data PH FH2
LAN1 LAN2
data
data PH data PH FH2
(1)
(2)
(3)
(4) (5)
(6)
(7)
(8)
internet packet
LAN2 frame
protocolsoftware
LAN1adapter
LAN2adapter
Router
FH1
data PH
protocolsoftware
server
LAN2adapter
Host B
Frame
– 11 –CS 105
Global IP InternetGlobal IP Internet
Most famous example of an internetMost famous example of an internet
Based on TCP/IP protocol familyBased on TCP/IP protocol family IP (Internet protocol) :
Provides basic naming scheme and unreliable delivery capability of packets (datagrams) from host to host
UDP (Unreliable Datagram Protocol)Uses IP to provide unreliable datagram delivery from process to
process TCP (Transmission Control Protocol)
Uses IP to provide reliable byte streams from process to process over connections
…and several more
Accessed via mix of Unix file I/O and functions from the Accessed via mix of Unix file I/O and functions from the sockets interfacesockets interface
– 13 –CS 105
Programmer’s View of InternetProgrammer’s View of Internet
1. Hosts are mapped to a set of 32-bit 1. Hosts are mapped to a set of 32-bit IP(v4) addressesIP(v4) addresses 134.173.42.100 is Knuth Class structure: A, B, C, now CIDR
2. IP addresses are mapped to set of identifiers called 2. IP addresses are mapped to set of identifiers called Internet Internet domain namesdomain names 134.173.42.2 is mapped to www.cs.hmc.edu 128.2.203.164 is mapped to www.cs.cmu.edu Mapping is many-to-many
3. Process on one Internet host can communicate with 3. Process on one Internet host can communicate with process on another via a process on another via a connectionconnection—IP Address, —IP Address, Port NumberPort Number
– 14 –CS 105
1. IP (v4) Addresses1. IP (v4) Addresses
32-bit IP addresses are stored in 32-bit IP addresses are stored in IP address structIP address struct Always stored in memory in network byte order (big-endian) True in general for any integer transferred in packet header
from one machine to another.E.g., port number used to identify Internet connection
/* Internet address structure */struct in_addr { unsigned int s_addr; /* network byte order (big-endian) */};
Handy network byte-order conversion functions (no-ops on some machines):
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 order
– 15 –CS 105
Dotted-Decimal NotationDotted-Decimal Notation
By convention, each byte in 32-bit IP address is By convention, each byte in 32-bit IP address is represented by its decimal value and separated by represented by its decimal value and separated by periodperiod
IP address 0x8002C2F2 = 128.2.194.242 IPv6 addresses uglier: 2001:1878:301:902:218:8bff:fef9:a407
Functions for converting between binary IP addresses Functions for converting between binary IP addresses and dotted decimal strings:and dotted decimal strings: inet_pton: converts dotted-decimal string to IP address in
network byte order inet_ntop: converts IP address in network byte order to its
corresponding dotted-decimal string “n” denotes network representation; “p” denotes printable
representation
– 16 –CS 105
2. Internet Domain Names2. Internet Domain Names
mil edu gov com
hmc berkeleymit
cs math
mike1134.173.41.151
unnamed root
Knuth134.173.42.100
amazon
www208.216.181.15
Top-level domain names
Second-level domain names
Third-level domain names
– 17 –CS 105
Domain Naming System (DNS)Domain Naming System (DNS)Internet tracks mapping between IP addresses and Internet tracks mapping between IP addresses and
domain names in worldwide many-to-many distributed domain names in worldwide many-to-many distributed database called database called DNSDNS.. Conceptually, programmers can view DNS database as collection
of millions of address information structures:
Functions for retrieving host entries from DNS:Functions for retrieving host entries from DNS: getaddrinfo: query key is DNS domain name getnameinfo: query key is IP address (V4 or V6)
/* Address information structure (DNS only has + entries) */ struct addrinfo {
int ai_flags; /* Various options */int ai_family; /* + AF_INET or AF_INET6 */int ai_socktype; /* Preferred socket type */int ai_protocol; /* Preferred protocol */size_t ai_addrlen; /* Length of address */struct sockaddr *ai_addr; /* + Encoded IP address */char *ai_canonname; /* + Canonical host name */struct addrinfo *ai_next; /* Link to next answer */
};
– 18 –CS 105
Properties of DNS Host EntriesProperties of DNS Host Entries
Each host entry is equivalence class of domain names Each host entry is equivalence class of domain names and IP addressesand IP addresses
Each host has a locally defined domain name Each host has a locally defined domain name localhostlocalhost, , which always maps to which always maps to loopback addressloopback address 127.0.0.1127.0.0.1
Different kinds of mappings are possible:Different kinds of mappings are possible: Simple case: 1-1 mapping between domain name and IP addr:
www.cs.hmc.edu maps to 134.173.42.2
Multiple domain names mapped to the same IP address:cs.hmc.edu and knuth.cs.hmc.edu both map to 134.173.42.100
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: research.cs.hmc.edu
– 19 –CS 105
A Program That Queries DNSA Program That Queries DNS
int main(int argc, char **argv) { /* argv[1] is a domain name */ struct addrinfo hints, *host, *firsthost = NULL; struct sockaddr_in *addr; char buf[80];
memset(&hints, 0, sizeof hints); hints.ai_flags = AI_CANONNAME; hints.ai_family = AF_UNSPEC; /* Or AF_INET or AF_INET6 */ if (getaddrinfo(argv[1], NULL, &hints, &firsthost) != 0)
exit(1);
printf("official hostname: %s\n", firsthost->ai_canonname); for (host = firsthost; host != NULL; host = host->ai_next) {
addr = (struct sockaddr_in *)host->ai_addr;printf("address: %s\n", inet_ntop(addr->sin_family, &addr->sin_addr, buf, sizeof buf));
} exit(0);}