Revised: February 2014 (William Kreahling)
Network programming both at the socket interface and at higher levels. Key concepts
in the higher layers of the network protocol stack emphasizing the application, transport,
and network layers.
Prerequisite & Notes
Skill in network programming through development of distributed applications using
the socket interface to TCP and UDP.
An introduction to the application layer protocols SMATP, FTP, and HTTP (used by the
World Wide Web).
Understanding the layered design of computer networks and the key concepts at the
application layer through the link layer.
J.F. Kurose and K.W. Ross,
Computer Networking: A Top-Down Approach, Sixth Edition, Addison-Wesley, 2012.
Grading procedures and factors influencing course grade are left to the discretion
of individual instructors, subject to general university policy.
Attendance policy is left to the discretion of individual instructors, subject to
general university policy.
Basic terminology: hosts, network edge and network core. Connection-oriented versus
connectionless service, packet switching versus circuit switching, virtual circuits,
protocol stacks, encapsulation, fragmentation, multiplexing, statistical multiplexing,
Internet and OSI protocol layer models, domain names, IP addresses, name resolution,
link layer addresses, address resolution. Propagation delay versus bandwidth.
Application Layer: DNS and HTTP
Client-server interaction, URLs (Uniform Resource Locators), HTTP (HyperText Transfer
Protocol), URL encoding, DNS (Domain Name Service), iterative versus recursive query
resolution. Using traceroute and nslookup.
Application Layer: Java Socket Programming
Socket programming for both TCP and UDP.
Transport Layer: Error Control
A sequence of window-based protocols for error control going from simplest (stop-and-wait)
to more complex (Go-Back-N and Selective-Repeat). Correctness and performance.
Transport Layer: UDP and TCP
Transport layer services (port-to-port, reliable/in-order delivery), connection establishment
and release, UDP, TCP (service model and header, connection management, transmission
policy, congestion control, timer management).
Network Layer: Internet Routing
Link-state algorithm (reliable flooding, Dijkstra's shortest path algorithm). Distance-vector
algorithm (basic concept, problems, Bellman-Ford).
Network Layer: IP
ICMP (Internet Control Message Protocol), IP (Internet Protocol: Service model and
packet format, fragmentation and reassembly, subnet addressing, using ifconfig and
netstat, RIP (Routing Information Protocol), OSPF (Open Shortest Path First), and