| Topics and Readings | What 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)
-
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
|
|
|
- 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).
|