HTTP HTTPS协议、内容发布及分发基本机制_第1页
HTTP HTTPS协议、内容发布及分发基本机制_第2页
HTTP HTTPS协议、内容发布及分发基本机制_第3页
HTTP HTTPS协议、内容发布及分发基本机制_第4页
HTTP HTTPS协议、内容发布及分发基本机制_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、HTTP HTTPS协议、内容发布与分发基本机制1.URI是一类更通用的资源标识符,URL实际上是它的一个子集。URI是一个通用的概念,由两个主要的子集URL和URN构成。URL是通过描述资源的位置来标识资源的,URN是通过名字来标识资源的,与其当前所处位置无关。HTTP规范将更通用的概念URI作为其资源标识符。但实际上HTTP应用程序处理的只是URI的子集URL。 2.连接管理:HTTP连接实际上就是TCP连接和一些使用连接的规则。TCP为HTTP 提供了一条可靠的比特传输管道串行连接并行连接持久连接 Keep-alive管道化连接关闭连接  3.web服务器服

2、务器应该实现的基本任务:接收客户端连接:处理新连接 ,识别客户端主机名接收请求报文:从网络连接中中读取请求报文,转换成内部数据结构处理,如字典连接的输入/输出处理结构: 单线程web服务器,多进程及多线程web服务器,复用I/O的服务器(同时监听所有连接上的活动,根据状态变化绑定线程和进程),复用的多线程I/O结构web服务器。处理请求:对资源的映射和访问(静态映射访问和动态内容的映射)构建响应:(响应实体,MIME类型,重定向)发送响应:记录事务日志: 4.代理:HTTP代理服务器是代表客户端完成事务处理的中间人,既是web服务器,又是web客户端。代理与网关的区别,代理是连接两个

3、或多个使用相同协议的应用程序,而网关连接的是两个或多个使用不同协议的端点,扮演的是协议转换器角色文档访问控制安全防火墙web缓存反向代理:假扮web服务器,被称作替代物或反向代理,接收请求转发给其他服务器的通信,按需定位所请求的内容,提高访问web服务内容的性能内容路由器转码器匿名代理(删除请求身份特性,如user-agent之类的) 代理服务器的部署: 出口代理 访问入口代理反向代理网络交换代理 代理如何获取流量的:(使客户端流量流向代理)修改客户端,将客户端配置为使用代理服务器: 手工配置pac文件:小型的javascript文件,可以再运

4、行过程中 计算代理设置,是一种更动态的代理配置解决方案。访问每个文档时,js函数都会选择恰当的代理服务器。WPAD协议:WPAD协议的算法会使用发现机制的逐级上升策略自动为浏览器查找合适的PAC 文件。 修改网络 基础设施上的交换设备及路由设备,对HTTP流量进行拦截,导入一个代理(这种代理称为拦截代理)修改DNS的命名空间修改web服务器(重定向到代理上去) Via首部:该字段列出了与报文途径的每个中间节点(代理或网关)有关的信息。报文每经过一个节点,都必须将这个中间节点添加到Via列表的末尾 Server响应首部字段对原始服务器使用的软件进行了描述,如果响应报

5、文是代理转发的,一定要确保代理没有修改Server首部 TRACE 方法:跟踪经代理链传输的请求报文,观察报文经过了哪些代理,以及每个代理是如何对请求报文进行修改的。TRACE响应的Content-Type为message/http,状态为200 OKMax-Forwards (最大转发次数 )首部来限制TRACE和OPTIONS请求所经过的代理跳数 缓存: 缓存的处理步骤:1.接收 :缓存从网络中读取抵达的请求报文2.解析:缓存对报文进行解析,提取首部和URL3.查询:查询是否有本地副本可用,没有,就获取一份副本(并将其保存在本地)4.新鲜度检测:查看已经缓存副

6、本是否足够新鲜,如果不是就询问服务器是否有任何更新5.创建响应:缓存会用新的首部和已缓存的主体来构建一条响应报文6.发送:缓存通过网络将响应发回给客户端7.日志:缓存可选地创建一个日志文件条目来描述这个事务 如何保持副本的新鲜: HTTP有一些简单的机制可以在不要求服务器记住有哪些缓存拥有其文档副本的情况下,保持已缓存的数据与服务器的数据之间充分一致。HTTP将这些简单的机制称为文档过期和服务器再验证文档过期:通过特殊的HTTP Cache-Control首部和Expire首部,HTTP让原始服务器向每个文档附加了一个“过期日期”。过期日期首部:Expires 首部 

