28、深入理解计算机系统笔记,Web服务器简介
1、Web服务器以两种不同的方式向客户端提供内容:
1)静态内容(static content):从服务器磁盘取得文件并把它返回客户端来服务。
2)动态内容(dynamic content):运行一个可执行文件,并把它的输出返回给客户端。在服务器上一个子进程的上下文中运行一个程序并将它的输出返回给客户端来服务。
2、在URL中,“?”用来分隔文件名和参数,多个参数用“&”来分隔。参数中不允许空格,用“%20”来表示。
3、确定一个URL指向的是静态内容还是动态内容没有标准的规则。一种常见的方法是,确认一组目录,如cgi-bin,所有的可执行性文件都放在这这些目录中。
https://mail.qq.com/cgi-bin/frame_html?sid=dKCN-6tpo1JFKQhG&r=bcdb4ca744f9b60c166829ecc4cf6a8a
1)如,最后一个“/”不是unix的根目录,而表示被请求内容类型的主目录。
2)最小的URL后辍是“/”字符,所有的服务器将其扩展为某个默认的主面。
4、HTTP事务
1)HTTP请求
执行的格式是:<method> <uri> <version>
如:GET / HTTP/1.1
2)HTTP响应
执行格式:<version> <status code> <status message>
如:HTTP/1.0 200 OK
3)通过CGI(common gateway interface),来解决客户端与服务器交互问题,如客户端如何将参数传给服务器,服务器如何将这些参数传给它所创建的子进程?服务器如何将子进程生成内容所需要的其他信息传递给子进程?等。
5、书中设计了一个小型的web服务器。