今天小编给各位分享的是端口协议,全网分析HTTP协议最全的一篇文章,程序员赶紧收藏的知识,,希望对您有所帮助。如果你还想了解更多这方面的信息,请点击本站其他相关内容,共同学习吧!如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文导读目录:
1、端口协议,全网分析HTTP协议最全的一篇文章,程序员赶紧收藏
端口协议,全网分析HTTP协议最全的一篇文章,程序员赶紧收藏 ♂
全网分析协议最全的一篇文章,程序员赶紧收藏
专注于领域优质技术,欢迎关注
作者:涤生_
本篇文章篇幅比较长,先来个思维导图预览一下。
.首部字段类型
首部字段根据实际用途被分为以下种类型:
.通用首部字段(/.)
. -
通过指定首部字段 - 的指令,就能操作缓存的工作机制。
.. 可用的指令一览
可用的指令按请求和响应分类如下:
缓存请求指令
缓存响应指令
.. 表示能否缓存的指令
指令
-:
当指定使用 指令时,则明确表明其他用户也可利用缓存。
指令
-:
当指定 指令后,响应只以特定的用户作为对象,这与 指令的行为相反。缓存服务器会对该特定用户提供资源缓存的服务,对于其他用户发送过来的请求,代理服务器则不会返回缓存。
- 指令
-: -
使用 - 指令是为了防止从缓存中返回过期的资源。客户端发送的请求中如果包含 - 指令,则表示客户端将不会接收缓存过的响应。于是,“中间”的缓存服务器必须把客户端请求转发给源服务器。如果服务器中返回的响应包含 - 指令,那么缓存服务器不能对资源进行缓存。源服务器以后也将不再对缓存服务器请求中提出的资源有效性进行确认,且禁止其对响应资源进行缓存操作。
-: -=
由服务器返回的响应中,若报文首部字段 - 中对 - 字段名具体指定参数值,那么客户端在接收到这个被指定参数值的首部字段对应的响应报文后,就不能使用缓存。换言之,无参数值的首部字段可以使用缓存。只能在响应指令中指定该参数。
- 指令
-: -
当使用 - 指令时,暗示请求(和对应的响应)或响应中包含机密信息。因此,该指令规定缓存不能在本地存储请求或响应的任一部分。
注意:- 指令代表不缓存过期的指令,缓存会向源服务器进行有效期确认后处理资源;- 指令才是真正的不进行缓存。
.. 指定缓存期限和认证的指令
- 指令
-: -=(单位:秒)
- 指令的功能和 - 指令的相同,它们的不同点是 - 指令只适用于供多位用户使用的公共缓存服务器(一般指代理)。也就是说,对于向同一用户重复返回响应的服务器来说,这个指令没有任何作用。另外,当使用 - 指令后,则直接忽略对 首部字段及 - 指令的处理。
- 指令
-: -=(单位:秒)
当客户端发送的请求中包含 - 指令时,如果判定缓存资源的缓存时间数值比指定的时间更小,那么客户端就接收缓存的资源。另外,当指定 - 的值为,那么缓存服务器通常需要将请求转发给源服务器。当服务器返回的响应中包含 - 指令时,缓存服务器将不对资源的有效性再作确认,而 - 数值代表资源保存为缓存的最长时间。应用 /. 版本的缓存服务器遇到同时存在 首部字段的情况时,会优先处理 - 指令,并忽略掉 首部字段;而 /. 版本的缓存服务器则相反。
- 指令
-: -=(单位:秒)
- 指令要求缓存服务器返回至少还未过指定时间的缓存资源。
- 指令
-: -=(单位:秒)
使用 - 可指示缓存资源,即使过期也照常接收。如果指令未指定参数值,那么无论经过多久,客户端都会接收响应;如果指定了具体参数值,那么即使过期,只要仍处于 - 指定的时间内,仍旧会被客户端接收。-- 指令
-: --
表示客户端仅在缓存服务器本地缓存目标资源的情况下才会要求其返回。换言之,该指令要求缓存服务器不重新加载响应,也不会再次确认资源的有效性。
- 指令
-: -
使用 - 指令,代理会向源服务器再次验证即将返回的响应缓存目前是否仍有效。另外,使用 - 指令会忽略请求的 - 指令。
- 指令
-: -
- 指令要求所有的缓存服务器在接收到客户端带有该指令的请求返回响应之前,必须再次验证缓存的有效性。
- 指令
-: -
使用 - 指令规定无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。这样做可防止缓存或代理压缩图片等类似操作。
.. - 扩展
-: , =""
通过 - 标记(),可以扩展 - 首部字段内的指令。上述 指令即扩展的指令,如果缓存服务器不能理解这个新指令,就会直接忽略掉。
.
首部字段具备以下两个作用:
控制不再转发的首部字段
:
在客户端发送请求和服务器返回响应中,使用 首部字段,可控制不再转发给代理的首部字段,即删除后再转发(即--首部)。
管理持久连接
:
/. 版本的默认连接都是持久连接。当服务器端想明确断开连接时,则指定 首部字段的值为 。
: -
/. 之前的 版本的默认连接都是非持久连接。为此,如果想在旧版本的 协议上维持持续连接,则需要指定 首部字段的值为 -。
.
表明创建 报文的日期和时间。
: , ::
/. 协议使用在 中规定的日期时间的格式。
.
首部字段是 /. 版本之前的历史遗留字段,仅作为与 /. 的向后兼容而定义。
: -
该首部字段属于通用首部字段,但只用在客户端发送的请求中,要求所有的中间服务器不返回缓存的资源。所有的中间服务器如果都能以 /. 为基准,那直接采用 -: - 指定缓存的处理方式最为理想。但是要整体掌握所有中间服务器使用的 协议版本却是不现实的,所以,发送的请求会同时包含下面两个首部字段:
-: -
: -
.
:
首部字段 会事先说明在报文主体后记录了哪些首部字段。可应用在 /. 版本分块传输编码时。
. -
-:
规定了传输报文主体时采用的编码方式。/. 的传输编码方式仅对分块传输编码有效。
.
: /.
用于检测 协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议。
.
: . ..(/.)
为了追踪客户端和服务器端之间的请求和响应报文的传输路径。报文经过代理或网关时,会现在首部字段 中附加该服务器的信息,然后再进行转发。首部字段 不仅用于追踪报文的转发,还可避免请求回环的发生。
.
该首部字段通常会告知用户一些与缓存相关的问题的警告。
首部字段的格式如下:
:[警告码][警告的主机:端口号] "[警告内容]"([日期时间])
最后的日期时间可省略。
/. 中定义了种警告,警告码对应的警告内容仅推荐参考,另外,警告码具备扩展性,今后有可能追加新的警告码。
. 请求首部字段(/.)
.
: /, /+, /; =.
首部字段可通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用 / 这种形式,一次指定多种媒体类型。若想要给显示的媒体类型增加优先级,则使用 =[数值] 来表示权重值,用分号(;)进行分隔。权重值的范围 ~(可精确到小数点后三位),且 为最大值。不指定权重值时,默认为 。
. -
-: --, --; =.
- 首部字段可用来通知服务器用户代理支持的字符集及字符集的相对优先顺序。另外,可一次性指定多种字符集。同样使用 =[数值] 来表示相对优先级。
. -
-: ,
- 首部字段用来告知服务器用户代理支持的内容编码及内容编码的优先顺序,并可一次性指定多种内容编码。同样使用 =[数值] 来表示相对优先级。也可使用星号(*)作为通配符,指定任意的编码格式。
. -
-: -,;=.,=,;=.
告知服务器用户代理能够处理的自然语言集(指中文或英文等),以及自然语言集的相对优先级,可一次性指定多种自然语言集。同样使用 =[数值] 来表示相对优先级。
.
: ==
告知服务器用户代理的认证信息(证书值)。通常,想要通过服务器认证的用户代理会在接收到返回的 状态码响应后,把首部字段 加入请求中。共用缓存在接收到含有 首部字段的请求时的操作处理会略有差异。
.
: -
告知服务器客户端期望出现的某种特定行为。
.
: _@.
告知服务器使用用户代理的电子邮件地址。
.
:
告知服务器,请求的资源所处的互联网主机和端口号。 首部字段是 /. 规范内唯一一个必须被包含在请求内的首部字段。若服务器未设定主机名,那直接发送一个空值即可 : 。
. -
形如 - 这种样式的请求首部字段,都可称为条件请求。服务器接收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
-: ""
首部字段 -,属附带条件之一,它会告知服务器匹配资源所用的实体标记()值。这时的服务器无法使用弱 值。服务器会比对 - 的字段值和资源的 值,仅当两者一致时,才会执行请求。反之,则返回状态码 的响应。还可以使用星号(*)指定 - 的字段值。针对这种情况,服务器将会忽略 的值,只要资源存在就处理请求。
. --
--: , ::
首部字段 --,属附带条件之一,用于确认代理或客户端拥有的本地资源的有效性。它会告知服务器若 -- 字段值早于资源的更新时间,则希望能处理该请求。而在指定 -- 字段值的日期时间之后,如果请求的资源都没有过更新,则返回状态码 的响应。
. --
--: ""
首部字段 -- 属于附带条件之一。它和首部字段 - 作用相反。用于指定 -- 字段值的实体标记()值与请求资源的 不一致时,它就告知服务器处理该请求。
. -
-: ""
首部字段 - 属于附带条件之一。它告知服务器若指定的 - 字段值( 值或者时间)和请求资源的 值或时间相一致时,则作为范围请求处理。反之,则返回全体资源。下面我们思考一下不使用首部字段 - 发送请求的情况。服务器端的资源如果更新,那客户端持有资源中的一部分也会随之无效,当然,范围请求作为前提是无效的。这时,服务器会暂且以状态码 作为响应返回,其目的是催促客户端再次发送请求。这样一来,与使用首部字段 - 比起来,就需要花费两倍的功夫。
. --
--: , ::
首部字段 -- 和首部字段 -- 的作用相反。它的作用的是告知服务器,指定的请求资源只有在字段值内指定的日期时间之后,未发生更新的情况下,才能处理请求。如果在指定日期时间后发生了更新,则以状态码 作为响应返回。
. -
-:
通过 方法或 方法,发送包含首部字段 - 的请求时,该字段以十进制整数形式指定可经过的服务器最大数目。服务器在往下一个服务器转发请求之前,- 的值减 后重新赋值。当服务器接收到 - 值为 的请求时,则不再进行转发,而是直接返回响应。
. -
-:
接收到从代理服务器发来的认证质询时,客户端会发送包含首部字段 - 的请求,以告知服务器认证所需要的信息。这个行为是与客户端和服务器之间的 访问认证相类似的,不同之处在于,认证行为发生在客户端与代理之间。
.
: =-
对于只需获取部分资源的范围请求,包含首部字段 即可告知服务器资源的指定范围。接收到附带 首部字段请求的服务器,会在处理请求之后返回状态码为 的响应。无法处理该范围请求时,则会返回状态码 的响应及全部资源。
.
:
首部字段 会告知服务器请求的原始资源的 。
.
: , ; =.
首部字段 会告知服务器客户端能够处理响应的传输编码方式及相对优先级。它和首部字段 - 的功能很相像,但是用于传输编码。首部字段 除指定传输编码之外,还可以指定伴随 字段的分块传输编码的方式。应用后者时,只需把 赋值给该字段值。:
. -
-: /. ( .; ; :.) /
首部字段 - 会将创建请求的浏览器和用户代理名称等信息传达给服务器。由网络爬虫发起请求时,有可能会在字段内添加爬虫作者的电子邮件地址。此外,如果请求经过代理,那么中间也很可能被添加上代理服务器的名称。. 响应首部字段(/.)
. -
-:
首部字段 - 是用来告知客户端服务器是否能处理范围请求,以指定获取服务器端某个部分的资源。可指定的字段值有两种,可处理范围请求时指定其为 ,反之则指定其为 。
.
:
首部字段 能告知客户端,源服务器在多久前创建了响应。字段值的单位为秒。若创建该响应的服务器是缓存服务器, 值是指缓存后的响应再次发起认证到认证完成的时间值。代理创建响应时必须加上首部字段 。
.
: "-"
首部字段 能告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。服务器会为每份资源分配对应的 值。另外,当资源更新时, 值也需要更新。生成 值时,并没有统一的算法规则,而仅仅是由服务器来分配。 中有强 值和弱 值之分。强 值,不论实体发生多么细微的变化都会改变其值;弱 值只用于提示资源是否相同。只有资源发生了根本改变,产生差异时才会改变 值。这时,会在字段值最开始处附加 /: : /"-"。
.
:
使用首部字段 可以将响应接收方引导至某个与请求 位置不同的资源。基本上,该字段会配合 : 的响应,提供重定向的 。几乎所有的浏览器在接收到包含首部字段 的响应后,都会强制性地尝试对已提示的重定向资源的访问。
. -
-: =" "
首部字段 - 会把由代理服务器所要求的认证信息发送给客户端。它与客户端和服务器之间的 访问认证的行为相似,不同之处在于其认证行为是在客户端与代理之间进行的。
. -
-:
首部字段 - 告知客户端应该在多久之后再次发送请求。主要配合状态码 响应,或 响应一起使用。字段值可以指定为具体的日期时间(, :: 等格式),也可以是创建响应后的秒数。
.
: /.. () /..
首部字段 告知客户端当前服务器上安装的 服务器应用程序的信息。不单单会标出服务器上的软件应用名称,还有可能包括版本号和安装时启用的可选项。
.
: -
首部字段 可对缓存进行控制。源服务器会向代理服务器传达关于本地缓存使用方法的命令。从代理服务器接收到源服务器返回包含 指定项的响应之后,若再要进行缓存,仅对请求中含有相同 指定首部字段的请求返回缓存。即使对相同资源发起请求,但由于 指定的首部字段不相同,因此必须要从源服务器重新获取资源。
. -
-: =" "
首部字段 - 用于 访问认证。它会告知客户端适用于访问请求 所指定资源的认证方案( 或是 )和带参数提示的质询()。
. 实体首部字段(/.)
.
: ,
首部字段 用于通知客户端能够支持 - 指定资源的所有 方法。当服务器接收到不支持的 方法时,会以状态码 作为响应返回。与此同时,还会把所有能支持的 方法写入首部字段 后返回。
. -
-:
首部字段 - 会告知客户端服务器对实体的主体部分选用的内容编码方式。内容编码是指在不丢失实体信息的前提下所进行的压缩。主要采用这 种内容编码的方式(、、、)。
. -
-: -
首部字段 - 会告知客户端,实体主体使用的自然语言(指中文或英文等语言)。
. -
-:
首部字段 - 表明了实体主体部分的大小(单位是字节)。对实体主体进行内容编码传输时,不能再使用 -首部字段。
. -
-:
首部字段 - 给出与报文主体部分相对应的 。和首部字段 不同,- 表示的是报文主体返回资源对应的 。
. -
-: ==
首部字段 - 是一串由 算法生成的值,其目的在于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
. -
-: -/
针对范围请求,返回响应时使用的首部字段 -,能告知客户端作为响应返回的实体的哪个部分符合范围请求。字段值以字节为单位,表示当前发送部分及整个实体大小。
. -
-: /; =-
首部字段 - 说明了实体主体内对象的媒体类型。和首部字段 一样,字段值用 / 形式赋值。参数 使用 -- 或 - 等字符集进行赋值。
.
: , ::
首部字段 会将资源失效的日期告知客户端。缓存服务器在接收到含有首部字段 的响应后,会以缓存来应答请求,在 字段值指定的时间之前,响应的副本会一直被保存。当超过指定的时间后,缓存服务器在请求发送过来时,会转向源服务器请求资源。源服务器不希望缓存服务器对资源缓存时,最好在 字段内写入与首部字段 相同的时间值。
. -
-: , ::
首部字段 - 指明资源最终修改的时间。一般来说,这个值就是 - 指定资源被修改的时间。但类似使用 脚本进行动态数据处理时,该值有可能会变成数据最终修改时的时间。
. 为 服务的首部字段
. -
-: =; =, :: ; =/;
下面的表格列举了 - 的字段值。
.. 属性
的 属性指定浏览器可发送 的有效期。当省略 属性时,其有效期仅限于维持浏览器会话()时间段内。这通常限于浏览器应用程序被关闭之前。另外,一旦 从服务器端发送至客户端,服务器端就不存在可以显式删除 的方法。但可通过覆盖已过期的 ,实现对客户端 的实质性删除操作。.. 属性
的 属性可用于限制指定 的发送范围的文件目录。
.. 属性
通过 的 属性指定的域名可做到与结尾匹配一致。比如,当指定 . 后,除. 以外, 或 .. 等都可以发送 。因此,除了针对具体指定的多个域名发送 之 外,不指定 属性显得更安全。.. 属性
的 属性用于限制 页面仅在 安全连接时,才可以发送 。
.. 属性
的 属性是 的扩展功能,它使 脚本无法获得 。其主要目的为防止跨站脚本攻击(- ,)对 的信息窃取。通过上述设置,通常从 页面内还可以对 进行读取操作。但使用 的 . 就无法读取附加 属性后的 的内容了。因此,也就无法在 中利用 劫持 了。.
: =
首部字段 会告知服务器,当客户端想获得 状态管理支持时,就会在请求中包含从服务器接收到的 。接收到多个 时,同样可以以多个 形式发送。
. 其他首部字段
首部字段是可以自行扩展的。所以在 服务器和浏览器的应用上,会出现各种非标准的首部字段。
以下是最为常用的首部字段。
. --
--:
首部字段 -- 属于 响应首部,用于控制网站内容在其他 网站的 标签内的显示问题。其主要目的是为了防止点击劫持()攻击。首部字段 -- 有以下两个可指定的字段值:
:拒绝:仅同源域名下的页面(---)匹配时许可。(比如,当指定 页面为 时,那么 . 上所有页面的 都被允许可加载该页面,而 . 等其他域名的页面就不行了). --
--:
首部字段 -- 属于 响应首部,它是针对跨站脚本攻击()的一种对策,用于控制浏览器 防护机制的开关。首部字段 -- 可指定的字段值如下:
:将 过滤设置成无效状态 :将 过滤设置成有效状态.
:
首部字段 属于 请求首部,其中 是 的简称,意为拒绝个人信息被收集,是表示拒绝被精准广告追踪的一种方法。首部字段 可指定的字段值如下:
:同意被追踪 :拒绝被追踪由于首部字段 的功能具备有效性,所以 服务器需要对 做对应的支持。
.
: ="
首部字段 属于 响应首部,通过利用 ( ,在线隐私偏好平台)技术,可以让 网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的。
要进行 的设定,需按以下操作步骤进行:
步骤 :创建 隐私步骤 :创建 隐私对照文件后,保存命名在 //.步骤 :从 隐私中新建 后,输出到 响应中七、 响应状态码(重点分析). 状态码概述
状态码负责表示客户端 请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。 状态码如 ,以 位数字和原因短语组成。数字中的第一位指定了响应类别,后两位无分类。不少返回的响应状态码都是错误的,但是用户可能察觉不到这点。比如 应用程序内部发生错误,状态码依然返回 。. 状态码类别
我们可以自行改变 中定义的状态码或者服务器端自行创建状态码,只要遵守状态码的类别定义就可以了。
. 常用状态码解析
状态码种类繁多,数量达几十种。其中最常用的有以下 种,一起来看看。
.
表示从客户端发来的请求在服务器端被正常处理了。
.
代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分。另外,也不允许返回任何实体的主体。一般在只需要从客户端向服务器端发送消息,而服务器端不需要向客户端发送新消息内容的情况下使用。.
表示客户端进行了范围请求,而服务器成功执行了这部分的 请求。响应报文中包含由 - 首部字段指定范围的实体内容。
.
永久性重定向。表示请求的资源已被分配了新的 。以后应使用资源现在所指的 。也就是说,如果已经把资源对应的 保存为书签了,这时应该按 首部字段提示的 重新保存。
.
临时性重定向。表示请求的资源已被分配了新的 ,希望用户(本次)能使用新的 访问。和 状态码相似,但 状态码代表资源不是被永久移动,只是临时性质的。换句话说,已移动的资源对应的 将来还有可能发生改变。.
表示由于请求的资源存在着另一个 ,应使用 方法定向获取请求的资源。 和 状态码有着相同的功能,但 状态码明确表示客户端应采用 方法获取资源,这点与 状态码有区别。.
表示客户端发送附带条件的请求时,服务器端允许请求访问的资源,但未满足条件的情况。 状态码返回时,不包含任何响应的主体部分。 虽然被划分到 类别中,但和重定向没有关系。.
临时重定向。该状态码与 有着相同的含义。
.
表示请求报文中存在语法错误。当错误发生时,需修改请求的内容后再次发送请求。另外,浏览器会像 一样对待该状态码。.
表示发送的请求需要有通过 认证( 认证、 认证)的认证信息。另外,若之前已进行过 次请求,则表示用户认证失败。返回含有 的响应必须包含一个适用于被请求资源的 - 首部用以质询()用户信息。.
表明对请求资源的访问被服务器拒绝了。服务器端没有必要给出详细的拒绝理由,当然也可以在响应报文的实体主体部分对原因进行描述。
.
表明服务器上无法找到请求的资源。除此之外,也可以在服务器端拒绝请求且不想说明理由的时候使用。
.
表明服务器端在执行请求时发生了错误。也可能是 应用存在的 或某些临时的故障。
.
表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状况需要的时间,最好写入 - 首部字段再返回给客户端。
八、 报文实体. 报文实体概述
. 传输编码
内容编码是对报文的主体进行的可逆变换,是和内容的具体格式细节紧密相关的。
传输编码也是作用在实体主体上的可逆变换,但使用它们是由于架构方面的原因,同内容的格式无关。使用传输编码是为了改变报文中的数据在网络上传输的方式。
内容编码和传输编码的对比
. 分块编码
分块编码把报文分割成若干已知大小的块。块之间是紧挨着发送的,这样就不需要在发送之前知道整个报文的大小了。分块编码是一种传输编码,是报文的属性。
分块编码与持久连接
若客户端与服务器端之间不是持久连接,客户端就不需要知道它在读取的主体的长度,而只需要读取到服务器关闭主体连接为止。
当使用持久连接时,在服务器写主体之前,必须知道它的大小并在 - 首部中发送。如果服务器动态创建内容,就可能在发送之前无法知道主体的长度。
分块编码为这种困难提供了解决方案,只要允许服务器把主体分块发送,说明每块的大小就可以了。因为主体是动态创建的,服务器可以缓冲它的一部分,发送其大小和相应的块,然后在主体发送完之前重复这个过程。服务器可以用大小为 的块作为主体结束的信号,这样就可以继续保持连接,为下一个响应做准备。
来看看一个分块编码的报文示例:
分块编码的报文
.多部分媒体类型
中的 (多部分)电子邮件报文中包含多个报文,它们合在一起作为单一的复杂报文发送。每一部分都是独立的,有各自的描述其内容的集,不同部分之间用分界字符串连接在一起。
相应得, 协议中也采纳了多部分对象集合,发送的一份报文主体内可包含多种类型实体。
多部分对象集合包含的对象如下:
/-:在 表单文件上传时使用。/:状态码 响应报文包含了多个范围的内容时使用。. 范围请求
假设你正在下载一个很大的文件,已经下了四分之三,忽然网络中断了,那下载就必须重头再来一遍。为了解决这个问题,需要一种可恢复的机制,即能从之前下载中断处恢复下载。要实现该功能,这就要用到范围请求。
有了范围请求, 客户端可以通过请求曾获取失败的实体的一个范围(或者说一部分),来恢复下载该实体。当然这有一个前提,那就是从客户端上一次请求该实体到这一次发出范围请求的时间段内,该对象没有改变过。例如:
/. /.
:
: =-
···
实体范围请求示例
上面示例中,客户端请求的是文档开头字节之后的部分。
九、与 协作的 服务器通信时,除客户端和服务器外,还有一些用于协助通信的应用程序。如下列出比较重要的几个:代理、缓存、网关、隧道、 代理。
.代理
代理
代理服务器是 安全、应用集成以及性能优化的重要组成模块。代理位于客户端和服务器端之间,接收客户端所有的 请求,并将这些请求转发给服务器(可能会对请求进行修改之后再进行转发)。对用户来说,这些应用程序就是一个代理,代表用户访问服务器。
出于安全考虑,通常会将代理作为转发所有 流量的可信任中间节点使用。代理还可以对请求和响应进行过滤,安全上网或绿色上网。
. 缓存
浏览器第一次请求:
浏览器第一次请求
浏览器再次请求:
浏览器再次请求
缓存或代理缓存是一种特殊的 代理服务器,可以将经过代理传输的常用文档复制保存起来。下一个请求同一文档的客户端就可以享受缓存的私有副本所提供的服务了。客户端从附近的缓存下载文档会比从远程 服务器下载快得多。
. 网关
/ 网关
网关是一种特殊的服务器,作为其他服务器的中间实体使用。通常用于将 流量转换成其他的协议。网关接收请求时就好像自己是资源的源服务器一样。客户端可能并不知道自己正在跟一个网关进行通信。
. 隧道
/ 隧道
隧道是会在建立起来之后,就会在两条连接之间对原始数据进行盲转发的 应用程序。 隧道通常用来在一条或多条 连接上转发非 数据,转发时不会窥探数据。
隧道的一种常见用途就是通过 连接承载加密的安全套接字层()流量,这样 流量就可以穿过只允许 流量通过的防火墙了。
. 代理
自动搜索引擎“网络蜘蛛”
代理是代表用户发起 请求的客户端应用程序。所有发布 请求的应用程序都是 代理。
来源:简书 链接:
端口协议,全网分析HTTP协议最全的一篇文章,程序员赶紧收藏的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于端口协议,全网分析HTTP协议最全的一篇文章,程序员赶紧收藏的信息别忘了在本站进行查找喔。
还没有评论,来说两句吧...