Understanding Networks: Week 1

See also Nick Yulman's excellent notes from Fall 2011

Network Topologies

Definition of “network?":

  • nodes connected by links
  • networks tend to exist to distribute something within the network
  • Example: power network (e.g. “grid”)
    • some networks exist in order to deal with things that are difficult to store
    • there is a concept of “stocks” and “flows”
    • in a well functioning dynamic network, there is a balance between stocks and flows
    • power networks are interesting because they must find ways to distribute power without storing it, because storing energy is difficult and dangerous
  • Ben: what do you call the “waste” of a network, e.g. the power lost by the energy grid? Tom: waste is a good term
  • all networks exist in a condition of vulnerability--all networks can be disrupted, all nodes within any network become vulnerable by their participation in the network
  • Tom: vulnerability is a condition, not a bug
  • networks do break

The big points:

  • distribution, how stocks flow
  • vulnerability, networks break
  • resilience: the ability to heal, in some way
  • protecting a network tends to limit the network’s operation
    • e.g. ping of death, ping flooding
    • ITS network policy limits access to some network tools like ICMP ping and traceroute

Network topologies show how the nodes are linked

  • a network of 3 nodes, with 3 links
  • a network of 5 nodes with 4 links
  • a network of 6 nodes with 5 links, in a star topology
    • this is a totally centralized network
  • a network of 5 nodes with 5 links, in a ring topology
    • e.g. token ring network, avoiding collisions by agreeing to have only node speaking at once
    • no matter the topology, good network nodes must work out how to listen, in order to avoid collisions where more than one node is communicating at the same time
  • a network of 5 nodes with 10 links, maximum hop distance of 1
    • this is a totally decentralized network
    • Tom, quoting Clay: "the trick is to practice Satanism so you know how to draw pentagrams"
    • one typical topology is several tightly connected networks that are sparsely connected to other tightly connected networks
    • there are special nodes, which you could call “hubs”
    • hub nodes have special vulnerabilities, sometimes mitigated by traffic management
    • the Internet is roughly organized like this, as a “distributed network” rather than a “decentralized network”
  • formula for link count of totally connected network: D = (N^2 - N) / 2
  • the greater a network’s link density, the greater its robustness

“Bus network”

  • e.g. Arduino SPI, USB
  • centralized controller, connected on a single communication line
  • communication is one at a time
  • typically, the controller node tends to provide a clock signal, and the controller sends data on the uptick of the clock signal, while the rest of the nodes send data on the downtick of the clock signal
  • bus networks tend to be synchronous rather than asynchronous

“Mesh” networks

  • e.g. ad hoc wifi networks
  • mesh networks tends to be protocols that assign addresses among cooperating nodes
    • e.g. DARPA’s smart minefield project that physically redistribute themselves when a mine is detonated or disabled
  • ITP should teach you how to gracefully interoperate between incompatible protocols
  • example of peer to peer networks
  • example of protocols layered on top of each other (e.g. HTTP is implemented on top of TCP/IP)

The “network metaphor” is one way to understand the world, but not the only one

  • other examples of useful metaphors are the Enlightenment era “universe as a clockworks” metaphor
  • question: difference between bus and decentralized network
    • e.g. I2C protocol
    • e.g. RGB LEDs in Adafruit’s Flora (like a LilyPad) allows control of multiple LEDs
    • e.g. SPI, serial peripheral interface, “synchronous serial”
  • difference between synchronous serial and asynchronous serial
    • synchronous: single clock
    • asynchronous: multiple clocks with a protocol defining agreement on baud rate, and agreement on who should be talking and who should be listening
    • e.g. hardware handshaking using CTS and RTS lines
    • e.g. software handshaking

OSI Model

  • pneumonic: "Please Do Not Throw Sausage Pizza Away," for "Physical Datalink Network Transport Session Presentation Application"
  • this is the OSI Model, AKA the “Reference Lie” (Clay’s term)
  • See http://en.wikipedia.org/wiki/OSI_model
  • Physical layer
    • e.g. Ethernet cables, wifi adapters
  • Datalink
    • e.g. Ethernet packets, addressing (MAC, media access control, addresses)
    • format of data to be transferred, possibly containing addressing, checksums, metadata, and data
  • Network
    • this is where an Internet network address is assigned
    • “IP address” is an address on the Internet
  • Transport
    • defines how we’re going to exchange data over our network as a whole
    • e.g. streaming media vs. email
    • in streaming media, loss of a small amount of data tends to not have a huge impact on the usability of the data
    • in email, loss of a small amount of data can have a much more significant impact on the usability of the data
    • UDP versus TCP
    • streaming media tends to use UDP, email tends to use TCP
    • TCP does error checking and can resend data if the data was corrupted or lost in transit
    • UDP just blasts the data across without regard to whether it was received or corrupted
    • there are many other transport protocols, e.g. ICMP which is used for the Ping protocol
  • Session
    • allows multiple kinds of data to be transmitted or received on a single IP address
    • e.g. you can SSH to a server and get web pages from the same server--how does the server know to send the SSH related data to your SSH client, but the HTTP data to your web browser?
  • Presentation
    • data format that is agreed on within a session or transport
    • e.g. ASCII
  • Application
    • e.g. HTTP, SMTP, POP, IMAP, SSH, FTP, SFTP
    • this is where you’ve been living within ITP so far

Sessions: HTTP Communication on the Command Line

Example: telnet directly to a web server, in Terminal (on Mac):

telnet tigoe.net 80
GET / HTTP/1.1
Host: tigoe.net

HTTP/1.1 200 OK
Date: Tue, 03 Sep 2013 21:48:37 GMT
Server: Apache
MS-Author-Via: DAV
Vary: Accept-Encoding
Content-Length: 1241
Content-Type: text/html



<html>

	<head>
		<meta http-equiv="content-type" content="text/html;charset=iso-8859-1">
		<title>Tom Igoe</title>
		<link rel="stylesheet" href="css/tomstyle.css" type="text/css">

		<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-1541944-1";
urchinTracker();
</script>

	</head>

	<body>
		<div align="right">
			<h2>
			<table border="0" cellpadding="0" cellspacing="10" width="594" align="center">
				<tr>
					<td colspan="4" valign="top">
						<div align="right">
							<h2>Tom Igoe</h2>
						</div>
					</td>
				</tr>
				<tr>
					<td valign="top">
							<div align="right">
							<span class="margin" align = "right">  
<P><A href="/pcomp/index.php">physical computing</A>
<P><A href="/consulting.php">consulting</A> 
<P><A href="/resume.php">r?sum?</A>
<P><A href="/projects.php">projects</A>
<P><A href="/photo/">images</A>
<P><A href="/blog/">blog</A>
</span>						</div>
						</td>
					<td align="left" valign="middle" colspan="2">
						<div align="right">
								<img src="img/sil8.jpg"><p>Disciplined self-indulgence
							&nbsp;</div>
					</td>
					<td></td>
				</tr>
			</table>
				</h2>
		</div>
	</body>

</html>
Connection closed by foreign host.

Sessions: Serial Communication on the Command Line

Example: serial communication on the command line (in Mac), connecting to the Arduino Yun, the Beaglebone, and the Pi

List of all serial devices:

ls /dev/tty.*

You can use screen to access those serial ports:

screen <device> <baud>
screen /dev/tty.udbmodem621 115200

From here you’ll see a Linux command line session.

In screen, control-A control-K will disconnect the serial session.

The Raspberry Pi requires a special serial cable to communicate with it over USB. Adafruit has a cable that you can use to wire the Pi serial pins to a USB cable.