NetProg Spring 2004 Test #1 Topics


Test #1 will be in class on Friday, March 5th (for local students). The test will be closed book/notes, no calculators are allowed (or needed). See Dave if you have a problem with the schedule (I realize that Friday before spring break may not be possible for everyone...).

Remote Students: You can take the test any time before March 13th (whatever day is OK with your site coordinator/proctor is fine with us).

Topics and ReadingsWhat to expect
  • Networking and the OSI Reference Model (lecture notes)
    • Lan/Wan
    • Multiaccess vs. Point-to-point networks
    • OSI Reference Model
      • Physical Layer
      • Datalink Layer
      • Network Layer
      • Transport Layer
    • Network Components
      • Repeater
      • Bridge
      • Router
      • Gateway
    • Modes of Service
      • Connection-Oriented vs. Connectionless Service
      • Sequencing
      • Error Control
      • Flow Control
      • Stream vs. Message Oriented service
      • End-to-end vs. Hop-by-hop
    • Broadcasting
  • know what the datalink, network and transport layers are responsible for.
  • Know what a bridge/router/gateway is.
  • Understand the difference between connection-oriented and connectionless services (network and transport services).
  • Know what a broadcast is.
  • TCP/IP (lecture notes, Chapter 2)
    • IP
      • IP Addresses
      • ARP/RARP
      • ICMP
    • UDP
    • TCP
      • 3-way handshake
      • Termination
      • TCP Segments
  • Know where IP, TCP and UDP are in the OSI reference model.
  • Know what an IP address is.
  • Know about the TCP 3-way handshake that initiates a connection.
  • Know about termination of a TCP connection (FINs).
  • The role of ARP (what it does, why it is necessary).
  • Sockets Programming (lecture notes, Chapter 3.1-3.6, 3.9, Chapter 4, 8.1-8.11,8.14)
    • Generic Network API
    • socket()
    • struct sockaddr_in
    • Network Byte Order
    • bind()
    • TCP Programming
      • listen()
      • accept()
      • connect()
      • using read() and write() with TCP sockets
    • UDP Programming
      • sendto()
      • recvfrom()
      • using connect() with UDP sockets
  • Understand the sockets is a generic network API.
  • be familiar with the basic socket functions/system calls.
  • be familiar with a sockaddr and sockaddr_in
  • understand network byte order (when it is used and why).
  • differences between TCP and UDP programming (mechanics)
  • Reading from a TCP stream (what can you expect?).
  • Be able to understand or write a little code that uses sockets.
  • Internet Protocol Case Studies:
    • TELNET protocol (RFC 854)
      • Network Virtual Terminal - layered model.
      • Data and Control over same connection
      • negotiated options
    • HTTP (RFC 1945)
      • requests
      • replies
      • headers
    • Domain Name System (lecture notes, Chapter 11.1-11.4, RFC 1034)
      • Hostnames
      • Domains
      • DNS Clients & Servers
      • Recursion
    • TFTP (RFC 1350)
      • Simple connectionless protocol
      • Sorcerer's Apprentice Syndrome
  • Basic understanding of all 4 services.
  • Understand HTTP and TFTP protocols
  • TELNET - understand how data and control can be intermixed in the same stream.
  • TFTP - sorcerer's apprentice syndrome.
  • I/O Multiplexing (lecture notes, Chapter 6.1, 6.3)
    • Blocking vs. Nonblocking I/O
    • select()
  • What select() does, when this is useful and how to use select().
  • Buffer Overflow (lecture notes and sample code)
    • What it means to overflow a buffer, and why this is bad.
    • Why potential buffer overflow is not acceptable in network programs
    • How to avoid the problem.
  • Be able to describe the problem at a high level (you don't need to understand all the details).
  • Be able to identify code that has a potential buffer overflow!
  • Web Programming (lecture notes and examples)
    • Custom Server
    • Server Side Includes
    • CGI Programming
      • Request types (GET, POST)
      • HTML forms
      • how requests get forwarded to CGI programs
      • how response is sent back to client
  • What Server Side Includes means.
  • CGI (what it is).
  • The relationship between an HTML form and a CGI program
  • Programming
    • Sockets Programming in C
  • Be able to write a small sockets program.
    • No need to memorize socket/system call parameters, but you should know the names of the functions!
    • Know how(and when) to use select()!
  • Be able to describe what a C program does (a program that includes some sockets system calls - is it a client? server? tcp? udp?, etc).

Sample Questions: