This course explores the field of computer networking and communication, emphasizing network architecture and software design issues. The fundamental idea of computer networking is to make it possible for a diverse set of applications to be able to communicate arbitrary data between two or more computers. We will discuss the basic performance and engineering trade-offs in the design and implementation of computer networks at every level, from the physical (copper wire, optical fiber, satellite, ...) to the application layer (e.g., world-wide web, video-conferencing). The idea is to learn not only what computer networks are and how they work today, but also why they are designed the way they are and how they are likely to evolve in the future. We will draw examples primarily from the Internet and ATM environments. Examples of topics that we will cover include routing and addressing, internetworking, mobility, error detection, flow and congestion control, connection establishment and management, data representation, network security, quality of service issues, file transfer, electronic mail, and the world wide web.
Class time: 2:00-3:15 p.m., Tuesdays and Thursdays.
Class location: CSB 601.
James Kurose and Keith Ross, Computer Networking: A Top-Down Approach Featuring the Internet}, 2001 (Addison-Wesley). This is easy reading for those topics that may be hard to digest, but lacks some of the detail I will cover.
A widely liked book on writing Unix programs that use a computer network that will be useful for your projects is W. Richard Stevens, Unix Network Programming, Prentice-Hall, Volume I, second (1998) edition - if you already have the first edition (1990), that should work well too). I'd recommend buying this book - it's an extremely handy programming guide.
Network architectures (protocols, layering, interfaces, encapsulation)
Network technologies (e.g., Ethernet, FDDI, ATM, ISDN, wireless, HIPPI)
Internetworking (addressing, routing, csubnetting, autonomous systems)
Resource allocation (fair queuing, virtual clocks, congestion avoidance)
End-to-end issues (data representation, compression, authentication, encryption)
Interprocess communication (datagrams, virtual circuits, request/reply, reliable broadcast, mobility)
Application-layer protocols (SNMP, electronic mail, worldwide web)
There will be two-three programming assignments, and two exams. The programming projects are bound to be time-consuming, with the idea that you learn from the experience, so be sure to start on them as soon as they are handed out. There will also be a few written homework assignments, and occasional student presentations. Those taking the course as CSC 457 should come see me to determine what additional assignments and readings will be required. Your grade will be based on a combination of the above, with a tentative division for the undergraduates being 50% for the programming assignments, 10% for any homework, and 40% for the two exams.
For an easy-to-read overview of the World-Wide Web organization and
high-level structure of HTTP, take a look at Chapter 7 in Tanenbaum's
For an overview of Berkeley sockets, take a look at Lecture 6 .
Also take a look at Chunqiang (Tom)'s Tutorial Slides
RFC 2616: Hypertext Transfer Protocol (HTTP 1.1). RFC 2616 describes the format of the HTTP 1.1 protocol requests and responses, and is an update to RFC2068.
RFC 2068: Hypertext Transfer Protocol (HTTP 1.1). RFC 2068 describes the format of the HTTP 1.1 protocol requests and responses.
RFC 1945: Hypertext Transfer Protocol (HTTP 1.0).
RFC 1945 describes the format of the HTTP 1.0 protocol requests and responses
which your server will be receiving and generating.
RFC 1738: Uniform Resource Locators. RFC 1738 describes the format of URLs which your server will need to parse. Most of the legal URLs specified in RFC 1738 are not, however, supported by the ACME proxy server.
RFC 1808: Relative Uniform Resource Locators - an extension to RFC 1738.
These sample client and server examples using TCP/IP should help you get started on programming your proxy server using Berkeley sockets.
The International Engineering Task Force
An Article on Undersea Cable Systems
Internet Protocol Version 6 (IPv6)
Cache-Offs --- Web Proxy Caching Products Competition
ACM Special Interest Group on Data Communication is one place you can look for ideas on interesting topics to do your literature survey and seminar on.
Potential topics include:
Multicast over the Internet/MBone
Wireless and mobility issues
Security (Firewalls, VPNs, cryptography)
System area networks (SANs)
IPv6 - QoS issues