Rack is a Ruby web server interface that provides a minimal specification for building web servers and web applications. It allows web servers and frameworks to be developed independently while remaining compatible. Rack defines a simple interface between web servers and Ruby frameworks or applications - a Rack application must respond to the 'call' method and return an array containing the response status, headers, and body. Middleware can be used to modify requests and responses and are configured in a rackup file to build a modular stack.