http权威指南第三章
重点:
http报文是在http应用程序之间发送的数据块。这些数据块以一些文本形式的元信息(meta-information)开头,这些信息报文描述了报文的内容及含义,后面跟着可选数据部分。这些报文在客户端、服务器和代理之间流动。术语 流入 流出 上游 下游 都是用来描述报文方向的。
http使用流入(inbound)和流出(outbound)来描述事务处理(transation)的方向。客户端发向服务器为流入,服务器发向客户端称为流出。
http会像河水一样流动。不管是请求报文还是响应报文,所有的报文都会向下游(downstream)流动。所有报文发送者都在接受者的上游(upstream)。
http报文是简单的格式化数据块。每条报文都包含三个部分:对报文描述的起始行(start line),包含属性的首部(header)块,以及可选的,包含数据主体(body)部分。
起始行和首部就是由行分隔的ascll文本。每行以回车换行符结束。主体是一个可选的数据块。与起始行不同的是,主体可以包含文本或二进制数据,也可以为空。
所有的http报文可以分为两类:请求报文(request message)和响应报文(response message)请求报文会向web服务器请求一个动作。响应报文会将请求的结果返回给客户端。
请求报文格式
<method><request-url><version>
<headers>
<entity-body>
响应报文格式
<version><status><reason-phrase>
<headers>
<entity-body>
所有的http报文都以一个起始行作为开始。请求报文的起始行说明了要做些什么,响应报文起始行说明发生了什么。
1请求行
请求报文请求服务器对资源进行一些操作。请求报文的起始行,或者称为请求行,包含了一个方法和一个请求url,这个方法描述了服务器应该执行的操作,url描述了要对那个资源执行这个方法。请求行还包含http版本,在http10以前不要求请求行包含http版本号。
2响应行
响应报文承载了状态信息和操作产生的所有结果数据,将其返回给客户端。响应报文的起始行,或者称为响应行,包含类响应报文的http版本。数字状态码,以及描述操作状态的文本形式的原因短语。
3方法
请求的起始行以方法作为开始,方法用来告知服务器要做些什么。
4状态码
状态码用来告诉客户端发生了什么,状态码位于起始行的行中。
5原因短语
响应起始行的最后一个组件,为状态码提供了一个文本解释。http没有规定原因短语以何种方式出现。
6版本号
版本号说明了应用程序支持的最高版本,但http10在解释包含http11的响应时,会认为这个响应是个11响应。
版本号不会被当做分数处理,而是比较每个数字,http/222就比http/23高,因为22比3大。
1首部分类
2首部延续行
将长的首部分为多行可以提高可读性,多出来的每一行至少要有一个空格或制表符
http报文的第三部分是可选的实体主体部分。实体的主体部分是http报文的负荷,就是http要传输的内容。
http/09也由请求和响应组成,但请求中只包含方法和请求url,响应中只包含实体,它没有版本信息,没有状态码或原因短语,也没有首部。
不是每个服务器都实现了所有这些方法,如果一台服务器要与http11兼容,只要实现get、head方法就可以了。
http定义了一组被称为安全方法的方法。get和head都被认为是安全的方法,这就意味着使用get或head方法的http请求不会产生什么动作,安全方法不一定什么都不执行的(这将由web开发者决定)
get是最常用的方法。通常用于请求服务器发送某个资源。
head与get方法很相似,但服务器只返回首部。不会返回实体的主体部分。这就允许客户端在未获得实际资源的情况下对资源的首部进行检查。
与get从服务器读取文档相反,普通方法会向服务器写入文档。有些发布系统允许用户创建web页面,并用普通直接安装到服务器上
put方法的语义就是让服务器用请求的主体部分来创建一个由所请求的url命名的新文档,或者如果url已存在,就用主体来替代它
post起初是用来向服务器输入数据的。实际上用它来支持html的表单。
客户端发起一个请求这个请求可能要穿过防火墙、代理、网关或其它一些程序。每个中间结点都有可能修改原始http请求。trace方法允许客户端在最终请求发送给服务器时看看它变成什么样子。
trace请求会在目的服务器发起一个回环诊断。行程最后一站的服务器会弹回一条trace响应,并在响应主体中携带它收到的原始请求报文。
options方法请求web服务器告知其支持的功能。可以查询服务器通常支持那些方法。
delete就是请求服务器删除所请求的资源。但是客户端应用无法保证删除一定会被执行。用为http协议允许服务器在不通知客户端的情况下撤销请求。
http被设计成字段可扩展的,这样新特性就不会使老软件失效了。服务器会为他所管理的资源实现http服务,这些方法为开发者提供了扩展http服务能力的手段。
并不是所有的方法都是正式规范中定义的,如果你定义了一个扩展方法,很可能大部分http应用程序都无法理解。同样你的http应用程序也有可能遇到一些其它应用程序正在使用,而并不理解的方法。
多而杂,不抄了
有些首部提供了与报文相关的基本信息,被称为通用首部。
通用信息性首部
通用缓存首部
http10引入了第一个允许http应用缓存对象本地副本的首部,这样就不用总是从源服务器获取了。
请求首部是只在请求报文中有意义的首部。
请求的信息性首部
1accept首部
accept将客户端的喜好和能力告知服务器的方式
2条件请求首部
客户端为请求添加限制。
3安全请求首部
http本身支持一种简单的机制,可以对请求进行质询/响应认证。这种机制要求,在获取资源之前,先对自身进行认证,这样使事务稍微安全一些。
安全请求首部
4请求代理首部
响应报文有自己的响应首部集。响应首部为客户端提供了一些额外的信息。
1协商首部
如果资源有多种便是方法,http11可以为客户端和服务器提供对资源进行协商的能力
2安全响应首部
信息性首部
1内容首部
2实体缓存首部
通用的缓存首部说明了如何或什么时候进行缓存。实体的缓存提供了与被缓存实体有关的信息。
实体缓存
d版的最好不要在网上直接自动更新,如果被装上增值验证就比较头疼了。xp系统被装上增值验证后会经常弹出提示,2000没亲眼见过,但基于2000/xp的内核相近,效果可能会差不多。如果用自带的打补丁,不要选择自动下载自动更新,选择手动下载和自定义更新,注意看每个补丁的描叙,一旦有验证啊,增值之类的补丁统统毙掉不下载,安装的时候注意再检查一次就可以了。如果自己去下更新包也行,不过比较麻烦,要自己一个一个的下,微软的网速确实是很软的。你用软件查补漏洞也比较方便,而且一般这种软件不会下载增值验证,可以比较方便使用,实在不放心可以看软件里面的补丁提示,万一被下载了正版验证工具就毙了不装就行了。你可以根据自己的情况来选择打补丁的方法。
默认情况下,DNS服务器使用递归方式来解析名字。递归的含义就是DNS服务器作为DNS客户端向其他DNS服务器查询此解析请求,直到获得解析结果,在此过程中,原DNS客户端则等待DNS服务器的回复。
如果你禁止DNS服务器使用递归方式,则DNS服务器工作在迭代方式,即向原DNS客户端返回一个参考答复,其中包含有利于客户端解析请求的信息(例如根提示信息等),而不再进行其他操作;原DNS客户端根据DNS服务器返回的参考信息再决定处理方式。但是在实际网络环境中,禁用DNS服务器的递归查询往往会让DNS服务器对无法进行本地解析的客户端请求返回一个服务器失败的参考答复,此时,客户端则会认为解析失败。
所以递归和迭代的不同之处就是当DNS服务器没有在本地完成客户端的请求解析时,由谁扮演DNS客户端的角色向其他DNS服务器发起解析请求。
CDN,全称内容分发网络(ContentDeliveryNetwork),可以简单地将其理解成一个离你很近的、可以从上面获取到完整的原始数据的服务器,它会定期和拥有原始内容的服务器进行同步,保证用户可以从上面获取到最新的内容。
内容分发网络,是用于承载网站的内容分发以及调度等功能的,能让用户访问网站的时候,快速得到信息,也降低了网站加载缓慢的速率,能提高用户的访问率。因为cdn服务器能解决大量用户访问的问题,所以常常用于搭建大型门户网站、商城网站、视频网站等等。
CDN服务器优势
1、访问加速优势
为用户提供快速的访问效果是CDN服务器的重要优势之一。解决了远距离的访问、不同网络带宽线路访问造成的网络延迟情况。
2、防御网络攻击
CDN服务器有隐藏源服务器IP的作用,展现给用户的都是属于CDN节点IP,网络攻击的时候,一般会攻击这些节点服务器,但不会对源服务器造成伤害。因此,无论多大的攻击,源服务器始终能保持正常的访问。
3、降低源服务器带宽
CDN服务器降低了源服务器带宽的使用量。基于网站数据都分发到CDN节点,因此,源服务器带宽只需满足数据资料传输到CDN节点即可,不用选择大带宽供大量用户访问,降低了源服务器的压力。
0条评论