CSE 461: Introduction to Computer-Communication Networks, Winter 2009
  CSE Home   About Us   Search   Contact Info 
 
Course Home
 Home
Administation
 Overview
 Using course email
 Email archive
 Anonymous feedback
 View feedback
 
Assignment Utilities
 Homework Turnin
 Assignment Wiki
 Gradebook
 
Most Everything
 Schedule
    Homework 4
Out: Wednesday February 18
Due: Wednesday February 25, 11:59PM
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/09wi/jstun-0.7.1.jar
        The log file will be created as logging.txt.

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

    Feb 16, 2009 10:33:04 AM de.javawi.jstun.test.DiscoveryTest test1
    FINER: Test 1: Binding Request sent.
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.header.MessageHeader parseHeader
    FINER: Binding Response received.
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.attribute.MappedAddress parse
    FINER: Message Attribute: Mapped Address parsed: Address 72.244.204.235, Port 52598.
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.attribute.SourceAddress parse
    FINER: Message Attribute: Source Address parsed: Address 81.169.175.165, Port 3478.
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.attribute.ChangedAddress parse
    FINER: Message Attribute: Changed Address parsed: Address 85.214.94.119, Port 3479.
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.test.DiscoveryTest test1
    
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:05 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:06 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:06 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:07 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:07 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:09 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:09 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:10 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:10 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:12 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:12 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:14 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:14 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Binding Request sent.
    Feb 16, 2009 10:33:15 AM de.javawi.jstun.test.DiscoveryTest test2
    FINER: Test 2: Socket timeout while receiving the response. Maximum retry limit exceed. Give up.
    Feb 16, 2009 10:33:15 AM de.javawi.jstun.test.DiscoveryTest test1Redo
    FINER: Test 1 redo with changed address: Binding Request sent.
    Feb 16, 2009 10:33:15 AM de.javawi.jstun.header.MessageHeader parseHeader
    FINER: Binding Response received.
    Feb 16, 2009 10:33:15 AM de.javawi.jstun.attribute.MappedAddress parse
    FINER: Message Attribute: Mapped Address parsed: Address 72.244.204.235, Port 52598.
    Feb 16, 2009 10:33:15 AM de.javawi.jstun.attribute.SourceAddress parse
    FINER: Message Attribute: Source Address parsed: Address 85.214.94.119, Port 3479.
    Feb 16, 2009 10:33:15 AM de.javawi.jstun.attribute.ChangedAddress parse
    FINER: Message Attribute: Changed Address parsed: Address 81.169.175.165, Port 3478.
    Feb 16, 2009 10:33:15 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:16 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:16 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:16 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:16 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:18 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:18 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:19 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:19 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:21 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:21 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:23 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:23 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:24 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Socket timeout while receiving the response.
    Feb 16, 2009 10:33:24 AM de.javawi.jstun.test.DiscoveryTest test3
    FINER: Test 3: Binding Request sent.
    Feb 16, 2009 10:33:26 AM 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.

  2. A NAT must eventually remove mappings from public (external) ports to private network addresses (the IP and port on the private side of the NAT). One way to do this is by timeout.

    Consider the timeout-based approach. How would it work? What would be good about it? What would be bad?

  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 guaranteed to get the same IP address every time it boots.

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

    (Note: most, perhaps all, CSE machines are operated this way.)


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]