Suppose you buy some appliance and bring it home. How will you plug it in GE, whirlpool, ...
Universal Business Adapter funny IBM ad about n-squared different adapters
Study question: suppose you want to start a gmail competitor. What do your potential customers need to install? Custom network system? No, just use standard tcp/ip. Custom browser software? No, just use http/html standard browser.
The previous LAN examples connect computers all on the same LAN. Now we will scale the problem up to send packets between any two computers on earth.
The worldwide Internet is built on the TCP/IP family of standards (Transmission Control Protocol / Internet Protocol) which solves the larger problem of sending packets between computers across the whole internet. These are free and open, vendor-neutral standards which is probably the reason they have been so incredibly successful.
Every computer on the internet has an "IP address" that identifies it (like a phone number). The IP address is 4 bytes, written between dots, like "188.8.131.52". The left part of the address encodes in part where that IP address is in the whole internet -- for example any 171.64.(anything) is part of Stanford (like the area code of a phone number). More specifically, in my part of the Gates building, all the IP addresses begin 171.64.64.XX varying only in that last byte.
Sandra Bullock: there's a blooper in the movie The Net where the IP address "23.75.345.200" is shown. This is not a valid address, since 345 is larger than the largest possible byte value which is 255.
The most common way for a computer to be "on the internet" is to establish a connection with a "router" which is already on the internet. The computer establishes a connection via, say, ethernet to communicate packets with the router. The router is "upstream" of the computer, connecting the computer to the whole internet. For example, the computer in my Stanford office has IP address 184.108.40.206, and it has a one-hop ethernet connection to its router upstream at 220.127.116.11, and this router handles packets for my computer. Often the router's IP address will end in .1, such as my router's 18.104.22.168. Typically the IP address of the computer and its router will look at the same on the left side, since they are in the same "neighborhood" of the internet.
Answer: Hop Hop Hop Hop Hop
Suppose my computer at 22.214.171.124 wants to send a packet to a computer at 126.96.36.199 somewhere out on the internet (actually that's the codingbat.com server I administer). The Internet is essentially made of a big web of routers talking to each other.
1. My computer prepares an IP packet which includes in particular From:/To: information as IP addresses, like this: (IP Packet From:188.8.131.52 To:184.108.40.206 data data data data).
2. My computer sends that IP packet to my upstream router, one hop, over ethernet. This is the "first hop" of the packet on its journey.
3. The 220.127.116.11 router looks at the To:/From: of the packet and forwards it to the next router, one hop closer to its ultimate destination. Essentially, the router has its own upstream router which is bigger and knows more about the layout of the internet. The packet is forwarded, one hop at a time, until it reaches its ultimate destination. Each router does not need to know the whole route to the destination; each router just needs to know which way to send the packet to get it one-hop closer to its destination. The routers look at the left part of the IP address to get the packet to the right neighborhood -- 173.255.x.x -- with the right part of the address -- x.x.219.70 -- coming into play only when the packet is near its ultimate destination.
The routing of a packet from your computer is like a capillary/artery system .. your computer is down at the capillary level, your packet gets forwarded up to larger and larger arteries, makes its way over to the right area, and then down to smaller and smaller capillaries again, finally arriving at its destination. The ultimate destination puts all the packets back together in the right order to recover the original image file or whatever. The routers at the ends have a trivial upstream/downstream configuration, so the next hop for a packet is pretty simple. More central "core" routers tend to have several possible outgoing connections, so they have a more complicated choice about which link to use for the next hop.
The routers, collectively, measure what networks are reachable over what links, and dynamically adjust what links to use for each packet. One simple metric would be to route packets the way that takes the fewest number of hops. In reality, the metrics used are more complex than this. The routing system resilient to router hardware failures, overloading of certain links due to normal traffic, and links going down. The path taken by an IP packet can change from minute to minute. The routers are another example of a distributed, collaborative system. The old joke is that the backhoe is the IP packet's natural predator in the wild, as construction will sometimes slice through an important data cable, suddenly breaking a link in use. The routers "route around" such damage automatically.
Note that my computer does not need to know the layout of the internet. My computer just needs to have a connection to its upstream router, and the router, and its upstream router etc., will handle the routing from there.
Very broadly speaking, most data you get or send on the Internet goes in packets which take more than 10 but less than 30 hops from origin to destination.
See opte.org Internet Maps
So what does it mean for a computer to be on the internet? Typically it means the computer has established a connection with a router. The commonly used DHCP standard (Dynamic Host Configuration Protocol), facilitates connecting to a router; establishing a temporary connection, and the router gives your computer an IP address to use temporarily. Typically DHCP is used when you connect to a Wi-Fi access point.
Experiment: bring up the networking control panel of your computer. It should show what IP address you are currently using and the IP address of your router. You will probably see some text mentioning that DHCP is being used.
"Ping" is an old and very simple internet utility. Your computer sends a "ping" packet to any computer on the internet, and the computer responds with a "ping" reply (not all computers respond to ping). In this way, you can check if the other computer is functioning and if the network path between you and it works. As a verb, "ping" has now entered regular English usage, meaning a quick check-in with someone.
Experiment: Most computers have a ping utility, or you can try "ping" on the command line. Try pinging www.google.com or nick2.stanford.edu (18.104.22.168, nick's desktop computer). Try pinging poland.pl ... much farther away from Stanford.
Here I run the "ping" program for a few addresses, see what it reports
$ ping www.google.com # I type in a command here PING www.l.google.com (22.214.171.124): 56 data bytes 64 bytes from 126.96.36.199: icmp_seq=0 ttl=53 time=8.219 ms 64 bytes from 188.8.131.52: icmp_seq=1 ttl=53 time=5.657 ms 64 bytes from 184.108.40.206: icmp_seq=2 ttl=53 time=5.825 ms ^C # Type ctrl-C to exit --- www.l.google.com ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 5.657/6.567/8.219/1.170 ms $ ping nick2.stanford.edu PING nick2.stanford.edu (220.127.116.11): 56 data bytes 64 bytes from 18.104.22.168: icmp_seq=0 ttl=63 time=1.019 ms 64 bytes from 22.214.171.124: icmp_seq=1 ttl=63 time=3.638 ms 64 bytes from 126.96.36.199: icmp_seq=2 ttl=63 time=3.566 ms ^C --- nick2.stanford.edu ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 1.019/2.741/3.638/1.218 ms
Traceroute is a program that will attempt to identify all the routers in between you and some other computer out on the internet - demonstrating the hop-hop-hop quality of the internet. Most computers have some sort of "traceroute" utility available if you want to try it yourself (not required). Some routers are visible to traceroute and some not, so it does not provide completely reliable output. However, it is a neat reflection of the hop-hop-hop quality of the internet. Here's an example traceroutes from my office:
$ traceroute -q 1 codingbat.com # I type in a command here traceroute to codingbat.com (188.8.131.52), 64 hops max, 52 byte packets 1 yoza-vlan70 (184.108.40.206) 2.039 ms 2 bbra-rtr-a (220.127.116.11) 0.932 ms 3 boundarya-rtr (172.20.4.2) 3.174 ms 4 dca-rtr (18.104.22.168) 27.085 ms 5 dc-svl-agg1--stanford-10ge.cenic.net (22.214.171.124) 2.485 ms 6 dc-oak-core1--svl-agg1-10ge.cenic.net (126.96.36.199) 3.262 ms 7 dc-paix-px1--oak-core1-ge.cenic.net (188.8.131.52) 4.046 ms 8 hurricane--paix-px1-ge.cenic.net (184.108.40.206) 14.252 ms 9 10gigabitethernet1-2.core1.fmt1.he.net (220.127.116.11) 9.117 ms 10 linode-llc.10gigabitethernet2-3.core1.fmt1.he.net (18.104.22.168) 4.975 ms 11 li229-70.members.linode.com (22.214.171.124) 4.761 ms $ traceroute -q 1 poland.pl traceroute to poland.pl (126.96.36.199), 64 hops max, 52 byte packets 1 yoza-vlan70 (188.8.131.52) 1.573 ms 2 bbra-rtr-a (184.108.40.206) 1.106 ms 3 boundarya-rtr (172.20.4.2) 32.970 ms 4 dca-rtr (220.127.116.11) 1.530 ms 5 dc-svl-agg1--stanford-10ge.cenic.net (18.104.22.168) 1.359 ms 6 dc-svl-core1--svl-agg1-10ge.cenic.net (22.214.171.124) 1.967 ms 7 dc-svl-isp1--svl-core1-10ge.cenic.net (126.96.36.199) 1.728 ms 8 xe-4-1-2.edge1.sanjose1.level3.net (188.8.131.52) 1.687 ms 9 vlan60.csw1.sanjose1.level3.net (184.108.40.206) 2.210 ms 10 ae-61-61.ebr1.sanjose1.level3.net (220.127.116.11) 1.637 ms 11 ae-2-2.ebr2.newyork1.level3.net (18.104.22.168) 70.263 ms 12 ae-72-72.csw2.newyork1.level3.net (22.214.171.124) 72.573 ms 13 ae-91-91.ebr1.newyork1.level3.net (126.96.36.199) 72.235 ms 14 ae-42-42.ebr2.london1.level3.net (188.8.131.52) 139.832 ms 15 ae-58-223.csw2.london1.level3.net (184.108.40.206) 146.678 ms 16 ae-21-52.car1.london1.level3.net (220.127.116.11) 172.864 ms 17 18.104.22.168 (22.214.171.124) 139.842 ms 18 ae1-0.ams-koo-score-1-re0.interoute.net (126.96.36.199) 169.460 ms 19 ae0-0.ams-koo-score-2-re0.interoute.net (188.8.131.52) 182.792 ms 20 ae1-0.ber-alb-score-1-re0.interoute.net (184.108.40.206) 168.766 ms 21 gi1-0.waw-002-access-1002.interoute.net (220.127.116.11) 168.403 ms 22 po6-0.waw-002-access-1001.interoute.net (18.104.22.168) 170.038 ms 23 22.214.171.124 (126.96.36.199) 168.413 ms 24 pkp-gw-ae0-100.core.nask.pl (188.8.131.52) 179.974 ms 25 pw-gw0-ae1-100.core.nask.pl (184.108.40.206) 168.538 ms 26 helm-at2-0-1.nask.waw.pl (220.127.116.11) 169.701 ms 27 18.104.22.168 (22.214.171.124) 169.830 ms
The numbers down the left side are the number of "hops" to that machine. The "ms" figures are the number of milliseconds (1 ms = 1 thousandth of a second) it took for the send/reply. Notice that as the hops get further away, it does roughly take more milliseconds. The first few hops are Stanford addresses, then the route goes over some provider, until it arrives at Linode, which is the company that provides the hardware where codingbat.com currently lives. Small mystery: it seems like the first hop should be 126.96.36.199 which is the first router from my office; apparently that router is invisible to traceroute.