Fill Out the Class Survey

This survey gives me a sense of what you know, and what you hope to get out of the class.

Set Up A Host

Set up a Linux host. You can do this on a Raspberry Pi or you can do it on Digital Ocean, Heroku, AWS, or on any service you prefer. It doesn’t need to have lots of services or software, but it has to be a host you can start and stop yourself (in other words, don’t use a shared host). It should also be a host that you can keep running for several days at a time. Make sure it has a firewall in place, and note the IP address. You’ll use this throughout the semester for some of the other projects.Early on, we’ll all use our hosts to run some simple command line exercises and to pass some messages around the class.

If you’ve never done this before, I recommend taking the simplest route by setting up a Digital Ocean droplet (their tutorials are excellent and their droplet creation interface is easy) or a Raspberry Pi (we have these available for checkout in the shop). Even a Pi Zero will do.

Traceroute

Traceroute at least three of the sites you regularly visit: Facebook, gmail, bank, school, etc. Do it from all of the locations you regularly connect from. Save the trace in a file, and make a map of the routes, indicating the network providers that show up every time. Identify who the major tier 1 providers are in your life. Identify the networks your traffic crosses in the course of your daily life. Figure out whose hands the data about your life goes through on a regular basis. Look for patterns from your network-browsing habits through analysis and graphing of your network traces.

Feel free to obfuscate the endpoints if you don’t want us to know what sites you visit. Write a summary of your work and findings on your blog. We’ll compare notes on each others traces in class.

Pick at least one protocol that you find in the course of your traces and research it. Provide a paragraph or two definition for the networks site glossary. Explain for a non-technical audience; in particular, explain how it might be part of their everyday life whether they know it or not. Provide sources for your information, with links where possible.

Packet Analysis

Capture and analyze traffic on your home network while going about your usual network activities. Present your results in summary form, using graphical analysis where appropriate. How much of your network traffic is inbound? How much is outbound?  What portion of it is HTTP traffic? How many devices are active on your network? What are their relative levels of activities? What sites are the most common sources and destinations for your traffic? Write a summary of your work and findings on your blog. We’ll compare notes in class.

Firewall

Run your Linux host for several days, with a firewall in place and a public IP address. Make a table of all the IP addresses that attempt to connect to your host. Compile information about them. Where are they located? What organizations are they associated with, at all? What service providers are providing their IP addresses?

RESTful Control Surface Design

Over the next three classes, you’ll design RESTful web interface to a physical device. Your device can either be a controller, that sends data to the web interface (like dweet.io), or an actuator that is controlled by the web interface (like the Philips Hue hub and lights). Work in pairs on this assignment.

You’ll work with another group on this.

Week 1: Decide on your application, then describe and sketch the control surface and the specify the REST interface. Describe your application and present your REST API. Don’t build the project, just describe it and its functions. Write a blog post detailing this description. You’ll be assigned someone else’s specification to build this week.

Week 2:  Specify the RESTful API for your project. Make a basic test rig for it. This can be a simple HTML page or a series of CURL calls. Next week you will use this to test the other team’s implementation of your spec.

Week 3:  Build the minimal part of the physical prototype for the system you were assigned from another group. You don’t need to be finished with all of it, you just need the minimum parts that will allow them to test how you’ve implemented the API.  This might mean building the server sketch that responds to the API calls, and prints out that they came in, or building the client that makes the API calls in response to a keyboard or pushbutton.

Week 4: Finalize the physical build of your project. Write a blog post on the process and we’ll compare notes in class. 

Your prototype does not have to be fully realized, but it should have basic inputs or outputs to stand in for any complex inputs. For example, if the other group designed a browser-based dashboard for a car, you don’t have to build a car, but a simple microcontroller project that accepts the car controls and reacts would be appropriate.

You can program everything yourself, or you can use an existing web service like dweet, as long as you explain the service fully in your documentation. You must respond to the RESTful messages specified by the other group.

Explanatory Article

Write an explanatory article about any concept we cover in this class, for general readership, and post it as a page on itp.nyu.edu/networks. The purpose of these articles is to help your classmates and future classmates to understand network concepts, whether they take this class or not.

You may choose to define and explain several related terms in the glossary section of the site, or you may choose to write a separate explanatory article . Check with me when you have decided what concept to cover so I can approve it before you start.

Your article should be 750 – 1500 words, and include links to and citations of any material from which you learn. Use primary sources when possible, and remember that Wikipedia is not a primary source. Explain in your own words; do not simply quote your sources. Relate the concept to other practices here at ITP.

You will have a first draft due week 9 and a final draft due week 13. You’ll then be assigned to read someone else’s draft and give them feedback. We will discuss everyone’s articles in week 14. Post the final on itp.nyu.edu/networks. You’ll have access rights to edit the site.

You can find some examples to learn from in previous semesters, including:

Ziv Schneider’s presentation on the Domain Name System

Ben Gullard’s video on Multiplexing

Sabrina Osmany’s paper on Fiber to the Home

Aaron Arntz’ explanation of ifconfig