1、 相关网络协议8.1 静态HTML与动态HTML8.2 CGI模式8.3 思考题8.4开放式通信系统互联(Open System Interconnection,简称OSI)参考模型通过划分层次,简化了计算机之间相互通信所要完成的任务。传输控制协议/因特网互联协议(TCP/IP)是Internet最基本的协议,也是国际互联网的基础。HTTP/1.1协议中的方法方法方法含义含义GET向特定的资源发出请求。此方法的URL参数传递的数量是有限的,一般在1KB以下。POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件),数据被包含在请求体中。传递的参数的数量比GET大的多,一般没有限制。H
2、EAD向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。请求获取由Request-URI所标识的资源的响应消息报头。PUT向指定资源位置(Request-URI)上传其最新内容。DELETE删除指定资源。TRACE回显服务器收到的请求。CONNECTHTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。OPTIONS请求查询服务器的性能,或者查询与资源相关的选项和需求。一个GET请求的示例如下:GET/hello.htm HTTP/1.1(CRLF)Accept:*/*(CRLF)Accept-Language:zh-cn(CRLF)Accept-Encoding:gz
3、ip,deflate(CRLF)If-Modified-Since:Wed,17 Oct 2007 02:15:55 GMT(CRLF)If-None-Match:W/158-1192587355000(CRLF)User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1)(CRLF)Host:192.168.2.162:8080(CRLF)Connection:Keep-Alive(CRLF)(CRLF)一个HTTP响应消息:HTTP/1.1 200 OKDate:Wed,17 Oct 2010 03:01:59 GMTServ
4、er:Apache-Coyote/1.1Content-Length:1580Content-Type:text/htmlCache-Control:privateExpires:Wed,17 Oct 2010 03:01:59 GMTContent-Encoding:gzipHTTP响应状态码状态码状态码定义定义1xx 报告报告接收到请求,继续进程2xx 成功成功步骤成功接收,被理解,并被接受3xx 重定向重定向为了完成请求,必须采取进一步措施4xx 客户端出错客户端出错请求包括错的顺序或不能完成5xx 服务器出错服务器出错服务器无法完成显然有效的请求Web服务器的主要功能就是根据浏览器的请
5、求,发送相应的HTML文档。在早期的Web网站中,所有的HTML文档都是有网站的开发者事先编写好的,这种固定内容的HTML文档就是静态HTML页面(Static HTML Pages)。随着Web应用的推广,用户越来越多地需要“动态”的内容,比如实时的市场信息、航班信息等,事先编写的HTML文件显然无法满足这种要求,由程序动态生成HTML的技术应运而生。能够动态生成HTML的程序被称为服务器端程序,比如CGI、JSP、ASP.NET等,而所生成的HTML文档被称为动态HTML页面(Dynamic HTML Pages)。早期的Web服务器只能简单地响应浏览器发来的HTTP请求,并将存储在服务器
6、上的HTML文件返回给浏览器,直到通用网关接口(Common Gateway Interface,简称为CGI)技术的产生才使得Web服务器可根据运行时的具体情况(比如数据库的实时数据)动态生成HTML页面。CGI是外部应用程序与Web服务器交互的一个标准接口。CGI技术允许服务端的应用程序根据客户端的请求,动态生成HTML页面,这使客户端和服务端的动态信息交换成为了可能。绝大多数的CGI程序被用来解释处理来自用户在HTML文件的表单中所输入的信息,然后在服务器进行相应的处理并将结果信息动态编写为HTML文件反馈给浏览器。CGI程序大多是编译后的可执行程序,其编程语言可以是C、C+、Pasca
7、l或Perl等程序设计语言。其中,Perl的跨操作系统、易于修改等特性使它成为了CGI的主要编程语言。目前几乎所有的Web服务器都支持CGI。CGI代码传统ASP代码/*HelloWorld.c*/#include#include int main(void)time_t now;time(&now);printf(Content-type:text/htmlnn);printf();printf(Hello World);printf();printf(Hello World);printf(Im a C Program);printf(It is now%s,ctime(&now);printf();printf();Hello World Im an ASP Program It is now (1)OSI网络协议模型又多少层,分别是哪些层?(2)TCP/IP协议栈分为几层,分别是哪些层?(3)HTTP协议的信息交换过程包括哪四个过程?(4)HTTP协议属于TCP/IP协议栈中的哪一层,采用此协议的Web服务的默认端口是多少?(5)GET和POST都可以向Web服务器发送数据、发出请求,请问这两种方法的主要不同是什么?(6)什么是静态HTML页面,什么是动态HTML页面?哪些技术可以实现动态HTML页面?(7)什么是CGI,其工作流程是什么?