http协议

realroc 贡献于2011-12-11

作者 gao  创建于2008-12-26 08:45:00   修改者gao  修改于2010-07-25 05:09:00字数3719

文档摘要:HTTP协议超文本传输协议(HTTP,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
关键词:

HTTP协议 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。 HTTP协议是基于TCP协议的,所以先看下TCP/IP协议 TCP/IP 从应用层至物理层,数据是一层层封装,封装的方式一般都是在原有数据的前面加一个数据控制头,数据封装格式如下: 其中,对于TCP传输协议,客户端在于服务器建立连接前需要经过TCP三层握手,过程如下: HTTP 通信过程 HTTP协议并没有规定必须使用TCP协议,只要使用可靠的传输协议即可 HTTP是一个客户端和服务器端请求和应答的标准(TCP). 由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。 持续连接 客户端可以连续发送请求,而不用等待每一个响应的到来 HTTP URL URI、URL和URN之间的区别与联系   URI:Uniform Resource Identifier,统一资源标识符;   URL:Uniform Resource Locator,统一资源定位符;   URN:Uniform Resource Name,统一资源名称。   其中,URL,URN是URI的子集。   Web上地址的基本形式是URI,它代表统一资源标识符。有两种形式:   URL:目前URI的最普遍形式就是无处不在的URL或统一资源定位器。   URN:URL的一种更新形式,统一资源名称(URN, Uniform Resource Name)不依赖于位置,并且有可能减少失效连接的个数。但是其流行还需假以时日,因为它需要更精密软件的支持。 URL格式: 协议://host:port +主机资源的具体地址(以/开头,表示根目录) HTTP请求 GET、POST、HEAD、CONNECT、PUT、DELETE、TRACE HTTP请求包括三部分: 请求行 消息报头 请求正文 请求行: Method Request_URI HTTP_Version 例如: HEAD /index.html HTTP/1.1 消息报头与请求正文(post提交的数据就在正文中)在后面讲 HTTP响应 HTTP响应包括三部分 状态行 消息报头 响应正文 状态行: HTTP_Version status_code Reason_phrase HTTP/1.1 200 OK 服务器返回状态码 1xx:表明服务端接收了客户端请求,客户端继续发送请求; 2xx:客户端发送的请求被服务端成功接收并成功进行了处理; 3xx:服务端给客户端返回用于重定向的信息; 4xx:客户端的请求有非法内容; 5xx:服务端未能正常处理客户端的请求而出现意外错误。 举例: “100”  ; 服务端希望客户端继续; “200”  ; 服务端成功接收并处理了客户端的请求; “301”  ; 客户端所请求的URL已经移走,需要客户端重定向到其它的URL; “304”  ; 客户端所请求的URL未发生变化; “400”  ; 客户端请求错误; “403”  ; 客户端请求被服务端所禁止; “404”  ; 客户端所请求的URL在服务端不存在; “500”  ; 服务端在处理客户端请求时出现异常; “501”  ; 服务端未实现客户端请求的方法或内容; “502”  ; 此为中间代理返回给客户端的出错信息,表明服务端返回给代理时出错; “503”  ; 服务端由于负载过高或其它错误而无法正常响应客户端请求; “504”  ; 此为中间代理返回给客户端的出错信息,表明代理连接服务端出现超时。 HTTP请求响应例举 使用telnet发送请求 open www.163.com 80 http请求如下: HEAD /index.html HTTP/1.1 host:www.163.com http响应如下: HTTP/1.1 200 OK Server: nginx Date: Sun, 25 Jul 2010 04:57:13 GMT Content-Type: text/html; charset=GBK Transfer-Encoding: chunked Vary: Accept-Encoding Expires: Sun, 25 Jul 2010 04:59:13 GMT Cache-Control: max-age=120 Via: 1.1 zb4:8103 (Cdn Cache Server V2.0), 1.1 hf44:8102 (Cdn Cache Server V2.0) Connection: keep-alive Age: 1 消息报头 四种类型: 普通报头 (请求报头 响应报头) 实体报头 普通报头 Cache-Control:客户端希望服务端如何缓存自己的请求数据,如"Cache-Control: no-cache","Cache-Control: max-age=0"; Connection:客户端是否希望与服务端之间保持长连接,如"Connection: close", "Connection: keep-alive"; Date:只有当请求方法为POST或PUT方法时客户端才可能会有些字段; Pragma:包含了客户端一些特殊请求信息,如 "Pragma: no-cache" 客户端希望代理或应用服务器不应缓存与该请求相关的结果数据; Via:一般用在代理网关向应用服务器发送的请求头中,表明该来自客户端的请求经过了网关代理,      格式为:"Via: 请求协议版本  网关标识   [其它信息] ",      如 :" Via: 1.1  webcache_250_199.hexun.com:80 (squid)" 请求报头 Accept:表明客户同端可接受的请求回应的媒体类型范围列表。星号“*”用于按范围将类型分组,用“*/*”指示可接受全部类型;用“type/*”指示可接受 type类型的所有子类型,如“ Accept: image/gif, image/jpeg, */*”; Accept-Charset:客户端所能识别的字符集编码格式,格式:“Accept-Charset: 字符集1[:权重],字符集2[:权重]”,如:“ Accept-Charset: iso-8859-5, unicode-1-1;q=0.8”; Accept-Language:客户端所能识别的语言,格式:“Accept-Language: 语言1[:权重],语言2[:权重]”,如:” Accept-Language: zh, en;q=0.7”; Host:客户请求的主机域名或主机IP,格式:“Host: 域名或IP[:端口号]”,如:“Host: www.hexun.com:80“,请求行中若有HTTP/1.1则必须有该请求头; User-Agent:表明用户所使用的浏览器标识,主要用于统计的目的; Referer:指明该请求是从哪个关联连接而来; Accept-Encoding:客户端所能识别的编码压缩格式,如:“Accept-Encoding: gzip, deflate”; If- Modified-Since:该字段与客户端缓存相关,客户端所访问的URL自该指定日期以来在服务端是否被修改过,如果修改过则服务端返回新的修改后的信息,如果未修改过则服务器返回304表明此请求所指URL未曾修改过,如:“If-Modified-Since: Fri, 2 Sep 2006 19:37:36 GMT”; If-None-Match:该字段与客户端缓存相关,客户端发送URL请求的同时发送该字段及标识,如果服务端的标识与客户端的标识一致,则返回304表明此URL未修改过,如果不一致则服务端返回完整的数据信息,如:“If-None-Match: 0f0a893aad8c61:253, 0f0a893aad8c61:252, 0f0a893aad8c61:251”; Cookie:为扩展字段,存储于客户端,向同一域名的服务端发送属于该域的cookie,如:“Cookie: MailUserName=whouse”; 响应报头 Accept-Ranges:表明服务端接收的数据单位,如:“Accept-Ranges: bytes”, ; Location:服务端向客户端返回此信息以使客户端进行重定向,如:“Location: http://www.hexun.com”; Server:服务端返回的用于标识自己的一些信息,如:“ Server: Microsoft-IIS/6.0”; ETag:服务端返回的响应数据的标识字段,客户端可根据此字段的值向服务器发送某URL是否更新的信息; 实体报头 Content-Encoding:服务端所响应数据的编码格式,如:“Content-Encoding: gzip”; Content-Length:服务端所返回数据的数据体部分的内容长度,如:“ Content-Length: 24”; Content-Type:服务端所返回的数据体的内容类型,如:“Content-Type: text/html; charset=gb2312” ; Set-Cookie:服务端返回给客户端的cookie数据,如:“ Set-Cookie: ASP.NET_SessionId=icnh2ku2dqlmkciyobgvzl55; path=/”

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ] 1 人已下载

下载文档