Computer Networks
Revised: August 2008 (Andrew Dalton)
Course Description
Network programming both at the socket interface and at higher levels including web-based programming. Key concepts in the higher layers of the network protocol stack emphasizing the application, transport, and network layers. 3 credit hours, required for major, elective for minor, prerequisite is CS 151.
Objectives
Skill in network programming through development of distributed applications using the socket interface to TCP and UDP.
An introduction to the application layer protocol HTTP (used by the World Wide Web) and web-based programming.
Understanding the layered design of computer networks and the key concepts at the application layer through the link layer.
Text
J.F. Kurose and K.W. Ross, Computer Networking: A Top-Down Approach Featuring the Internet, Third Edition, Addison-Wesley, 2006.
Grading Procedure
Grading procedures and factors influencing course grade are left to the discretion of individual instructors, subject to general university policy.
Attendance Policy
Attendance policy is left to the discretion of individual instructors, subject to general university policy.
Course Outline
- Introduction
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. Reading: Chapter 1 of my notes and Chapter 1 of Kurose and Ross [KR00]. - Application Layer: DNS and HTTP
Client-server interaction, URLs (Uniform Resource Locators), HTTP (HyperText Transfer Protocol), CGI (Common Gateway Interface), MIME (Multipurpose Internet Mail Extension), URL encoding, DNS (Domain Name Service), iterative versus recursive query resolution. Using traceroute and nslookup. Reading: Chapter 2 of my notes and Chapter 2 of Kurose and Ross. - Application Layer: Java Socket Programming
Socket programming for both TCP and UDP. Using other java.net package classes including InetAddress, URL, and URLencoder. Reading: Chapter 2 of my notes, Chapter 2 of Kurose and Ross [KR00], online Java Tutorial trails, online javadoc documentation of network-oriented packages. - 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. Reading: Chapter 3A of my notes and Chapter 3 of Kurose and Ross. - 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), using netstat. Reading: Chapter 3B of my notes and Chapter 3 of Kurose and Ross. - Application Layer: More Java Network Programming
Higher-level Java network programming. Remote Method Invocation (RMI) and Servlets. Mention of other high-level Java network programming features (Java Server Pages, Jini, Enterprise Java Beans). Reading: Handouts and online Java Tutorial trails, online javadoc documentation of network-oriented packages.\ - Network Layer: Internet Routing
Link-state algorithm (reliable flooding, Dijkstra's shortest path algorithm). Distance-vector algorithm (basic concept, problems, Bellman-Ford). Reading: Chapter 4 of my notes and Chapter 4 of Kurose and Ross. - 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 BGP (Border Gateway Protocol). Reading: Chapter 4 of my notes and Chapter 4 of Kurose and Ross. - Link Layer: Media Access Control
A sequence of media access control protocols leading up to the protocol used by Ethernet (static versus dynamic channel allocation, ALOHA (pure and slotted), CSMA (Carrier Sense Multiple Access), CSMA/CD (Carrier Sense Multiple Access/ Collision Detection). An alternative: token ring. Reading: Chapter 5A of my notes and Chapter 5 of Kurose and Ross. - Link Layer: Ethernet
ARP (Address Resolution Protocol), Ethernet, Spanning Tree algorithm, Ethernet switches and virtual LANs (Local Area Networks). Reading: Chapter 5B of my notes and Chapter 5 of Kurose and Ross.







