图解HTTP系列--(一)

653 阅读4分钟

前言

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

一、TCP/IP(基础网络)

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

2、然后,我们还是要说下TCP/IP协议的一个分层管理:应用层(HTTP、FTP、DNS)、传输层(TCP、UDP)、网络层、链路层。及通信传输流,如图:

avatar

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

3、NDS(域名解析系统)

这里我想将DNS抽出来讲,因为之前遇到我电脑打开网站和用户电脑打开网站的效果不一样的问题,后来运维小哥帮我看下问题发现就是因为DNS缓存导致的。 DNS就是用来做域名解析,就是你发域名地址给DNS,他会返回给你对应的IP地址,就这么一回事,如图:

avatar

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

avatar

5、URL和URI的区别

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

avatar

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

二、简单的HTTP协议

1、hTTP通信

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

avatar

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

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

但是,我发现这两张图跟我在控制台打开的查看network看到的不那么一样,所以这里还是留下一个疑问,我会在看完后续内容后,继续给大家把这块解释补充上。(或有清楚的大佬可以留言带带我)

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

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

3、持续连接节省通信量(HTTP keep-alive)

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

avatar

管道化可以达到进一步优化请求,比如我们请求一个有10张图片的网页,通过持续管道化就会快很多。

avatar

3、使用Cookie管理状态

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

总结

最近只看了前两章,所以内容差不多就这些。下次我在读个两三章内容,然后分享HTTP的报文内容返回的状态码相关内容。

内容持续更新中....