This class will focus on the complete understanding of the Hypertext Transfer Protocol (HTTP) and the implementation of a web server. The class will be programming intensive: prerequisites include the understanding of network (socket) programming. The students will decide their own implementation language within the Unix/Linux environment; the lectures will be strictly about HTTP and not about any particular programming language.
Location: Dragas Hall (DRGS) 1117
Time: Thursdays, 4:20-7:00pm
Office Hours: Thursdays, 3:00-4:00pm and by appointment (E&CS 3102)
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.
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
Current RFCs
- RFC 3875: The Common Gateway Interface (CGI) Version 1.1
- RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
- 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
- RFC 7616: HTTP Digest Access Authentication
- RFC 7617: The ‘Basic’ HTTP Authentication Scheme