Skip to content
This repository has been archived by the owner on Jan 22, 2025. It is now read-only.

Badjedi04/WebServerDesign

Repository files navigation

CS 431/531 Web Server Design - Fall 2022

Author: Prashant

Old Dominion University

Docker Command

Build Docker Image

docker build --tag web:v1.0 .

Run Docker Image

docker run --rm -it -p 3001:80 -v ${PWD}:/app --entrypoint bash web:v1.1

This repository contains assignments and resources related to the CS 431/531 Web Server Design course at Old Dominion University, taught by Dr. Sawood Alam. The course focuses on developing a standards-compliant HTTP web server with an in-depth exploration of HTTP protocols, web architecture, and server-side execution.

Course Details

  • Instructor: Dr. Sawood Alam (@ibnesayeed)
  • Institution: Old Dominion University (ODU)

Topics Covered

The course covers a wide range of topics related to web server design, including but not limited to:

  1. HTTP Basics
    • Introduction to HTTP
    • Web Architecture (W3C)
    • Using telnet, curl, and wget
  2. URIs, Logs, and MIME Types
    • Git/GitHub workflow
    • Socket Programming
    • Python for Web Servers
  3. Conditionals & Redirections
    • ETags and Date-time
    • Introduction to Docker
  4. Long-lived Connections & Pipelines
  5. Range and Partial Content Handling
  6. Character, Content, and Transfer Encodings
  7. Content Negotiation
  8. Authentication and Authorization
  9. Unsafe Methods & CGI
  10. HTTPS, HTTP/2, HTTP/3
  11. REST and HATEOAS Concepts
  12. Web Archiving (WARC, IPFS, IPWB)

Assignments

All assignments are done on top of the previous one, resulting in a single main branch that contains all the assignments.

Assignment Description
Assignment 1 Basic web server implementation with logs, methods, headers, and MIME types.
Assignment 2 Conditionals, redirections, long-lived, and pipelined connections.
Assignment 3 Encoding, content negotiation, and partial content.
Assignment 4 Authentication and authorization mechanisms.
Assignment 5 Unsafe methods and server-side execution with CGI.

References