web服务和常规的文件检索服务(例如FTP)的区别在于:wen内容可以用一种叫做HTML的语言来编写,一个HTML程序包含指令,告诉浏览器如何显示这页中各种文本和图形对象。
每个网络应用都是基于客户端-服务器模型的。服务器管理资源,以某种方式操作资源 ,为客户端提供服务。客服器和客户端通过因特网这个全球网络通信。我们可以把因特网看作一个全球范围的主机集合,它具有以下属性:1)每个主机都有一个唯一的32位名字,称为IP地址;2)IP地址集合被映射为一个因特网域名的集合;3)不同因特网主机上的进程能通过连接互相通信。
客户端和服务器通过使用套接字接口建立连接。一个套接字(TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字)是连接的一个端点,连接是以文件描述符的形式提供给应用程序的。套接字接口提供了打开和关闭套接字描述符的函数,客户端和服务器通过读写这些描述符来实现彼此的通信。
web服务器返回的内容都是和它管理的某个文件相关联的。这些文件中的每一个都有一个唯一的名字,叫做URL,例如:http://bluefish.ics.cs.cmu.edu:8000/cgi-bin/adder?1500&123,标识了一个叫做/cgi-bin/adder的可执行文件,带1500和123两个参数。在事物过程中,客户端和服务器端使用的是URL不同的部分,客户端使用前缀:http://www.google.com:80来决定于哪类服务器联系,服务器在哪以及监听的端口号。服务器端使用后缀:/index.html来发现在它文件系统中的文件,并确定是动态内容还是静态内容。
web服务器通过使用HTTP协议和他们的客户端彼此通信。
- http请求的组成:
一个请求行,后面跟随零个或多个请求报头,再跟随一个空的文本行来终止报头列表。
请求行的形式是:<method><uri><version>
method包括GET、POST、OPTIONS等,GET方法占了99%的请求
URI是URL的后缀,包含文件名和可选的参数
version表明了使用的http版本。 - http相应的组成:
一个相应行,后面跟随零个或多个响应报头,再跟随一个终止报头的空行,再跟随一个响应主体。
响应行的格式是:<version><status code><status message>
状态码指明对请求的处理
状态信息给出与错误代码等价的英文描述
浏览器向服务器请求静态或者动态的内容。对静态内容的请求是通过从服务器磁盘取得文件并把它返回给客户端;对动态内容的请求是通过在服务器上一个子进程的上下文中运行一个程序并将它的输出返回给客户端。CGI(common gateway interface通用网关接口)标准提供了一组规则,管理客户端如何将程序参数传递给服务器,服务器如何将这些参数以及其他信息传递给子进程,以及子进程如何将它的输出发送回客户端