The CS 431/531 Web Server Design course focuses on complete understanding of the Hypertext Transfer Protocol (HTTP) and implementation of a web server (not a web application). The course is programming intensive, prerequisites include the understanding of network (socket) programming. Students in this course decide their own implementation language within the Unix/Linux environment; the lectures are about HTTP and not about any particular programming language.
Location: Online and on-campus E&CS 3102
Time: Wednesdays, 4:20-7:00pm (Eastern Time)
Office Hours: Wednesdays, 3:00-4:00pm (Eastern Time) and by appointment (E&CS 3102 and online)
Recent/Upcoming Lectures
Lecture 13
- InterPlanetary File System (IPFS)
- InterPlanetary Wayback (IPWB)
- Decentralized Web Archiving and Replay
Student Presentations
- Cloud Hosting Tutorial
Due Assignments
Assignment 0-5
Available Points: 9
HTTP design improvements, WARC file comparison, and in the wild examples of non-standard status codes, wrong MIME types, and unsafe methods.
- Non-standard status codes
- PATCH, PUT, and DELETE methods
- Wrong API MIME type
- HTTP/1.1 design improvements
- WARC file comparison
Assignment 5
Available Points: 20
This assignment builds on top of previous assignments and primarily focuses on unsafe methods and server-side execution (CGI).
Reading Materials
As the course progresses we will primarily be exploring and implementing parts of the following Request for Comments (RFCs). We might also refer to some additional specifications as we find them relevant.
Current RFCs
- RFC 3875: The Common Gateway Interface (CGI) Version 1.1
- RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- RFC 7616: HTTP Digest Access Authentication
- RFC 7617: The ‘Basic’ HTTP Authentication Scheme
- RFC 9110: HTTP Semantics
- RFC 9111: HTTP Caching
- RFC 9112: HTTP/1.1
Historical RFCs
- RFC 1630: Universal Resource Identifiers in WWW
- RFC 1867: Form-based File Upload in HTML
- RFC 2295: Transparent Content Negotiation in HTTP
- RFC 2396: Uniform Resource Identifier (URI): Generic Syntax
- RFC 2616: Hypertext Transfer Protocol – HTTP/1.1
- RFC 7230: Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing
- RFC 7231: Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
- RFC 7232: Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests
- RFC 7233: Hypertext Transfer Protocol (HTTP/1.1): Range Requests
- RFC 7234: Hypertext Transfer Protocol (HTTP/1.1): Caching
- RFC 7235: Hypertext Transfer Protocol (HTTP/1.1): Authentication