当前位置:首页 > 科技数码

http协议 HTTP协议工作原理是什么 HTTP协议工作原理介绍【详解】

  HTTP协议培训教程资料

  协议基础

  HTTP(HyperText Transfer Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。

  通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个指示头域结束的空行和可选的消息体组成。HTTP的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域名是大小写无关的,域值前可以添加任何数量的空格符,头域可以被扩展为多行,在每行开始处,使用至少一个空格或制表符。

  通用头域

  通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。下面简单介绍几个在UPnP消息中使用的通用头域。

  Cache-Control头域

  Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各个消息中的指令含义如下:

  Public指示响应可被任何缓存区缓存。

  Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

  no-cache指示请求或响应消息不能缓存

  no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

  max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

  min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

  max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息。

  Date头域

  Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。

  Pragma头域

  Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。

  请求消息

  请求消息的第一行为下面的格式:

  MethodSPRequest-URISPHTTP-VersionCRLFMethod表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。

  SP表示空格。Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信http架构息。请求头域可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。

  典型的请求消息:

  Host: download.microtool.de

  Accept: */*

  Pragma: no-cache

  Cache-Control: no-cache

  User-Agent: Mozilla/4.04[en](Win95;I;Nav)

  Range: bytes=554554-

  上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL下的文件。棕色的部分表示请求头域的信息,绿色的部分表示通用头部分。

  Host头域

  Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。

  Referer头域

  Referer头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。

  Range头域

  Range头域可以请求实体的一个或者多个子范围。例如,

  表示头500个字节:bytes=0-499

  表示第二个500字节:bytes=500-999

  表示最后500个字节:bytes=-500

  表示500字节以后的范围:bytes=500-

  第一个和最后一个字节:bytes=0-0,-1

  同时指定几个范围:bytes=500-600,601-999

  但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200(OK)。

  User-Agent头域

  User-Agent头域的内容包含发出请求的用户信息。

  响应消息

  响应消息的第一行为下面的格式:

  HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF

  HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。Status-Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。第一个数字可能取5个不同的值:

  1xx:信息响应类,表示接收到请求并且继续处理

  2xx:处理成功响应类,表示动作被成功接收、理解和接受

  3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理

  4xx:客户端错误,客户请求包含语法错误或者是不能正确执行

  5xx:服务端错误,服务器不能正确执行一个正确的请求

  响应头域允许服务器传递不能放在状态行的附加信息,这些域主要描述服务器的信息和Request-URI进一步的信息。响应头域包含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩展要求通讯双方都支持,如果存在不支持的响应头域,一般将会作为实体头域处理。

  典型的响应消息:

  HTTP/1.0200OK

  Date:Mon,31Dec200104:25:57GMT

  Server:Apache/1.3.14(Unix)

  Content-type:text/html

  Last-modified:Tue,17Apr200106:46:28GMT

  Etag:"a030f020ac7c01:1e9f"

  Content-length:39725426

  Content-range:bytes554554-40279979/40279980

  上例第一行表示HTTP服务端响应一个GET方法。棕色的部分表示响应头域的信息,绿色的部分表示通用头部分,红色的部分表示实体头域的信息。

  Location响应头

  Location响应头用于重定向接收者到一个新URI地址。

  Server响应头

  Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。

  HTTP-运作方式

  HTTP协议是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

  许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。

  当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介由三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用.

  实体

  请求消息和响应消息都可以包含实体信息,实体信息一般由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体头,但是这些域可能无法未接受方识别。实体可以是一个经过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。

  Content-Type实体头

  Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型Content-Range实体头

  Content-Range实体头用于指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:

  Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth

  例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围,Content-Length表示实际传送的字节数。

  Last-modified实体头

  Last-modified实体头指定服务器上保存内容的最后修订时间。

  例如,传送头500个字节次字段的形式:Content-Range:bytes0-499/1234如果一个http消息包含此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的范围,Content-Length表示实际传送的字节数。

  Last-modified实体头

  协议结构

  HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。请求报文格式如下:

  请求行 - 通用信息头 - 请求头 - 实体头 - 报文主体

  请求行以方法字段开始,后面分别是 URL 字段和 HTTP 协议版本字段,并以 CRLF 结尾。SP 是分隔符。除了在最后的 CRLF 序列中 CF 和 LF 是必需的之外,其他都可以不要。有关通用信息头,请求头和实体头方面的具体内容可以参照相关文件。

  应报文格式如下:

  状态行 - 通用信息头 - 响应头 - 实体头 - 报文主体

  状态码元由3位数字组成,表示请求是否被理解或被满足。原因分析是对原文的状态码作简短的描述,状态码用来支持自动操作,而原因分析用来供用户使用。客户机无需用来检查或显示语法。有关通用信息头,响应头和实体头方面的具体内容可以参照相关文件。

  工作原理

  既然我们明白了URL的构成,那么HTTP是怎么工作呢?我们接下来就要讨论这个问题。

  一次HTTP操作称为一个事务,其工作过程可分为四步:

  首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作就开始了。

  建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

  服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

  客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客http工作流程图户机与服务器断开连接。

  如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

  许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理和服务器之间通过一个单独的连接来完成。在Internet上,HTTP通讯通常发生在TCP/IP连接之上。缺省端口是TCP 80,但其它的端口也是可用的。但这并不预示着HTTP协议在Internet或其它网络的其它协议之上才能完成。HTTP只预示着一个可靠的传输。

  这个过程就好像我们打电话订货一样,我们可以打电话给商家,告诉他我们需要什么规格的商品,然后商家再告诉我们什么商品有货,什么商品缺货。这些,我们是通过电话线用电话联系(HTTP是通过TCP/IP),当然我们也可以通过传真,只要商家那边也有传真。

  以上简要介绍了HTTP协议的宏观运作方式,下面介绍一下HTTP协议的内部操作过程。

  在WWW中,“客户”与“服务器”是一个相对的概念,只存在于一个特定的连接期间,即在某个连接中的客户在另一个连接中可能作为服务器。基于HTTP协议的客户/服务器模式的信息交换过程,它分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。这就好像上面的例子,我们电话订货的全过程。

  其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。

  也就是说商家除了拥有商品之外,它也有一个职员在接听你的电话,当你打电话的时候,你的声音转换成各种复杂的数据,通过电话线传输到对方的电话机,对方的电话机又把各种复杂的数据转换成声音,使得对方商家的职员能够明白你的请求。这个过程你不需要明白声音是怎么转换成复杂的数据的。

  错误代码解释

  "100" : Continue

  "101" : witching Protocols

  "200" : OK

  "201" : Created

  "202" : Accepted

  "203" : Non-Authoritative Information

  "204" : No Content

  "205" : Reset Content

  "206" : Partial Content

  "300" : Multiple Choices

  "301" : Moved Permanently

  "302" : Found

  "303" : See Other

  "304" : Not Modified

  "305" : Use Proxy

  "307" : Temporary Redirect

  HTTP 400 - 请求无效

  HTTP 401.1 - 未授权:登录失败

  HTTP 401.2 - 未授权:服务器配置问题导致登录失败

  HTTP 401.3 - ACL 禁止访问资源

  HTTP 401.4 - 未授权:授权被筛选器拒绝

  HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败

  HTTP 403 - 禁止访问

  HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost

  HTTP 403.1 禁止访问:禁止可执行访问

  HTTP 403.2 - 禁止访问:禁止读访问

  HTTP 403.3 - 禁止访问:禁止写访问

  HTTP 403.4 - 禁止访问:要求 SSL

  HTTP 403.5 - 禁止访问:要求 SSL 128

  HTTP 403.6 - 禁止访问:IP 地址被拒绝

  HTTP 403.7 - 禁止访问:要求客户证书

  HTTP 403.8 - 禁止访问:禁止站点访问

  HTTP 403.9 - 禁止访问:连接的用户过多

  HTTP 403.10 - 禁止访问:配置无效

  HTTP 403.11 - 禁止访问:密码更改

  HTTP 403.12 - 禁止访问:映射器拒绝访问

  HTTP 403.13 - 禁止访问:客户证书已被吊销

  HTTP 403.15 - 禁止访问:客户访问许可过多

  HTTP 403.16 - 禁止访问:客户证书不可信或者无效

  HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效

  HTTP 404.1 - 无法找到 Web 站点

  HTTP 404 - 无法找到文件

  HTTP 405 - 资源被禁止

  HTTP 406 - 无法接受

  HTTP 407 - 要求代理身份验证

  HTTP 410 - 永远不可用

  HTTP 412 - 先决条件失败

  HTTP 414 - 请求 - URI 太长

  HTTP 500 - 内部服务器错误

  HTTP 500.100 - 内部服务器错误 - ASP 错误

  HTTP 500-11 服务器关闭

  HTTP 500-12 应用程序重新启动

  HTTP 500-13 - 服务器太忙

  HTTP 500-14 - 应用程序无效

  HTTP 500-15 - 不允许请求 global.asa

  Error 501 - 未实现

  HTTP 502 - 网关错误

  版本历史

  协议版本

  超文本传输协议已经演化出了很多版本,它们中的大部分都是向下兼容的。在RFC 2145中描述了HTTP版本号的用法。客户端在请求的开始告诉服务器它采用的协议版本号,而后者则在响应中采用相同或者更早的协议版本。

  0.9

  已过时。只接受 GET 一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持 POST 方法,所以客户端无法向服务器传递太多信息。

  HTTP/1.0

  这是第一个在通讯中指定版本号的 HTTP 协议版本,至今仍被广泛采用,特别是在代理服务器中。

  HTTP/1.1

  当前版本。持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。

  HTTP/1.1相较于 HTTP/1.0 协议的区别主要体现在:

  1 缓存处理

  2 带宽优化及网络连接的使用

  3 错误通知的管理

  4 消息在网络中的发送

  5 互联网地址的维护

  6 安全性及完整性

1.《http协议 HTTP协议工作原理是什么 HTTP协议工作原理介绍【详解】》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《http协议 HTTP协议工作原理是什么 HTTP协议工作原理介绍【详解】》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/keji/433527.html

上一篇

什么样的校园 校园网结构是怎样的 校园网设计方案介绍【图文】

下一篇

自动抄表 自动抄表系统是什么 自动抄表系统发展状况介绍【图文】

ftp协议是一种用于什么的协议 文件传送协议是什么 客户端与FTP服务器交互步骤介绍【详解】

ftp协议是一种用于什么的协议 文件传送协议是什么 客户端与FTP服务器交互步骤介绍【详解】

文件传送协议,文件传送协议是什么意思  FTP是一种Internet文件传输服务,它在Internet和TCP/IP网络中运作。FTP基本上是一种客户/服务器协议,在此协议中运行FTP服务器的系统接受来自运行FTP客户端的系统的命令。它的主要目的是允许文件从一个主机传送到另一个主机,而其他的应用系统像网络文件系统(Network File Sys...

网络服务器 网络服务器是什么 网络服务器工作原理介绍【图文】

网络服务器 网络服务器是什么 网络服务器工作原理介绍【图文】

网络服务器,网络服务器工作原理是什么?  网络服务器是指在网络环境下运行相应的应用软件,为网上用户提供共享信息资源和各种服务的一种高性能计算机,英文名称叫做SERVER。  服务器既然是一种高性能的计算机,它的构成肯定就与我们平常所用的电脑(PC)有很多相似之处,诸如有CPU(中央处理器)、内存、硬盘、各种总线等等,只不过它是能够提供各种共享服务...

12371党建网 如何进入12371党建信息网的个人中心查询个人信息?

12371党建网 如何进入12371党建信息网的个人中心查询个人信息?

直接打开12371党建信息网,在网页的上方找到【登录/注册】按钮,进入【登录/注册】页面之后,输入您的用户名,密码等信息之后,就可以在右上角点击用户名选择【用户中心】-【个人资料】,就可以查询。以下是详细介绍:  1、打开浏览器,登录12371党建信息网,在网页右上方找到【登录/注册】按钮,点击该按钮;  2、依次输入用户名、密码、验证码,再点击...

安徽砀山新闻 安徽警方破获侵犯公民信息案 数百万条求职者信息遭窃

安徽砀山新闻 安徽警方破获侵犯公民信息案 数百万条求职者信息遭窃

新华社合肥6月11日电(记者陈诺、水金辰)记者日前从安徽省砀山县公安局了解到,当地警方破获一起跨省侵犯公民信息案,查获数百万条遭窃的网络求职者个人信息。  今年4月初,砀山居民小李报警称,自己遭遇了“刷单”诈骗。据他介绍,疫情期间他“宅”在家中没有收入,正发愁时接到电话,对方称在网上看到了他的简历,有网络“刷单”工作介绍给他。小李没有多想,便按照...

女标本23岁 患者信息:女 23岁 广东 广州

女标本23岁 患者信息:女 23岁 广东 广州

题目:患者信息:女 23岁 广东 广州 病情描述(发病时间、主要症状等):标本满意度:满意      细胞量:40% 颈管细胞:未见   化生细胞:未见 滴虫感染:未见 霉菌感染:未见 HPV感染:未见 放线菌感染:未见 疱疹病毒感染:未见   (非典型鳞状细胞,不除外低级别鳞状上皮内病变ASC-L)想得到怎样的帮助:会不会很严重,上宫颈癌吗?会...

阳江台风 【台风路径实时发布系统】台风鹦鹉阳江登陆最新消息:已移出广东

阳江台风 【台风路径实时发布系统】台风鹦鹉阳江登陆最新消息:已移出广东

“鹦鹉”远离,广州天气转好。昨日下午,番禺的天空中出现双彩虹。广州日报全媒体记者高鹤涛 通讯员邵荣兵 摄  记者昨日从气象部门获悉,今年第2号台风“鹦鹉”(热带风暴级)的中心昨日上午8时50分前后在广东阳江市海陵岛沿海登陆,成为今年首个登陆我国的台风。  中央气象台昨日继续发布台风蓝色预警、暴雨黄色预警。受台风影响,预计14日至15日,南海北部和...

家庭信息箱 家庭信息箱多少钱 家庭信息箱具体作用有哪些

家庭信息箱 家庭信息箱多少钱 家庭信息箱具体作用有哪些

装修 过 新房 的朋友应该都知道,家庭信息箱,是 综合布线 不可缺少的设备。这个箱子一般都是嵌入式安装,安装位置一般在 客厅 入口处,很多墙体里的暗管都汇集到这个信息箱里。如 电话线 、 网线 、有线电视线等。所以,今天小编要大家聊聊信息箱的具体作用,以及信息箱的价格,方便有需要的能够更精确的挑选该物品。  具体作用  1、家庭信息箱的主要作用其...

计算机信息管理专业 计算机信息管理专业介绍 [代码590106]

计算机信息管理专业 计算机信息管理专业介绍 [代码590106]

[导读]:本文讲述了计算机信息管理专业的基本信息及专业介绍,如计算机信息管理专业的课程设置、就业方向、就业前景等,还包括开设计算机信息管理专业的院校名单。计算机信息管理专业基本信息学历层次:专科专业名称:计算机信息管理专业代码:590106所属门类:电子信息所属学科:计算机类培养方向:ERP、财务、软件、司法、医学、办公文秘、财务信息、电子商务、...