7、60; (HTTP/1.0+)Cache-Control : max-age 首部:max-age 最大试用期,第一次生成文档到文档不再新鲜为止, 以秒为单位以上两者所做的事情本质上市一样的,但是Cache-Control使用的是相对日期,绝对日期依赖于计算机时钟的正确设置,因此倾向于使用新的Cache-Control首部。缓存只有在文档过期时它才与服务器进行再验证:用条件方法进行再验证:条件请求首部:If-Modified-Since: Date 再验证  如果从指定日期之后文档被修改过了,就执行请求的方法,可以与Last-Modified服务器响应首部配合使用If-None-Ma

8、tch:实体标签再验证 缓存控制:使用期 和 新鲜度 算法 -集成点:网关、隧道及中继 网关(gateway):为了解决单个应用程序无法处理所有这些能想到的资源的问题。开发者提出了网关的概念。网关可以作为某种翻译器使用,它抽象出了一种能够到达资源的方法。网关是资源和应用程序之间的粘合剂。应用程序可以(通过HTTP或其他已定义的接口)请求网关来处理某条请求,网关可以提供一条响应。网关可以向数据库发送查询语句,或者生成动态的内容,就像一个门一样:进去一条请求,出来一个响应。 协议网关:HTTP/*:服务器端Web网关,请求流入原始服务器时,服务器端web网关

9、会将客户端HTTP请求转换为其他协议。HTTP/HTTPS:服务器端安全网关HTTPS/HTTP:客户端安全加速器网关,这些网关位于web服务器之前,通常作为不可见的拦截网关或反向代理使用。它们接收完全的HTTPS流量,并对其进行解密,并向web服务器发送普通的HTTPl流量。 资源网关:应用程序服务器,是最常见的服务器端网关,会将目标服务器与网关结合在一个服务器中实现,与客户端通过http进行通信,并与服务器端的应用程序相连。应用程序服务器 与 服务器上的应用程序 通过 网关应用编程接口相连,例如 wsgi (python web服务器网关接口)CGI:第一个流行的应用程序网关AP

10、I 就是通用网关接口(Common Gateway Interface CGI),早期的网关接口(CGI)实现过程中,服务器和网关是相互独立的应用程序,因此它们的责任是分得很清楚的,这个简单的协议(输入请求 ,转交,响应),是最常用服务器扩展接口CGI的本质 CGI 应用程序是独立于服务器的,所以可以用任意语言实现。CGI在服务器和众多的资源类型之间提供了一种简单的、函数形式的粘合方式,用来处理各种需要的转换。这个接口还能很好地保护服务器,防止一些糟糕的扩展对它造成的破坏(如果这些扩展直接与服务器相连,造成的错误可能会引发服务器崩溃)但是这种分离会造成性能的崩溃,为每条CGI请求引发

11、一个新进程的开销是很高的,会限制那些使用CGI的服务器的性能,并且会加重服务端机器资源的负担。 服务器扩展API,会绑定服务器自身的结构上,如果基于某种协议实现 ,api才可移植到不同的服务器 ,如wsgi-HTTP可以作为一种连接应用程序的基础软件来使用,在将应用程序连接起来的过程中,一个更为棘手的问题是在两个应用程序之间进行协议接口的协商,以便应用程序可以进行数据的交换。应用程序之间要配合工作,所要交互的信息比HTTP首部所能表达的信息要复杂得多。web服务 ,就是构建在标准的web技术(比如HTTP)之上的。可以用XML通过SOAP来交换信息。XML 提供了一种创建数据对象的定

12、制信息SOAP 简单对象访问协议,是向HTTP报文中添加XML信息的标准方式 - Web机器人:web爬虫:web爬虫是一种机器人,它们会递归地对各种信息性web站点进行遍历,获取第一个页面,然后获取那个页面指向的所有页面,以此类推。递归地追踪这些web链接的机器人会沿着HTML链接创建网络的“爬行”。从根集开始:爬虫开始访问的URL初始集合被称作为根集。 HTML的robot-control元标签robot.txt的缺点就是它是web站点管理员所有的,而不是各部分内容的作者所有的,HTML页面的作者有一种更直接的方式可以限制机器人访问那些独立的页面,可以在HTM

13、L文档中添加robot-contro元l标签  客户端识别与Cookie机制1.http首部(承载用户的相关信息)FromUser-agentReferer2.客户端IP地址(不可靠)3.用户登录(HTTP认证机制)4.胖URL5.cookie(是当前识别用户,保持持久会话的最好方式)cookie的类型:会话cookie 、持久cookie之间的唯一区别在于过期时间 cookie的基本思想就是让浏览器积累一组服务器特有的信息,以后每次访问服务器时都将这些信息提供给他。浏览器要负责存储cookie信息 cookie的域属性:产生cookie的服务器可以向s

14、et-cookie响应首部添加一个Domain属性来控制哪些站点可以看到那个cookie.cookie的路径属性:这个属性列出的URL路径前缀下所有的cookie都是有效的cookie的成分:现在使用的Cooke规范有两个不同的版本,cookies version 0和 cookies version1 ,后者是对前者的扩展,但没有前者应用广泛 cookie vesion 0Set-Cookie首部属性,各项用分号隔开NAME=VALUE  ,在后继对站点的访问会将其送会给web服务器Expires ,可选,指定一个日期,定义cookie的实际生存期,过期则不在存储或发布这

15、个cookie,不指定,cookie则在用户会话结束时(关闭浏览器)过期Domain, 可选,浏览器只向指定的域中的服务器主机发送cookie,这样服务器就将cookie限制在了特定的域中。如果没有指定,就默认为产生Set-Cookie响应的服务器主机名Path ,可选,可以为服务器上特定的文档分配Cookie,如果Path属性是一个URL 路径前缀,就可以附加一个cookie.如果没有指定路径,就将其设置为产生Set-Cookie响应的URL路径。Secure ,可以,如果包含了这一属性,就只有在http使用SSL安全连接时,才会发送cookieCookie首部:客户端发送请求,会将所有与域

16、、路径和安全过滤器相匹配的未过期Cookie都发送给这个站点,所有的Cookie都被组合到Cookie请求首部字段值中。 Cookie version 1这个版本1标准引入了Set-cookie2首部和cookie2首部,但他也能与版本0 进行互操作(详细参考RFC2965) cookie与会话跟踪:可以用cookie在用户与某个web站点进行多项事务处理时对用户进行跟踪。 -HTTP基本认证机制 (Basic Authentication)HTTP 提供了一个原生的质询/响应(challenge / response)框架HTTP定义两个官方认证协议:基本认证和

17、摘要认证基本认证的安全缺陷:密码是以明文进行传输的即使密码以难以解密的方式加密,仍然可以以重放的方式取得授权将基本认证与加密数据传输(例如SSL)配合使用,会使基本认证更安全 摘要认证:用摘要保护密码,客户端不会发送密码,而是会发送一个“指纹”或密码的“摘要”,这是密码的不可逆扰码。客户端和服务器都知道这个密码,因此服务器可以验证所提供的摘要是否与密码相匹配。用随机数防止重放攻击随机数是在WWW-Authentication质询中从服务器传给客户端的摘要认证的核心是对公共信息、保密信息、和有时限的随机数值这个组合的单向摘要-安全HTTP数字加密密码:密码学是对报文进行编/解码的机制与

18、技巧。密码学基于一种名为密码的秘密代码。密码是一种编码方案,一种有特殊的报文编码方式和一种稍后使用的相应解码方式的结合体。加密之前的原始报文称为明文。使用了密码之后的编码报文成文密文。密码参数称为密钥数字密钥只是一些数字,是编/解码算法的输入。编码算法就是一些函数,这些函数会读取一块数据,并根据算法和密钥值对其进行编/解码对称密钥加密技术 symmetric-key :在编码时使用的密钥值和解码时一样。流行的对称密钥加密算法包括:DES、Triple-DES、RC2和RC4好的加密算法会迫使攻击者试遍每一个可能的密钥,才能破解代码。暴力尝试所有的密钥值称为枚举攻击。可用密钥值的数量取决于密钥中

19、的位数,以及可能的密钥中有多少是有效的。长密钥对密码安全有着非常重要的影响。对称密钥加密技术的缺点之一就是发送者和接收者在互相对话之前,一定要有一个共享的保密密钥。公开密钥加密技术:没有为每对主机使用单独的加密/解密密钥。而是使用了两个非对称密钥:一个用来对主机报文编码,另一个用来解码,编码密钥是众所周知的,但是只有主机才知道私有的解密密钥数字签名:除了加/解密报文之外,还可以用加密系统对报文进行签名(sign),以说明是谁编写的报文,同时证明报文未被篡改过,这种技术称为数字签名。数字签名是附加在报文上的特殊加密校验码使用数字签名的好处:签名可以证明是作者编写了这条报文,只有作者才会有最机密的

20、私有密钥。因此只有作者才会计算这些校验和。签名可以防止报文被篡改,如果被修改,校验和就不再匹配了。数字签名通常是用非对称公开密钥技术产生的,因为只有所有者才知道其私有密钥,所以可以将作者的私有密钥当作一种”指纹“使用。数字证书:certs 服务器证书中包含很多字段web站点的名称和主机名web站点的公开密钥签名颁发机构的名称来自签名颁发机构的签名 HTTPS:https协议与一组强大的对称、非对称和基于证书的加密技术结合在一起HTTPS就是在安全的传输层上发送的HTTP。在将HTTP报文发送给TCP之前,先将其发送给一个安全层,对其进行加密。HTTP安全层是通过SSL及其现

21、代替代协议TLS来实现的,(通常用术语SSL来表示SSL或者TLS)对Web服务器发起请求时,我们需要一种方式来告知web服务器去执行HTTP的安全协议版本,这是在URL的方案中实现的如果URL的方案为https,客户端就会打开一条到服务器端口443(默认情况下)的连接,然后与服务器握手,以二进制格式与服务器交换一些SSL安全参数,附上加密的HTTP命令在发送加密的HTTP报文之前,客户端和服务器要进行一次SSL握手,在这个握手过程中,要完成以下工作:交换协议版本号选择一个两端都了解的密码对两端的省份进行认证生成临时的会话密钥,以便加密信道在通过网络传输任何已加密的HTTP数据之前,SSL已经

22、发送了一组握手数据来建立通信连接了。 SSL握手思想(简化版本)1.客户端发送可供选择的密码并请求证书2.服务器发送选中的密码和证书3.客户端发送保密信息,客户端和服务器生成密钥4.客户端和服务器互相告知,开始加密过程。服务器证书: SSL支持双向证书,将服务器证书承载回客户端,再将客户端的证书回送给服务器,而现在浏览时并不经常使用客户端证书。而安全HTTPS事务总是要求使用服务器证书的。服务器证书是一个显示了组织的名称、地址、服务器DNS域名以及其他信息的X.509 v3派生证书。 站点证书的有效性验证:日期检测签名颁发者可信度检测签名检测站点身份检测OpenS

23、SL OpenSSL 是SSL和TLS最常见的开源实现,OpenSSL项目目标是开发一个强壮的、具有完备功能的商业级工具集,以实现SSL和TLS协议以及一个全功能的通用加密库。=实体、编码、国际化实体首部:Content-Length:实体的大小,报文中实体主体的字节大小,这个大小是包含了所有内容编码的,例如如果使用了gzip压缩,该首部就是压缩后的大小。除非使用了分块编码,否则该首部是带有实体主体报文必须使用的。使用Content-Length首部是为了能够检测出服务器崩溃而导致的报文截尾,并对共享持久连接的多个报文进行正确的分段 检测截尾:没有Conten-Length

24、的话,客户端无法区分到底是报文结束时正常的连接关闭,还是报文传输过中由于服务器崩溃而导致的连接关闭,客户端需要通过Conten-Length来检测报文截尾.Content-Length与持久连接:Content-length对于持久连接是必不可少的,因为连接是持久的,客户端无法依赖连接关闭来判别报文的结束,如果没有content-length,HTTP应用程序就无法知道某个实体主体在哪儿结束。在采用分块编码(chunked encoding)时,使用持久连接可以没有Content-Length首部。内容编码:实体摘要:服务器使用Content-MD5 首部发送对实体运行MD5算法的结果,生成一

25、个数据的校验和,这样接收方可以通过检验这个校验和来捕获所有意外的实体修改了,只有产生响应的原始服务器可以计算并发送Content-MD5首部,中间缓存或代理不应该修改或添加这个首部,否则会验证端到端完整性这个目的相冲突。Content-MD5首部是在对内容做了所有需要的内容编码之后,还没有做任何传输编码之前,计算出来的。为了验证报文的完整性,客户端必须先进行传输编码的解码,然后计算所得到的未进行传输编码的实体主体的MD5媒体类型和字符集:Content-type 首部字段说明了实体主体的MIME类型。MIME类型是标准化的名字,用以说明实体基本媒体类型。客户端应用程序使用MIME类型来解释和处

26、理其内容。MIME类型是由一个主媒体类型后面跟一条斜线以及一个子类型组成,子类型用于进一步描述媒体类型内容编码:是和内容的具体格式细节紧密相关Conten-encoding:传输编码:使用传输编码是为了改变报文中的数据在网络上的传输方式,同内容的格式无关经过内容编码的报文,只是对报文的实体部分进行了编码,而对于经过传输编码的报文来说,编码作用在整个报文上,报文自身的结构发生了 变化。Transfer-encoding:告知接收方为了可靠地传输报文,已经对其进行了何种编码TE:用在请求首部中,告知服务器可以使用哪些传输编码扩展。 有条件的请求:仅当资源改变时才请求副本,有条件的请求时标

27、准的HTTP请求报文,但仅当某个特定条件为真时才执行。有条件请求是通过以“IF-”开头的有条件的首部来实现的。 范围请求:Accept-Range:bytesRange:HTTP客户端可以通过请求曾获取失败的实体的一个范围 (或者说一部分),来恢复下载该实体。前提是从客户端上一次请求该实体到这次发出范围请求的时间段内,该对象没有改变过。Range首部在流行的点对点(Peer-to-Peer,P2P)文件共享客户端软件中得到广泛应用,它们从不同的对等实体同时下载多媒体文件的不同部分。 =国际化:HTTP字符集的值说明如何把实体内容的二进制码转换为特定字母表中的字符,每个字符集

28、标记都命名了一种把二进制码转换为字符的算法(反之亦然)。把二进制编码转换为字符要经过两个步骤:1.文档中的二进制码被转换成字符代码,它表示了特定编码字符集中某个特定编号的字符。2.字符代码用于从编码的字符集中选择特定的元素。MIME中的charset标记综合描述了字符编码方案和编码后的字符集映射关系。国际化字符系统的关键目标是把语义(字母)和表示(图形化的显示形式)隔离开来。HTTP只关心字符数据和相关语言及字符集标签的传输,字符形状的显示是由用户的图形显示软件(包括浏览器、操作系统、字体等)完成的。字符集术语:字符:是指字母、数字、标点、表意文字、符号,或其他文本形式的书写“原子”,由统一字

29、符集(Universal Character Set,UCS,它的非正式名字是Unicode)首创,为多种语言的很多字符开发了一系列标准化的文本名称字形:描述字符的笔画图案或唯一的图形化形状。编码后的字符:分配给字符的唯一数字编号代码空间:计划用于字符代码值的整数值范围代码宽度:每个(固定大小的)字符代码所用的位数字符库:特定的工作字符集(全体字符的一个子集)编码后的字符集:组成字符库(从全球的字符中选出若干字符)的已编码字符集,并为每个字符分配代码空间中的一个代码。即它把数字化的字符代码映射为实际的字符。字符编码方案:把数字化的字符代码编码成一系列二进制码(并能相应地反向解码)的算法。字符编

30、码方案可用来减少识别字符所需要的数据总量(压缩),解决传输限制、统一重叠编码字符集.字符编码方案规定如何让把字符的代码数字打包装入内容比特,以及在另一端如何将其解包回字符。字符编码方案有以下3种类型:固定宽度可变宽度(无模态)可变宽度(有模态)常见的编码方案:8位固定宽度恒等编码:只能支持有256个字符代码范围的字符集UTF-8:是一种流行的为UCS设计的字符编码方案,UTF-8表示UCS变换格式,为字符代码值使用的是无模态的变宽编码,第一字节的高位表示编码后的字符所用的字节数,所需的每个后续字节都含有六位的代码值。语言标记与HTTP:Content-Language: 描述实体的目标受众语言=内容协商 与 转码:客户端驱动的协商服务端驱动的协商透明协商(代理驱动) =内容发布与分发web主机托管 对内容资源的存储、协调以及管理的职责统称为web主机托管。主机托管web服务器的主要功能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论