CSE/EE 461: Introduction to Computer-Communication Networks, Autumn 2007
  CSE Home   About Us   Search   Contact Info 
 
Course Home
 Home
Administation
 Overview
 Using course email
 Email archive
 Anonymous feedback
 View feedback
 Homework Turnin
 
Most Everything
 Schedule
 
Information
 UW/ACM Tutorials
    Homework 5
Out: Wednesday October 24
Due: Monday October 29
Turnin: Online

  1. You might reasonably wonder how you can be expected to answer this question. It shouldn't involve any programming, or any reading of code. These resources might be useful, though:

    • The Wikipedia STUN entry has an overview of STUN, and links to more detailed information, if needed
    • Most usefully, it has a jumbo colored flowchart
    • You can obtain jstun and run it yourself. Trying that on a home machine might be interesting.
      • If you want to run it on attu, say:
        $ java -jar /cse/courses/cse461/07au/jstun-0.6.1.jar
        The log file will be created as logging.txt.

    Here is a (slightly edited) trace from a jstun run.

    Oct 23, 2007 4:12:01 PM de.javawi.jstun.test.DiscoveryTest test1
    FINER: Test 1: Binding Request sent.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.header.MessageHeader parseHeader
    FINER: Binding Response received.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.attribute.MappedAddress parse
    FINER: Message Attribute: Mapped Address parsed: Address 204.127.195.15, Port 64786.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.attribute.SourceAddress parse
    FINER: Message Attribute: Source Address parsed: Address 64.69.76.23, Port 3478.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.attribute.ChangedAddress parse
    FINER: Message Attribute: Changed Address parsed: Address 64.69.76.24, Port 3479.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.attribute.MessageAttribute parseCommonHeader
    CONFIG: MessageAttribute with type 32800 unkown.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.attribute.MessageAttribute parseCommonHeader
    CONFIG: MessageAttribute with type 32802 unkown.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:01 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:02 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:02 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:04 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:04 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:05 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:05 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:07 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:07 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:08 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:08 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:10 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:10 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response. Maximum retry limit exceed. Give up.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.test.DiscoveryTest test1Redo
    FINER: Test 1 redo with changed address: Binding Request sent.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.header.MessageHeader parseHeader
    FINER: Binding Response received.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.attribute.MappedAddress parse
    FINER: Message Attribute: Mapped Address parsed: Address 204.127.195.15, Port 64786.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.attribute.SourceAddress parse
    FINER: Message Attribute: Source Address parsed: Address 64.69.76.24, Port 3479.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.attribute.ChangedAddress parse
    FINER: Message Attribute: Changed Address parsed: Address 64.69.76.23, Port 3478.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.attribute.MessageAttribute parseCommonHeader
    CONFIG: MessageAttribute with type 32800 unkown.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.attribute.MessageAttribute parseCommonHeader
    CONFIG: MessageAttribute with type 32802 unkown.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:12 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:13 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:13 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:14 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:14 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:16 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:16 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:18 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:18 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:19 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:19 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:21 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Oct 23, 2007 4:12:21 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Oct 23, 2007 4:12:22 PM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response. Maximum retry limit exceed. Give up.
    
    • What kind of NAT'ing, if any, is there between the host on which this run was made and the Internet? Very briefly explain.
    • Based on the kind of NAT, does it appear possible for this host to communicate directly with another NAT'ed host (on a different network)? Very briefly explain.
    • Optional bonus question: where (physically) do you think the STUN server that was used might be? (Hint: nslookup, whois.) (Another hint: not so fast...)

  2. Consider building an Internet-sized network using (just) bridges and the spanning tree algorithm.
    • How does the total number of hosts on the (spanned) network limit scalability? (Give a short but specific answer.)
    • How does the rate at which hosts come online and go offline limit scalability?
    • How does maximal latency in the network limit scalability?
    • How does the number of ISPs that exist in the world limit scalability?
    • How does the desire to make efficient use of links limit scalability?

  3. The man on the street "knows" that there are two kinds of IP addresses, static and dynamic, and thinks that if a machine has a dynamic address it may change from time to time (while a static one will not). In fact, addresses assigned dynamically, though DHCP, may not change - DHCP can be set up so that a machine is guaranteedd to get the same IP address every time it boots.

    Why would you want to (a) have the same address every time the machine is booted, but (b) at the same time want to assign the address dynamically (i.e., using DHCP)?


Computer Science & Engineering
University of Washington
Box 352350
Seattle, WA  98195-2350
(206) 543-1695 voice, (206) 543-2969 FAX
[comments to zahorjan at cs.washington.edu]