您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > 第四章CGI编程原理
第四章CGI编程原理HTTP原理CGI的基础知识CGI的工作原理CGI编程作业1.请编写程序实现如下功能:网页打开时全屏显示而且没有导航栏.2.基于jQuery库编写程序,实现一个日期和时间显示程序.3脚本对象和脚本语言本身对象的区别?4脚本对象分类为DOM和BOM的道理何在?提交截止时间:5月4日10:00pmHTTP概要超文本传输协议HTTP(HypertextTransportProtocol)是Web浏览器与Web服务器之间进行数据传输的应用层通信协议,它建立在TCP/IP协议的基础上,用以传输超文本文档。在中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间确定各自的角色,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,分四个子过程:建立连接、发送请求信息、发送响应信息、关闭连接。HTTP原理应用层传输层因特网层网络接口层硬件层网络驱动程序和网络接口卡RARPIPARPICMP路由协议TCPUDP应用协议和服务HTTP在TCP/IP协议族中的位置TCP和UDP的区别主要表现在以下几个方面:(1)TCP是面向连结的传输控制协议,UDP提供的是无连接的数据包服务。(2)TCP具有高可靠性,确保传输数据的正确性,不出现丢失或乱序。(3)UDP在传输数据前不建立连结,不对数据报进行检查和修改,无需等待对方的应答,所以会出现分组丢失,重复,乱序,应用程序需要负责传输可靠性方面的所有工作。(4)TCP对系统资源要求多,UDP对系统资源要求少。(5)UDP具有较好的实时性,工作效率较TCP高。(6)UDP的段结构比TCP简单,因此网络开销小。以上文字来自:HTTP协议基于请求/响应模式(相当于C/S)一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME(多用途的网际邮件扩充协议)信息,包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为:一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息,包括服务器信息、实体信息和可能的内容。MIME意为多目的Internet邮件扩展(MultipurposeInternetMailExtensions),它设计的最初目的是为了在发送电子邮件时附加多媒体数据,让邮件客户程序能根据其类型进行处理。每个MIME类型由两部分组成,前面是数据的大类别,例如声音audio、图象image等,后面定义具体的种类。常见的MIME类型:超文本标记语言文本.html,.htmltext/html普通文本.txttext/plainRTF文本.rtfapplication/rtfGIF图形.gifimage/gifJPEG图形.ipeg,.jpgimage/jpegau声音文件.auaudio/basicMIDI音乐文件mid,.midiaudio/midi,audio/x-midiRealAudio音乐文件.ra,.ramaudio/x-pn-realaudioMPEG文件.mpg,.mpegvideo/mpegAVI文件.avivideo/x-msvideoGZIP文件.gzapplication/x-gzipTAR文件.tarapplication/x-tarHTTP工作原理示意图浏览器服务器发出请求返回HTML文档HTTPHTTP原理详解一个客户端应用(如Web浏览器)打开到Web服务器的HTTP端口的一个“套接字”(缺省为80)。例如:HTTP规范:Internet工程制定组织(IETF)发布的RFC指定Internet标准。RFC:RequestForComments的简称,是Internet的标准(草案),多是一些技术标准文档,可在找到。大多数的网络协议最初都是以RFC文档发布的,最终确立为协议。RFC用编号来区分。HTTP的几个重要RFC:RFC1945HTTP1.0描述RFC2068HTTP1.1初步描述RFC2616HTTP1.1标准资源标识符URI(UniformResourceIdentifter,URI)1.连接至Web服务器注:1)套接字(Socket)是IP地址和端口的组合,用于进行网络通讯,任何应用程序需要和网络上的其他应用程序进行通许时,必须具有相应的套接字,例如Web站点侦听客户的HTTP请求,那么它就绑定在相应的套接字(IP地址和端口,例如端口为标准的TCP80)上。2)TCP层用端口号来区别不同的会话。用户程序通常使用或多或少的随机产生的端口号,特定的端口号被指派给等待请求的程序。通过连接,客户端写一个ASCII文本请求行,后跟0或多个HTTP头标,一个空行和实现请求的任意数据。一个请求由四个部分组成:请求行、请求头标、空行和请求数据。2.发送HTTP请求1)请求行由三个标记组成:请求方法、请求URI和HTTP版本,它们用空格分隔。例如:GET/index.htmlHTTP/1.1(用Nginx做实验或Apache做实验)Telnet模拟HTTP请求打开windows控制台Telnet127.0.0.180(先决条件:机器里已经安装了telnet)Ctrl+’]’回车输入命令回车HTTP规范定义了8种可能的请求方法:GET检索URI中标识资源的一个简单请求HEAD与GET方法相同,服务器只返回状态行和头标,并不返回请求文档POST服务器接受被写入客户端输出流中的数据的请求PUT服务器保存请求数据作为指定URI新内容的请求DELETE服务器删除URI中命名的资源的请求OPTIONS关于服务器支持的请求方法信息的请求TRACEWeb服务器反馈Http请求和其头标的请求CONNECT已文档化但当前未实现的一个方法,预留做隧道处理2)请求头标由“关键字:值”对组成,每行一对,关键字和值用冒号(:)分隔。请求头标通知服务器关于客户端的功能和标识,典型请求头标有:User-Agent客户端厂家和版本Accept客户端可识别的内容类型列表Content-Length附加到请求的数据字节数3)空行最后一个请求头标之后是一个空行,发送回车符和退行,通知服务器以下不再有头标。4)请求数据使用POST传送数据,最常使用的是Content-Type和Content-Length头标。Web服务器解析请求,定位指定资源。服务器将资源副本写至套接字,在此处由客户端读取。一个响应由四个部分组成;状态行、响应头标、空行、响应数据。1)状态行由三个标记组成:HTTP版本、响应代码和响应描述。•HTTP版本:向客户端指明其可理解的最高版本。•响应代码:3位的数字代码,指出请求的成功或失败,如果失败则指出原因。•响应描述:为响应代码的可读性解释。例如:HTTP/1.1200OKHTTP响应码:1xx:信息,请求收到,继续处理2xx:成功,行为被成功地接受、理解和采纳3xx:重定向,为了完成请求,必须进一步执行的动作4xx:客户端错误:3.服务端接受请求并返回HTTP响应1)浏览器首先解析状态行,查看表明请求是否成功的状态代码2)然后解析每一个响应头标,头标告知HTML的位置3)读取响应数据HTML,根据HTML的语法和语义对其进行格式化,并在浏览器窗口中显示它4)一个HTML文档可能包含其它需要被载入的资源引用,浏览器识别这些引用,对其它的资源再进行额外的请求,此过程循环多次。2)响应头标:像请求头标一样,它们指出服务器的功能,标识出响应数据的细节3)空行:最后一个响应头标之后是一个空行,发送回车符和退行,表明服务器以下不再有头标4)响应数据:HTML文档和图像等,也就是HTML本身无状态连接:HTTP模型是无状态的,在处理一个请求时,Web服务器并不记住来自同一客户端的请求。4.服务器关闭连接,浏览器解析响应CGI的概念及功能CGI是CommonGatewayInterface的缩写,即通用网关接口。它是外部扩展程序与服务器交互的一个标准接口。按照CGI标准编写的外部扩展应用程序可以处理客户端输入的需要协同工作的数据,完成客户端与服务器的交互操作。通俗地说,CGI是一个运行在服务器程序所在机器上,提供同客户端HTML页面接口的软件包。CGI的主要功能是在环境下,提供客户端HTML页面接口,使客户与网页作者之间产生互动作用。CGI加入到中,使得的环境不仅有单向的信息浏览,更有双向的信息交流。CGI的基础知识CGI的特点及运行环境CGI的特点:CGI程序可以用任何语言编写,可以在任何平台上开发,而且无须做太大的修改就可以在不同的平台间移植。CGI的主要运行环境有:WIN95/98/2000/NT/XP,UNIX,LINUX等。CGI运行的服务器主要有:IIS,Nginx,ApacheWeb服务器等。CGI的存放位置及调用方式CGI程序的存放位置CGI程序放置在指定的目录下。(与配置有关,不同系统要求不一样,配置方式也不一样)。例如,在UNIX系统下一般放在cgi-bin子目录下。CGI程序调用方式1)通过URL直接调用。在浏览器的URL栏里直接写入上述地址就可以调用该程序。如:“”(参数问题?)2)通过交互式主页里的FORM栏调用,通常都是用户在填完一张输入信息主页后按“确认”按钮启动CGI程序。CGI的编程语言CGI的编程(脚本)语言有:Perl、TCL;C/C++、VisualBasic;JavaScript、VBScript、VisualJava++、Java;Fortran、Pascal、Delphi等等。解释型脚本语言,是一种不需要预先编译的语言,它完全依赖解释器来完成任务。其语言通俗易学,能够被广泛应用。但是,因其源代码是ASCII码的文本文件,用户能够看到脚本,所以安全性较差。同时,由于它都是在执行的时候才能进行解释,所以执行效率比较低。编译型脚本语言,是一种需要预先编译、能够生成二进制代码的语言。由于其需要编译环境,所以它依赖于具体的操作平台,但是这种语言可以降低因装载解释器造成的服务器负载过量,同时,由于其生成的是二进制代码,所以安全性较高。解释型脚本语言Perl是近年来使用较广泛的CGI脚本语言之一。其前身是属于UNIX专用的高级语言,本身具有强大的字符串处理能力。Perl最大的特点是可以用在各种OS系统服务器平台上,并且可以免费从Internet网上下载。TCL是正在发展之中的CGI脚本语言,其主要用于Unix系统的服务器上,要求用户懂C语言,基本上可以说TCL是C语言程序的一个库。编译型脚本语言C和C++是目前较为流行的CGI脚本语言,其语义简洁、紧凑,使用方便灵活,执行速度快。由于它们的运算符和数据结构丰富,所以它们具有相当强大的功能。C和C++在各种OS服务器平台上都可以移植,特别是C++采用OOP技术,提高程序开发的速度,同时编译型语言较之解释型语言更具有安全性。VisualBasic是MicrosoftWindow3.X/95/NT上的编程语言,VB用于CGI脚本的最大一特点是提供一个世界上最大的对象库,并且提供OLE对象链接和嵌入技术,所以VB是仅次于Perl的用于CGI脚本的语言。但VB最大的限制性是其设计的CGI脚本只可运行在基于Window系统的服务器平台上。CGI与PHP、ASP的比较(一)程序接口CGIPHPASP操作系统均可均可win32Web服务器均可数种IIS、PWS执行效率慢快快稳定性最高佳中等系统安全最佳佳极差函数支持不安多少网页结合一般佳佳编程语言多phpVB、
本文标题:第四章CGI编程原理
链接地址:https://www.777doc.com/doc-2092250 .html