本文为学习极客时间的《透视HTTP协议》的学习笔记!本文图片来源于专题文章中。
HTTP 协议是一种在计算机世界中用于在计算机之间传输文本、图片、音频、视频等超文本资源的约束与规范。
HTTP 协议不是一个孤立的协议。
在互联网世界中,它通常基于 TCP/IP 协议族。比如说:它依靠 IP 协议来实现路由与寻址;依赖 TCP 协议来实现可靠的数据传输;依赖 DNS 协议来实现域名解析;依赖 SSL/TLS 协议来实现安全通信等。
同时,也有其它的协议是需要依赖 HTTP 协议的。比如说:webscoket 协议需要使用 HTTP 协议来建立连接。
HTTP 是一个“双向”的协议,即两点之间可以相互传输数据,其中,需要注意:服务端可以作为客户端来发起请求,但是浏览器只能作为客户端,只具有发起请求和接收响应数据的能力。
1. 与 HTTP 相关的技术
互联网世界更像是由数不清的大小岛屿组成的“千岛之国”。
局域网、广域网、固定网络、移动网络、因特网、万维网…
综合起来看,现在的互联网 90% 以上的部分都被万维网,也就是 HTTP 所覆盖,所以把互联网约等于万维网或 HTTP 应该也不算大错。
浏览器本质上是一个 HTTP 协议中的请求方,使用 HTTP 协议获取网络上的各种资源。当然,为了让我们更好地检索查看网页,它还集成了很多额外的功能。
在 HTTP 协议里,浏览器的角色被称为“User Agent”即“用户代理”,意思是作为访问者的“代理”来发起 HTTP 请求。不过在不引起混淆的情况下,我们通常都简单地称之为“客户端”。
Web 服务器”有两个层面的含义:硬件和软件。
硬件含义: 就是物理形式或“云”形式的机器,在大多数情况下它可能不是一台服务器,而是利用反向代理、负载均衡等技术组成的庞大集群。但从外界看来,它仍然表现为一台机器,但这个形象是“虚拟的”。
软件含义: 就是提供 Web 服务的应用程序,通常会运行在硬件含义的服务器上。在接收到客户端请求时,进行一定的处理后,返回相应的响应数据给客户端。
CDN 是现代网络系统中的一个重要的基础设施,位于浏览器和 Web 服务器之间。它应用了 HTTP 协议中的缓存和代理技术,代替源站来响应客户端的请求。
简单来说,它可以缓存源站的数据,让浏览器的请求不用“千里迢迢”地到达源站服务器,直接在“半路”就可以获取响应。如果 CDN 的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。
一种可以自动访问 Web 资源的应用程序。
WAF 是近几年比较“火”的一个词,意思是“网络应用防火墙”。与硬件“防火墙”类似,它是应用层面的“防火墙”,专门检测 HTTP 流量,是防护 Web 应用的安全技术。WAF 通常位于 Web 服务器之前,可以阻止如 SQL 注入、跨站脚本等攻击,目前应用较多的一个开源项目是 ModSecurity,它能够完全集成进 Apache 或 Nginx。
2. 与 HTTP 相关的协议
TCP:Transmission Control Protocol (传输控制层协议)。基于 IP 协议提供可靠的(数据不丢失)、字节流形式(数据完整)的通信。
IP: Internet Protocol(网络协议)。用于网络世界的路由和寻址,实现两点之间的数据传输。IP 协议使用 IP 地址来定位网络事件的每一台计算机。现在广泛使用的是 IP v4 的地址,即:由 4 组以 . 分隔的数字组成,约 42 亿个可用地址。还有 IP v6 的地址,即:由 8 组以 : 分隔的数字组成,有 2 的 128 次方个可用地址。
Domain Name System(域名系统),IP 地址适合计算机使用,但是不便于人类记忆,域名才适合。所以,需要 DNS 来将 域名转为 IP 地址给计算机使用。
URI:Uniform Resource Indetifier(统一资源标识符),唯一标识网络上的资源。
URL:Uniform Resource Locator(统一资源定位符),也就是我们俗称的网址,是 URI 的子集。
URI 主要由 3 个基本部分组成:
协议主机名/域名路径HTTP + SSL/TLS + TCP/IP
SSL:Security Socket Layer(安全套接口层)
TLS:SSL 3.0
更加安全的 HTTP 协议。
Proxy (代理)作为 HTTP 协议中请求和响应的中转站,既可以转发客户端的请求,也可以转发服务端的响应。
代理的种类有很多,比如:
匿名代理:只见代理服务器,不见被代理的机器;透明代理:传输过程是透明的,可以看见代理服务器,也可以看见被代理的机器;正向代理:靠近客户端,代表客户端发送请求;反向代理:靠近服务端,代表服务端响应客户端的请求;…代理是请求和响应中的中间层,在这可以做的事很多:
负载均衡内容缓存数据处理安全防护解析一个域名,要经历的过程:
浏览器 DNS 缓存操作系统缓存主机映射文件(windows 下在 C:\Windows\System32\drivers\etc\hosts)非权威域名服务器(一般系统有个默认的,但也可以自己配置)根域名服务器顶级域名服务器权威域名服务器如果最终也没找到域名对应的 IP 地址,浏览器会出现类似“无法访问此网站,找不到 XXX 的服务器地址”的错误提示页面在域名解析系统的核心是 5 - 7,其它步骤的存在,主要目的都是通过缓存来提高域名解析的速度。
借助域名解析系统,还能够来处理重定向的问题,也就是提供服务的域名地址不变,但是可以切换映射到的 IP 地址。
恶意的域名服务器:域名屏蔽、域名劫持…