Network Programming
Spring 2001


Test #2
Topic List


Topics and ReadingsWhat to expect
Bridge and Router Software
  • Understand (roughly) what the software in a bridge and router does.
  • Understand the difference between link-state and distance metrics for routing.
  • Understand that it is possible to have a connection-oriented Network Layer (X.25).
  • Network Service Case Studies
    • Email: SMTP,POP
    • FTP
    • LDAP
    • Kerberos
  • Understand the terminology of Internet Email (MTA, User Agent), and the basic service model (how email gets from your UA to someone else's UA).
  • Understand SMTP and FTP protocols enough to recognize them or provide a rough description.
  • Understand the 2-connection scheme used by FTP to transfer files.
  • Know what a directory service is (LDAP).
  • Understand the to use LDAP you don't need to know the details of the protocol (API is provided).
  • Understand the general concepts used by Kerberos to support secure client-server even when the wire/workstation is not secure.
  • Security & Encryption
    • The idea of "trusted hosts".
    • Secret Key Cryptography.
    • Public Key Cryptography.
  • Understand the basic ideas of secret-key and public-key cryptography.
  • Understand how public-key cryptography can be used to send a message that only the intended receiver can read.
  • Understand how public-key cryptography can be used to send a message that only the sender could generate (digital signature).
  • inetd (superserver).
  • Understand the general idea of writing one server that can watch lots of ports for incoming requests, automatically start up servers on demand, and hand off the requests to the actual servers.
  • Threads
    • Difference between a thread and a process
    • Mutual Exclusion
    • Condition Variables
  • Know the difference between a thread and a process!
  • Know what is unique for each thread and what is shared by all threads.
  • Understand the need for mutual exclusion, and a rough idea of how the threads library supports it (mutex variables).
  • Understand the need for condition variables (when might you use one?)
  • Client Server
    • Concurrency
      • Forking
      • Preforking
      • Threading
      • Prethreading
    • Message-oriented vs. connection-oriented.
  • Be able to provide pseudo code for any of the 4 concurrency mechanisms implemented in HW5.
  • Understand the trade-offs involved in selecting a transport layer when designing a new network service.
  • Understand the trade-offs involved in deciding on support for concurrency (vs. iterative servers).
  • XDR & RPC
    • XDR Filters.
    • RPC Protocol Definition Files.
    • RPC Call Semantics.
  • Understand what XDR is (what service XDR provides).
  • Be able to write a simple XDR filter (pseudo-code).
  • Be able to write an RPC protocol definition file.
  • Understand what "call semantics" means.
  • Be able to describe a network application as a list of remote procedures/programs.
  • CORBA
    • The ORB
    • Dynamic vs. Static invocation
    • IDL
    • Interface Repository
    • Object Services
  • Know that CORBA is "Common Object Request Broker Architecture".
  • Know what an ORB is (rough idea is good enough).
  • Understand the idea of IDL and storing IDL in an Interface Repository to support dynamic invocation.
  • Know the difference beteen dynamic and static invocation.
  • Understand the notion that system services can be provided as CORBA objects, and that many of these object services are defined as part of the CORBA standard.
  • Be able to list/describe a couple of the obejct services we discussed in class.
  • The test will have 2 parts:

    1. 50% of the test will be short questions about the topics listed above. There may be some multiple choice/true-false.
    2. 50% of the test will involve designing a network service. Given a functional description of a network service you will need to address a number of design issues, such as:

    Sample Questions (part 1):

    Sample Network Services to design (part 2):