主页 > SEO教程 > 《HTTP权威指南》 笔记

《HTTP权威指南》 笔记

admin SEO教程 2020年03月25日

  ①方案(scheme):说明访问资源所使用的协议类型,通常是HTTP协议。(

  ①起始行:报文的第一行,在请求报文中用于说明要做些什么,在响应报文中说明出现了什么情况。

  ②首部字段:起始行后,有0个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用一个冒号分隔。首部以一个空行结束。

  ⑤端口:服务器正在监听的端口号。(方案有默认的端口号,例如HTTP是80)

  ⑦参数:某些方案使用这个来输入参数。参数为名/值对。可以有多个,用分号分隔。

  ⑧查询:某些方案会用这个传递参数激活应用程序(数据库、公告板、搜索引擎等)。

  请求报文的起始行(也称为“请求行”),包含了一个方法和一个请求URL。方法描述了服务器应该执行的操作,请求URL描述了要对哪个资源执行这个方法。同时包含HTTP的版本。

  响应报文有状态信息和操作产生的所有结果数据。响应报文的起始行(也成为“响应行”),包含了响应报文使用的HTTP版本、数字状态码、原因短语。这几个字段均由空格分隔。

  客户端发送一个携带值为100 Countinue的Expect请求首部,意味着客户端在发送实体前等待100 Continue响应。这是一种优化,客户端在避免向服务器发送一个大实体时,才使用。

  101(Switching Protocols):说明服务器正在根据客户端的指定,将协议切换成Update首部所列的协议。

  201(Created):用于创建服务器对象的请求的响应(例如PUT)。实体主体部分包含各种引用了已创建的资源的URL。

  202(Accepted):请求已被接受,但服务器还未对其执行任何动作,无法保证服务器会完成这个请求。

  203(Non-Authoritative Information):实体首部包含的信息不是来自于源端服务器,而是来自资源的一份副本。

  204(No Content):响应报文有状态行和首部,但没有实体的主体部分。

  205(Reset Content):告知浏览器清除当前页面中的所有HTML表单元素。

  206(Partial Content):成功执行了一个部分或Range(范围)请求。

  重定向状态码要么告知客户端使用替代位置来访问他们所要访问的资源,要么提供一个替代的响应而不是资源的内容。

  资源被移动的情况下,发送一个重定向状态码和一个可选的Location首部告知客户端资源已被移动,并且可以在哪里找到。

  300(Multiple Choices):客户端请求一个实际指向多个资源的URL时会返回这个状态码。

  301(Moved Permanently):请求的URL已经被移除,响应中Location首部包含资源现所处的URL。

  302(Found):与301类似,但是客户端应该用Location首部的URL来临时定位资源,将来的请求仍用老的URL。

  303(See Other):告知客户端应该用另一个URL来获取资源,新URL位于Location首部,允许POST请求的响应将客户端定向到某个资源上去。

  304(Not Modified):客户端可以通过所包含的请求首部,使其变成有条件的。

  305(Use Proxy):说明必须通过一个代理来访问资源,代理位置由Location首部给出。

  400(Bad Request):用于告知客户端它发送了一个错误的请求。

  401(Unauthorized):与适当的首部一起返回,在这些首部中请求客户端在获取对资源的访问权之前,对自己进行认证。

  403(Forbidden):说明请求被访问权拒绝。拒绝原因可能在实体的主体部分。

  405(Method Not Allowed):发起请求中带有所请求的URL不支持的方法。响应中有Allow首部,告知客户端对所请求的资源可以用哪些方法。

  406(Not Acceptable):客户端可以通过参数说明它们接受什么类型的实体,服务器没有和客户端可接受的URL相匹配的资源时用此代码。

  407(Proxy Authentication Required):和401相似,但用于要求对资源进行认证的代理服务器。

  408(Request Timeout):如果完成请求所花时间太长,服务器可以返回此状态码。

  411(Length Required):服务器要求在请求报文中包含Content-Length首部。

  412(Precondition Failed):客户端发起了条件请求,且其中一个条件失败了。

  413(Request Entity Too Large):实体主体部分过大。

  414(Request URI Too Long):URL比服务器能处理的长。

  415(Unsupport Media Type):无法理解或无法支持客户端所发实体的内容类型。

  416(Requested Range Not Satisfiable):请求报文请求的是指定资源的某个范围,而此范围无效或无法满足。

  417(Expectation Failed):请求的Expect请求首部包含一个期望,但服务器无法满足此期望。

  500(Internal Server Error):服务器遇到一个妨碍它为请求提供服务的错误。

  501(Not Implemented):客户端发起的请求超出服务器的能力范围。

  502(Bad Gateway):作为代理或网关使用的服务器从请求响应链的下一条链路上收到了一条伪响应。

  503(Service Unavailable):说明服务器现在无法为请求提供服务,将来可以。

  505(HTTP Version Not Support):服务器收到的请求使用了它无法或不愿意支持的协议版本。

  Connection:允许客户端和服务器指定与请求/响应连接有关的选项。

  PUT方法会向服务器写入文档。PUT方法的语义就是让服务器用请求的主体部分来创建一个由所请求的URL命名的新文档,如果那个URL已存在,就用这个主体来替代它。

  由于PUT允许用户对内容进行修改,因此多数WEB服务器都要求在执行PUT之前,用密码登陆。

  一个请求可能要穿过防火墙、代理、网关或其他一些应用程序。每个中间节点都可能会修改原始的HTTP请求。TRACE请求会在行程最后一站的服务器弹回一条TRACE响应,响应中包含该服务器收到的请求报文。

  DELETE方法是请求服务器删除请求URL所指定的资源。但是,HTTP规范允许服务器在不通知客户端的情况下撤销请求。

  ①客户端首先需要根据URI确定WEB服务器的IP地址和端口号。DNS解析(如果没有缓存)可能需要数十秒的时间。

  ②客户端会向服务器发送一条TCP连接请求,并等待服务器回送一个请求接受应答。每条TCP连接都会有连接建立时延,如果有数百个HTTP事务的话,时延会变大。

  ③一旦建立连接,客户端会通过TCP管道来发送HTTP请求。数据到达时,WEB服务器会从TCP连接中读取请求报文,并对其进行处理(需要一定时间)。

  浏览器可以先完整地请求原始的HTML页面,然后请求第一个嵌入对象,然后请求第二个嵌入对象等。但这样太慢了。HTTP允许客户端打开多条连接,并行执行多个HTTP事物,因此可以并行加载这些对象。(当网络带宽不足时,这种做法不一定能提高速度)

  一个Web页面上大部分内嵌图片通常都来自同一个Web站点,且相当一部分指向其他对象的超链接都指向同一站点。因此,初始化了对某服务器HTTP请求的应用程序可能会在不久的将来对该服务器发起更多请求。这种性质称为

  HTTP/1.1允许HTTP设备在事务处理结束后将TCP连接保持在打开状态,以便未来的HTTP请求重用现存的连接。这种连接称为“持久连接”。持久连接会在不同的事务之间保持打开状态,直到客户端或服务器决定将其关闭为止。

  keep-alive连接,是早期实验型的持久连接,存在一些问题,但很多客户端和服务器仍然在使用这些早期的keep-alive连接。

  keep-alive通过在Connection:Keep-Alive首部请求一条连接保持打开。如果服务器同意保持连接,响应中也要有一样的首部。

  HTTP/1.1允许在持久连接上可选地使用请求管道,这是在keep-alive连接上的进一步性能优化。在响应到达之前,可以将多条请求放入队列。

  代理连接的是两个或多个使用相同协议的应用程序;网关连接的则是两个或多个使用不同协议的端点。

  代理可以改善安全性,提高性能,节省费用。它可以看到并接触到所有流过的HTTP流量,可以监视并对其进行修改,实现很多有用的增值Web服务。

  可以实现这类功能:儿童过滤器、文档访问控制、安全防火墙、Web缓存、反向代理、内容路由器、转码器等。

  原始服务器的内容可能会发生变化,所以缓存要不时检查,看它们保存的副本是否服务器上的最新版本。这称为

  缓存进行再验证时,会向原始服务器发送一个小的再验证请求。如果内容没变化,原始服务器会响应304 Not Modified。这叫做再验证命中或缓慢命中。

  HTTP不太能判断是通过原始服务器还是从缓存得到,响应码都是200 OK。客户端可以通过Date首部,如果Date首部的时间比请求时间早,可以认为这是一条缓存的响应。

  代理缓存层次化:较小缓存中未命中的请求会被导向较大的父缓存。在靠近客户端的地方使用小型廉价缓存,更高层次中,逐步采用更大、功能更强的缓存来装载多用户共享的文档。

  在层次结构很深的情况下,请求可能要穿过很长的缓存,但每个拦截代理都会添加一些性能损耗,当代理链路变得很长的时候,这种性能损耗会变得非常明显。

  ④新鲜度检测:缓存查看已缓存的副本是否足够新鲜,如果不是就询问服务器是否有任何更新。

  HTTP通过缓存将服务器文档的副本保留一段时间,这段时间里认为文档是“新鲜的”。但一旦时间过长,就认为过时了,需要向服务器再次确认。

  为了让响应看起来就是原始服务器一样,缓存将已缓存的服务器响应首部作为响应首部起点,然后对这些基础首部进行修改和扩充。

  ①文档过期:原始服务器向每个文档添加一个“过期日期”。过期之前,可以随意使用这些副本,无需找服务器。

  ①收到客户端A请求,根据URI将其通过API发送给一个数码相机应用程序。将得到的照片绑定到一条HTTP响应报文中,再回送给客户端,在客户端的浏览器中显示。

  ②客户端B的URI请求的是一个电子商务应用程序。通过服务器网关的API发送给电子商务软件,结果会被回送给浏览器。

  请求需要使用网关的资源时,服务器会请辅助应用程序来处理请求。服务器会把请求传送给辅助应用程序,然后辅助应用程序会向服务器返回一条响应或响应数据,服务器再把该响应转发给客户端。

  CGI(Common Gateway Interface,通用网关接口):第一个、广泛应用的服务器扩展。CGI应用程序是独立于服务器的。

  Web机器人是能够在无需人类干预的情况下自动进行一系列Web事务处理的软件程序。

  很多机器人会从一个Web站点逛到另一个Web站点,获取内容,跟踪超链,并对它们找到的数据进行处理。(例如“爬虫”)

  爬虫:会递归地对各种信息性Web站点进行遍历,获取一个Web界面,然后获取那个页面指向的所有Web页面,然后是那些页面指向的所有Web页面,以此类推。使用爬虫在Web上游荡,并把它们碰到的文档全部拉回来处理。

  使用客户端IP地址来识别用户存在很多缺点,诸如:动态IP,一个IP有多个用户,NAT转换等等。

  ①会话cookie:一种临时cookie,记录了用户访问站点时的设置和偏好,退出浏览器时cookie便被删除。

  ②持久cookie:存储在硬盘上,退出浏览器、重启计算机它们都还会存在。用于维护某个用户会周期性访问的站点的配置文件或登录名。

  服务器通过Set-Cookie或Set-Cookie2的HTTP响应首部,将cookie放到客户端。

  cookie中可以包含任意信息,是一个name=value的表,通常只包含一个服务器为了进行跟踪而产生的独特的识别码。

  cookie的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供给它。

  客户端不会发送密码,而是发送一个“指纹”或密码的“摘要”,这是密码的不可逆扰码。客户端和服务器都知道这个密码,因此可以通过摘要验证是否与密码相匹配。

  摘要是一种单向函数,主要用于将无限的输入值转为有限的浓缩输出值,常见的有MD5函数。(其实就类似于哈希)

  即使不知道密码,恶意用户也可以通过获取摘要,并重放给服务器,因为摘要和密码一样好用。

  为解决这种重放攻击,服务器可以向客户端发送一个称为随机数的特殊令牌,这个数会经常变换,客户端在计算摘要前要把这个随机数附加到密码上去。

  HTTPS是最流行的HTTP安全形式,由网景公司首创,所有主要的浏览器和服务器都支持此协议。

  使用HTTPS时,所有的HTTP请求和响应数据发送到网络之前,均要进行加密。大部分编码解码工作都是在SSL库中完成的,因此Web客户端和服务器无需过多地修改其协议处理逻辑。

  除了加密报文之外,还可以用加密系统对报文进行签名(sign),说明是谁编写的报文,同时证明报文未被篡改过。这种技术称为数字签名(digital signing)。

  只有作者才有私有密钥,所以只有作者才能计算出校验和。如果有恶意攻击者在报文传输过程篡改了报文,校验和就不匹配了,因为校验和需要私有密钥才能产生,所以攻击者无法为篡改过的报文伪造正确的校验码。

  数字证书中包含一组信息,这些信息是由一个官方的“证书颁发机构”以数字方式签发的。常见内容有:对象的名称(人、服务器、组织等)、过期时间、证书发布者(由谁为证书担保)、来自证书发布者的数字签名、对象的公开密钥。

  通过HTTPS建立了一个安全的Web事务后,现代的浏览器都会自动获取所连接服务器的数字证书。如果服务器没有证书,安全连接就好失败。收到证书会对签名颁发机构进行检查,如果该机构是个权威的公共签名机构,浏览器就知道已经公开的密钥,可以验证签名。如果不知名的签名颁发机构,会弹窗提示用户是否信任这个签名颁发者。

  ④Content-Encoding:对象数据所做的任意变换(比如压缩)。

  ⑤Content-Location:一个备用位置,请求时可通过它获得对象。

  ⑥Content-Range:如果这是部分实体,这个首部说明它是整体的哪个部分。

  ⑧Last-Modified:所传输内容在服务器上创建或最后修改的日期时间。

  实体主体中就是原始数据,其他任何描述性信息都包含在首部中,要靠实体首部来描述数据的意义。

  Content-Length指示报文中实体主体的字节大小,该大小是包含了所有内容编码的。(也就是说如果有压缩是压缩后的大小,而不是原始大小)

  Content-Type首部字段说明实体主体的MIME类型。MIME类型是标准化的名字,用来说明实体的基本媒体类型。

  MIME类型由一个主媒体类型,后面跟一条斜线以及一个子类型组成,子类型用于进一步描述媒体类型。

  网站国际化要注意两个主要问题:字符集编码(character set encoding)和语言标记(language tag)。

  客户端发送Accept-Charset首部和Accept-Language首部,告知服务器它理解哪些字符集编码算法和语言以及其中的优先顺序。

  HTTP字符集的值说明如何把实体内容的二进制码转换为特定字母表中的字符。

  下面的Content-Type首部告知接收者,传输的内容是一份HTML文件,用charset参数告知接收者使用iso-8859-6阿拉伯字符集的解码算法把实体中的二进制码转换为字符:

  HTTP提供了内容协商方法,通过这些方法,单一的URL就可以代表不同的资源(例如同一个网站页面的法语版和英语版)。这些不同的版本称为变体。

  HTTP协议中定义了质量值,允许客户端为每种偏好类别列出多种选项,并为每种偏好选项关联一个优先次序。q值的范围从0.0~1.0(从优先级低到高。)下示客户端无论如何不想收到法语和土耳其语,最愿意收到法语。

  下载地址:网盘下载内容简介······超文本转移协议(Hypertext Transfer Protocol,HTTP)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于we...博文来自:weixin_30268921的博客

  《HTTP权威指南》最新中文完整版本-----------详细解释了如何用HTTP来开发基于Web的应用程序,核心的因特网协议如何与架构构建块交互,如何正确实现因特网客户和服务器等。适合所有想了解HT...博文来自:dev666的博客

  下载链接:HTTP权威指南带完整书签:博文来自:weixin_44545253的博客

  本文插图源至:《HTTP权威指南》首先了解一个概念:URI、URL、URN,其中URL称之为统一资源定位符,URI称之为统一资源名,这两个都可以用来描述网络中某一个资源的位置,它们是URI的子集。我们...博文来自:虾米好吃的博客

  《HTTP权威指南》学习笔记(一)-第一部分 HTTP:Web的基础(描述Web的基础构件与HTTP的核心技术)(1-4章)...博文来自:光明矢的专栏

  前言基本认证存在缺陷,摘要认证为了解决基本认知的一些缺陷,进行了进一步的完善,更加安全.流程摘要认证的特点是:永远不会以明文方式在网络上发送密码原理:通过发送一个「指纹」或者「密码的摘要」来验证其和自...博文来自:weixin_30568715的博客

  目录第一章 HTTP概述第二章 URL与资源第三章 HTTP报文第四章 连接管理第五章 web服务器第六章 代理第七章 缓存第八章 集成点:网关、隧道及中继第九章 Web机器人第十章 HTTP-NG第...博文来自:swordsmanye的博客

  Http:超文本传输协议,在我们如今的网络时代。我们每天浏览着万万千千的网页,图片,文字,这些都离不开Http,他是我们快速可靠访问世界各地的web服务器资源地基础。Http使用的是可靠地数据...博文来自:jishublog

  现在大多数网站都会在cookie等客户端识别机制的基础上建立自己的认证机制。但是HTTP规范中提供的原生认证机制还是有必要了解下,了解这些后才能更好理解那些自己建立的认证机制。HTTP原生认证功能一般...博文来自:VictorCatFish的博客

  HTTP权威指南笔记 第一部分、基本组成 一、HTTP报文 1.报文格式 报文的起始行和首部是以行分隔的,以回车换行CRLF进行结束。回车符ASCII码13,换行符ASCII码10. 请......博文来自:zhuanchixiyangyang的专栏

  在上一期中笔者较为详细的介绍了HTTPBasic认证在apache下的配置,通过简单的实验演示...博文来自:tenfyguo的技术专栏

  HTTP(HyperText Transfer Protocol,超文本传输协议)是Web客户端与服务器交互文档和信息时所使用的协议,是每个成功Web事务的幕后推手。众所周知,我们每天访问公司内部网络论坛

  本章主要介绍网关、隧道、中继。都是属于通过HTTP访问不同资源的实现方法。1 网关...博文来自:VictorCatFish的博客

  内容发布与分发18.WEB主机托管1.主机托管服务,租用的方式2虚拟主机托管 Joe和Mary都租用一台主机,采用不同的域名,如果让他们俩区分开来呢a)通过URL路径进行虚拟主机管理,即增加专门的路径...博文来自:hixiaoxiaoniao的专栏

  备注:本文最初是针对我在github上搭建的博客写的,csdn和github对markdown格式支持可能不是很兼容,可以移步我的博客。引言本来是计划要翻译HTTP相关rfc文档的,奈何工程量巨大,进...博文来自:Hello world

  由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,...博文来自:帅地

  大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频...博文来自:帅地

  人生苦短,我用 Python前文传送门:小白学 Python 爬虫(1):开篇小白学 Python 爬虫(2):前置准备(一)基本类库的安装小白学 Python 爬虫(3):前置准备(二)Linux基...博文来自:极客挖掘机

  作者 Rocky0429来源 Python空间大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻…网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网...博文来自:Rocky0429

  夜深人静,电视和电脑都已经关机休息,但是我还在默默工作,我安静地趴在你家中的某个地方,7*24小时不眠不休,任劳任怨,目的只有一个,能让你舒服地躺在床上,畅快地刷手机!没错,这就是我,......博文来自:码农翻身

  前言2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季。那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情。当然,不论选择如何...博文来自:程序猿学社的博客

  nifh80s:没有虚析构,D的析构容易被忽略而出错,容易导致误解,还是希望作者能加上。小吃培训:http://www.kssyseo.cn

广告位
标签: 企业 定义