http的认识笔记
http因特网的多媒体信使,每天都会有数以亿万计的图片,html也i按,文本文件,电影,小程序等资源,在因特网上飞,http就是这样的可靠快递员
http使用的是可靠的数据传送协议,不必担心被破环,这里所说的可靠性待讨论和研究
资源
传送的东西都是资源,比如图片,程序,文本等
想要知道这些东西是什么就可以用mime来标识,它是在请求头之中,如content-type:image/jpeg
text/html类型标记,所以它是用来区分类型的,内体内容不能从mime得知
当客户端向服务端发起请求时必须知道,向谁请求、请求资源是什么
这个时候就需要URI来表示,这个是在世界范围内唯一标识并定位信息资源
http://www.joes-hardware.com/specials/saw-blade.gif
URL统一资源定位符是资源标识符最常见的形式,它描述了一台特定服务器上某资源的特定位置,大部分URL都遵循一种标准格式,这标准格式分为三个部分
第一部分被称为方案就是(http://)
第二部分就是给出服务器因特网地址为www.joes-has.com
第三部分就是指这个服务器上某个资源/specials/saw-blade.gif
现在基本所有的URI都是URL
URN的这二种形式就是统一资源名(URN),URN为特定内容的唯一名称下hi用的与目前资源所在地无关
如磁力链接,磁力链接不基于文档的IP地址或定位符,而是在分布式数据库中,通过散列函数值来识别、搜索来下载文档。(这个咋用,我就不多说了🤭🤭,大家都知道)
事务
一个http事务有一条从客户端发送往服务器请求命令和一个从服务器发送回客户端相应结果组成,这种通信通过名为http报文的格式话数据模块进行的
方法
不同的请求命令,这些命令称为方法,每条http请求报文都包含一个方法,这个方法告诉服务器能执行什么动作,相当于告诉它干啥
http方法 | 描述 |
---|---|
get | 从服务器端向客户端发送命名资源 |
put | 将来自客户端的数据存储到一个命名的服务器资源中去 |
delete | 从服务器中删除指定资源 |
post | 将客户端数据发送到一个服务器网关应用程序 |
head | 仅发送指定资源响应中的http首部 |
状态码
每条http响应报文返回时都会带有一个状态码,状态码是三位有效数字,要来通知客户端请求是否成功,这个就不多说了,天天遇到😭
WEB页面可以包含多个对象
一个丰富的web页面有可以能包含图片,图像,小程序等,这些嵌入式资源甚至位于不同的服务器上面
报文
HTTP报文是由一行一行简单字符串组成,纯文本,从客户端发向服务器的是请求报文,从服务器发向客户端的响应报文,两种报文很相似
Http报文包含以下三个部分
请求行,用来说明做什么,在起始行
请求头,这个提供与游览器端相关的信息
请求体,在请求头后面为空行,空行后面就是可选的主体
TCP/IP
TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。TCP/IP传输协议是严格来说是一个四层的体系结构,应用层、传输层、网络层和数据链路层都包含其中
连接,IP地址及端口号
http客户端向服务器发送报文之前,需要要网际协议地址,端口号在客户端和服务器端之间建立一条tcp/ip连接
步骤如下:
游览器从url中解析出服务器的主机名
游览器将服务器的主机名转成服务器的ip地址
游览器将端口从url中解释出来
游览器建立一条与服务器的tcp连接
游览器向服务器发送一条请求报文
服务器向游览器回送一条http响应报文
关闭连接,游览器显示文档
协议版本
现在使用的http协议有几个版本。HTTP应用程序要经量强健地处理各种不同的HTTP协议变体
最初版本的HTTP协议并没有版本号,后来它的版本号被定位在 0.9 以区分后来的版本。 HTTP/0.9 极其简单:请求由单行指令构成,以唯一可用方法GET
开头,其后跟目标资源的路径(一旦连接到服务器,协议、服务器、端口号这些都不是必须的)。
由于 HTTP/0.9 协议的应用十分有限,一份新文档(RFC 1945)被发表出来,用以描述如何操作实践这些新扩展功能。文档 RFC 1945 定义了 HTTP/1.0,但它是狭义的,并不是官方标准。
HTTP/1.0 多种不同的实现方式在实际运用中显得有些混乱,自1995年开始,即HTTP/1.0文档发布的下一年,就开始修订HTTP的第一个标准化版本。在1997年初,HTTP1.1 标准发布,就在HTTP/1.0 发布的几个月后。
HTTP-NG被在1998年终止
WEB的结构组件
除了两个web应用程序(客户端和服务器)还有其他重要的应用程序
代理
位于客户端和服务器之间的http中间实体,由于它位于中间能够接收道所有客户端的请求,并将这些请求转发到服务器,对于用户来说,这些程序就一个代理,代表用户访问服务器,处于安全考虑,通常代理作为转发流量的可信任中间节点使用,代理还可以对请求和响应进行过滤,如对下载的应用程序进行病毒检测,对小学生屏蔽一些成人看到的内容
缓存
web缓存或者是代理缓存是一种HTTP特殊的代理服务器,可以将经过代理传送的常用文档复制保存起来,下一个同一个文档的客户端就可以享受缓存的私有副本所提供的服务了
网关
是一种特殊的服务器,作为其他服务器的中间实体使用,通常用于将HTTP流量转成其他的协议,这个就像个外语翻译师,有点不恰当,但比较好理解
隧道
隧道建立起来之后就会在两条连接之间对原始数据进行盲转发的应用程序
HTTP隧道用于在被限制的网络连接(包括防火墙、NAT和ACL)以及其他限制的情况下在两台计算机之间建立网络链接。
Agent代理
用户agent代理是代表用户发起http请求的客户端程序,所有发布WEB请求的应用程序都是HTTP agent代理,之前提到过一种http agent代理,但agent代理还有很多种类型,就如网络爬虫