这篇文章对《http权威指南一书》里面每一章的内容及相关概念作提炼性记录!不过提醒大家,这篇文章的内容并不能代表原书籍,因为很多概念是“截断”原书中的内容,所以难免有“断章取义”之嫌,我的本意,帮助已经看过原书的人回忆一些概念而已!还有原书中内容实在太宽泛,并不仅仅只限于前端领域,而我可能只做前端的部分!所以如果你真的想学习这本书籍,还是要请你查看原书籍!由于书中内容较多,并不决定一次性写完本文,所以文章不定期更新!
http是一种数据传输协议,用来沟通客户端和服务端。它是稳定的,所以可以使得数据在传输过程不变得混乱!http位于应用层!
客户端--内容的请求者,服务器--内容的提供者,因为使用http协议,所以分别被称为http客户端和http服务器!
服务器所能提供的数据类型统称概念,包括各种你能想象的文件,并不仅仅限于静态文件,也包括动态文件,比如动态产生内容的程序等!
是一种数据格式标签,揭示数据类型,其表现为一个文本标记:一个主要的对象类型和一个次要的对象类型,中间用一个斜杠“/”来隔离,如“text/html”,"image/jpeg"等!其实MIME的作用就是内容的“提供者”给内容的“接收者”提示内容的数据类型,然后“接收者”来决定调用什么来处理数据!
URI--统一资源标识符,包括两个部分:URL--统一资源定位符(唯一的,也就是我们平时在浏览器输入的那个完整资源地址,如:http://www.baidu.com/xx//xx.html)。URN--统一资源名(特定资源的名字)!
一个事务包括一条客户端发起的请求命令和服务端相应结果组成!
表示客户端向服务端请求数据所使用的方法,也就是我们平时在代码中使用的诸如“get、post、put”等!
响应报文中都会携带一个三位数字的状态码,用来告知客户端请求是否成功!常见状态码200代表成功、302重定向、404文件未找到等!
这个概念揭示我们平时看到的网页,并不是只有一个资源,而是多个资源(可以不同服务器)的集合,所以客户端可能要发起多个事务来得到这些资源!
报文分文请求报文和响应报文!此外报文包括三个部分:起始行、首部、主体!起始行就是报文第一行,用来告知需要干什么,首部用“:”隔开键值数据,然后首部空一行就是主体!
暂作http下一层的协议理解就好!
IP地址:域名的数字化地址,端口号:可以理解成到同一个目的地选择的入口,可以认为默认为“80”。
原书并没有此,是我自己理解的,1、浏览器解析域名,建立连接。2、客户端发送请求、服务端响应请求。3、关闭连接。这里的每个都是客户端和服务器来回接触实现的!
代理位于客户端和服务器之间,用来接受所有客户端http请求,并转发到服务器(可能会做修改)!代理可以做过滤器使用,如检测病毒、防止未成年人浏览成人网站等!
缓存是一种特殊的http代理服务器,用来缓存文件,提高响应速度等!
是一种服务器,用来实现协议的转换,比如一个http/ftp网关,客户端发起一个http报文,然后通过网关,网关向ftp协议的服务器发起ftp报文,最后得到的结果再封装成http报文给客户端,这一转换,客户端可能并不知道!
用来对数据进行盲转发的程序!
用来代替用户向服务端发送请求的客户端程序,通常可以想到的就是web浏览器,但是Agent代理还有很多其他的类型,我们就作帮用户发起请求的程序理解,包括自动的!
url是浏览器寻找信息时所需的资源位置!URI是由URL和URN两部分组成!
语法如下: <scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag> 最重要的三个部分就是方案、主机、路劲! 方案:访问服务器获取资源时使用的协议 用户名:某些方案获取资源时需要的用户名 密码:用户名后面的密码 主机:资源宿主的域名或ip地址 端口:服务器正在监听的端口:http默认是80 路径:资源在服务器上的目录路径 参数:附加的一些参数,用分号与其它部分分开 查询:?开头,name1=value1&name2=value2……的结构 片段:表示网页页面中的一个片段
方案实际上是规定如何访问指定资源的主要标识符,它会告诉负责解析URL的应用程序应该使用什么协议。
主机标识了因特网上能够访问资源的宿主机器,端口标识了服务器正在监听的网络端口。
记住有些方案需要用户名和密码就行了!
其实就是告诉资源在服务器的那个地方。
有些资源需要请求者提供额外的参数,否则服务器是不会理睬的!
有些操作,需要输入用用户加入的字符才行。
记住是网页的一部分就是,常用情况就是,a标签连接到某网页的中间的某个部分!比如/index.html#place_1。
url有绝对和相对之分,绝对url提供完整的url连接,而相对url提供部分url连接,它残缺的部分程序自己从基础url里面解析出来。
大部分情况下就是主机等!可以标签<base>显示给出,也可以自动判断!
大概指的就是,有时候我们在浏览器中只输入了一个url的一部分,有浏览器自动把它补充完成的那种功能,比如有时候我们可能只是输入了taobao,而浏览器把它补充为http://www.taobao.com/,主要分为主机名扩展和历史扩展。
简单来说,url需要规范,所以它不能包含一些字符!需要通过转意等什么的操作!
常见协议:http https mailto ftp rtsp,rtspu file news telnet。
说明了url机制的一些缺陷,比如资源的实际物理地址变了,那么原先的url就无用了,这样会很不灵活,因为又得重新来一个新的url,而urn就不一样了,未来urn可以解决这样的问题,但是urn取代url还有很长一段时间需要走!
http报文是在http应用程序之间发送的数据块。http流形象的必须要报文的在服务器和浏览器传输的一种“流”的状态。
http使用术语流入和流出来描述事务处理的方向。
形象说明报文向河水一样流动,发送端在上游,接收端在下游!
包括起始行、包含属性的首部及可选的主体。
报文分为请求报文和响应报文,请求报文会向web服务器请求一个动作,而响应报文会将请求的结果返回给客户端。报文中分别有以下一些概念
方法:请求数据的方法,比如get、post等 请求url:资源的地址 版本:协议+版本 状态码:服务器返回的数据情况状态表示,如200、304等 原因短语:状态码的辅助解释,只对人有用,对机器无用 首部:就是一些键值对,描述请求双方的一些参数 主体:可以理解为就是实际上的返回我的数据
报文都以起始行开始,请求报文描述要干什么,响应报文描述干了什么。
http首部字段向请求和响应报文中添加了一些附加信息。
首部有如下分类 通用首部 请求首部 响应首部 实体首部 扩展首部
实体的主体是http报文的负荷,就是http要传输的内容。
客户端请求数据的方法
使用这些方法的请求不会产生什么动作。
http首先是扩展的,这样主要保证向前兼容的,所谓扩展方法就是在http1.1中未定义的方法!
状态码为客户端提供了一种理解事务处理结果的便捷方式,分为五大类。
这些信息码主要提供一些附加信息,且在http1.1之后才引入的,所以功能受到限制。
表示客户端发起的请求都是成功的。
说明要请求的资源路径发生了改变。
客户端出现问题引起的请求错误!
服务器端出现问题引起的请求错误!