Software that sits between the raw request and your application logic, processing requests and responses. Common uses include authentication, logging, and CORS handling. (Ch. 17)