Due: Thursday, May 8, 2014, 8 am (start of the final exam)

Problems:

  1. (30 points) Results of an interesting Internet mapping project our described at http://internetcensus2012.bitbucket.org/paper.html. Read the paper and answer the following questions:
    • How big was the Internet at the time the experiment was run? List the definitions of an "alive" node used in the paper.
    • What is the second most popular web server software? Why do you think this particular web server ranked so high?
    • List a few machines that they found on the CS subnet.
    • What are the address spaces marked by arrows bellow? Why they were not scanned? A live version of the map is available at the Internet Census 2012 project page.
  2. (30 points) Let's assume that I am a venture capitalist with money in my pocket dying to invest in a startup company that focusses on development of an application that takes advantage of the ability to get much more precise indoor location of a smartphone (Apple's iBeacons are examples of such a technology) than what the current smartphones can achieve using traditional Assisted GPS. We are riding in an elevator and you have exactly 60 seconds to tell me about your product/service. The goal of this homework is to come up with an original idea that addresses a real need. Describe it in 10 lines or less. Be creative, think about everyday tasks, look at the established products and come up with an alternative. Or do something completely new. Try to think outside of the standard application categories. Also, you should consider financial viability of your idea.

Program:

  1. (40 points) There are many websites that allow you to determine your public IP address, i.e., the address that a server on the Internet sees as the source address of your packets. If you are connected to the Internet directly, it is the IP of your network interface. If you are behind a NAT device, it is the IP address of it's "WAN" interface. Try searching for "what is my IP" to see many examples of such sites. The goal of this assignment is to write a simple server, placed on the public Internet, e.g., on Agate, that provides this functionality.

    Option 1: write a pair of UDP-based applications in the programming language of your choice: A client that sends a packet to a server and waits for a response that contains the public IP address of the client. The received IP address is then displayed for the user and client exits. The server waits for a packet from a client to arrive, extracts sender's IP address, and sends it back to the sender as the payload of the message.

    The user interface is up to you and it can be very simple:

    [rbartos@agate ~]$ python a5-server.py 54321
    Received request from IP: 132.177.4.30
    ... ^C
    [rbartos@agate ~]$
    
    [rbartos@lava ~]$ python a5-client.py agate.cs.unh.edu 54321
    Your IP address is: 132.177.4.30
    [rbartos@lava ~]$ 
    

    Option 2: Implement the server functionality in node.js and use standard browser as the client. If you chose this option, you have to perform a reverse DNS lookup to find the hostname of the client:

    You can pick either option regardless of your major.

Submission instructions:

Follow the standard assignment submission instructions.