图解HTTP系列--(一)

前言

http协议(超文本传输协议)做为目前主流的请求协议,做为前端开发者,咱们必须对此有点深入的理解。 为此,我在6.24书香节在当当淘了这书,目的是为了系统的了解下HTTP协议的内容。本文主要是讲解下HTTP的由来及简单的结构请求介绍html

1、TCP/IP(基础网络)

提及HTTP协议,那必须聊聊他跟TCP/IP协议的关系。 一、首先,TCP/IP协议是互联网相关的各个协议族的总称,里面包含:HTTP(超文本传输协议)、FTP(文件传输协议)、TCP(传输控制协议)、IP、DNS(域名系统)、UDP(用户数据报协议)等。因此,HTTP协议是TCP/IP协议中协议族中的一员。前端

二、而后,咱们仍是要说下TCP/IP协议的一个分层管理:应用层(HTTP、FTP、DNS)、传输层(TCP、UDP)、网络层、链路层。及通讯传输流,如图: 浏览器

avatar

蛮有趣的图,发送端在层与层的传输时,通过都会打上所属层的首部,接收端则相反,通过时会把对应的首部去掉。缓存

三、NDS(域名解析系统)

这里我想将DNS抽出来说,由于以前遇到我电脑打开网站和用户电脑打开网站的效果不同的问题,后来运维小哥帮我看下问题发现就是由于DNS缓存致使的。 DNS就是用来作域名解析,就是你发域名地址给DNS,他会返回给你对应的IP地址,就这么一回事,如图: 服务器

avatar

四、TPC的三次握手、四次断开。

avatar

五、URL和URI的区别

URL -> 统一资源定位符
  即便用Web浏览器访问页面的网页地址
URI -> 统一资源标识符
  即标识某个互联网资源,如请求某个具体jpg、txt、data的地址。 cookie

avatar

因此,个人理解是URL是指请求网页的地址,URI是指请求某个具体载体的地址包括index.html文件,so -> URL是URI的子集。网络

2、简单的HTTP协议

一、hTTP通讯

官方解释:HTTP用于客户端和服务端之间的通讯,请求资源的一端为客户端,而提供响应资源的一端为服务端。(没毛病,就是废话)运维

avatar

如图,客户端请求的内容包括:请求方法、URI、协议版本、请求头部字段(http的配置)、请求主体(参数)。 //个人理解,若是有误,欢迎指点。 优化

avatar
如图,服务端响应的内容包括:协议版本、状态码、状态码的缘由短语、响应首部、主体(服务端返回的数据)。

可是,我发现这两张图跟我在控制台打开的查看network看到的不那么同样,因此这里仍是留下一个疑问,我会在看完后续内容后,继续给你们把这块解释补充上。(或有清楚的大佬能够留言带带我)网站

二、告知服务器意图的HTTP方法

  • GET --> 获取资源
  • POST --> 传输实体主体
  • PUT --> 传输文件
  • HEAD --> 获取报文首部(与GET方法同样,只是不返回报文主体部分,用于确认URI的有效性及资源更新的日期等)
  • DELETE --> 删除文件
  • OPTIONS --> 询问支持的方法(服务端会返回:Allow:GET、POST、HEAD)
  • TRACE --> 追踪路径(能够计算代理服务器有多少个,查找请求是否有被代理服务器篡改)
  • CONNECT --> 要求用隧道协议连接代理
    avatar

三、持续链接节省通讯量(HTTP keep-alive)

持续化特色只要任意一端没有明确的提出断开连接,则保持TCP的连接状态。实现一次TCP创建后进行屡次的请求和响应的交互。

avatar

管道化能够达到进一步优化请求,好比咱们请求一个有10张图片的网页,经过持续管道化就会快不少。

avatar

三、使用Cookie管理状态

由于http协议是无状态协议,每一次请求服务器都要识别客户端请求,这对服务器消耗的巨大的,因此经过首次请求服务端在响应中添加cookie,再下次请求时客户端带上这个cookie给服务端,服务端就是识别状态,就能更快做出响应。实际过程如图:

总结

最近只看了前两章,因此内容差很少就这些。下次我在读个两三章内容,而后分享HTTP的报文内容返回的状态码相关内容。

内容持续更新中....

相关文章
相关标签/搜索