失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > “透视HTTP协议”之破冰篇个人总结

“透视HTTP协议”之破冰篇个人总结

时间:2021-02-28 19:16:54

相关推荐

“透视HTTP协议”之破冰篇个人总结

01 | 时势与英雄:HTTP的前世今生

HTTP 协议始于三十年前蒂姆·伯纳斯 - 李的一篇论文;HTTP/0.9 是个简单的文本协议,只能获取文本资源;HTTP/1.0 确立了大部分现在使用的技术,但它不是正式标准;HTTP/1.1 是目前互联网上使用最广泛的协议,功能也非常完善;HTTP/2 基于 Google 的 SPDY 协议,注重性能改善,但还未普及;HTTP/3 基于 Google 的 QUIC 协议,是将来的发展方向。

这篇主要介绍了HTTP的起源以及发展,想要有更深入的了解建议上wiki。

你认为推动 HTTP 发展的原动力是什么?

技术发展后倒逼技术标准革新,顺则更新,逆则淘汰。

你是怎么理解 HTTP(超文本传输协议)的?

统一标准,降低开发难度,提升兼容性。

wiki:/en/Hypertext_Transfer_Protocol

02 | HTTP是什么?HTTP又不是什么?

HTTP是什么?

HTTP 就是超文本传输协议,也就是HyperText Transfer Protocol。

协议

第一点,协议必须要有两个或多个参与者,也就是“协”。

第二点,协议是对参与者的一种行为约定和规范,也就是“议”。

HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。

传输

第一点,HTTP 协议是一个“双向协议”。

第二点,数据虽然是在 A 和 B 之间传输,但并没有限制只有 A 和 B 这两个角色,允许中间有“中转”或者“接力”。

HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。

超文本

所谓“文本”(Text),就表示 HTTP 传输的不是 TCP/UDP 这些底层协议里被切分的杂乱无章的二进制包(datagram),而是完整的、有意义的数据,可以被浏览器、服务器这样的上层应用程序处理。

所谓“超文本”,就是“超越了普通文本的文本”,它是文字、图片、音频和视频等的混合体,最关键的是含有“超链接”,能够从一个“超文本”跳跃到另一个“超文本”,形成复杂的非线性、网状的结构关系。

HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范

HTTP不是什么?

HTTP 不是互联网。

HTTP 不是编程语言。

HTTP 不是 HTML。

HTTP 不是一个孤立的协议。

在互联网世界里,HTTP 通常跑在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。此外,还有一些协议依赖于 HTTP,例如 WebSocket、HTTPDNS 等。这些协议相互交织,构成了一个协议网,而 HTTP 则处于中心地位。

03 | HTTP世界全览(上):与HTTP相关的各种概念

网络世界

互联网的正式名称是 Internet,里面存储着无穷无尽的信息资源,我们通常所说的“上网”实际上访问的只是互联网的一个子集“万维网”(World Wide Web),它基于HTTP 协议,传输 HTML 等超文本资源,能力也就被限制在 HTTP 协议之内。

浏览器

览器的正式名字叫“Web Browser”,顾名思义,就是检索、查看互联网上网页资源的应用程序,名字里的 Web,实际上指的就是“World Wide Web”,也就是万维网。

在 HTTP 协议里,浏览器的角色被称为“User Agent”即“用户代理”,意思是作为访问者的“代理”来发起 HTTP 请求。不过在不引起混淆的情况下,我们通常都简单地称之为“客户端”。

Web 服务器

当我们谈到“Web 服务器”时有两个层面的含义:硬件和软件。

硬件含义就是物理形式或“云”形式的机器,在大多数情况下它可能不是一台服务器,而是利用反向代理、负载均衡等技术组成的庞大集群。但从外界看来,它仍然表现为一台机器,但这个形象是“虚拟的”。

软件含义的 Web 服务器可能我们更为关心,它就是提供 Web 服务的应用程序,通常会运行在硬件含义的服务器上。它利用强大的硬件能力响应海量的客户端 HTTP 请求,处理磁盘上的网页、图片等静态文件,或者把请求转发给后面的 Tomcat、Node.js 等业务应用,返回动态的信息。

CDN

浏览器和服务器是 HTTP 协议的两个端点,那么,在这两者之间还有一个重要角色就叫做 CDN。

CDN,全称是“Content Delivery Network”,翻译过来就是“内容分发网络”。它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。

爬虫

HTTP 协议并没有规定用户代理后面必须是“真正的人类”,它也完全可以是“机器人”,这些“机器人”的正式名称就叫做“爬虫”(Crawler),实际上是一种可以自动访问 Web 资源的应用程序。

爬虫也有不好的一面,它会过度消耗网络资源,占用服务器和带宽,影响网站对真实数据的分析,甚至导致敏感信息泄漏。所以,又出现了“反爬虫”技术,通过各种手段来限制爬虫。其中一项就是“君子协定”robots.txt,约定哪些该爬,哪些不该爬。

无论是“爬虫”还是“反爬虫”,用到的基本技术都是两个,一个是 HTTP,另一个就是HTML。

HTML/WebService/WAF

HTML是 HTTP 协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器“渲染”出可视化页面。

接下来是Web Service,它的名字与 Web Server 很像,但却是一个完全不同的东西。Web Service 是一种由 W3C 定义的应用服务开发规范,使用 client-server 主从架构,通常使用 WSDL 定义服务接口,使用 HTTP 协议传输 XML 或 SOAP 消息,也就是说,它是一个基于 Web(HTTP)的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网。

WAF是近几年比较“火”的一个词,意思是“网络应用防火墙”。与硬件“防火墙”类

似,它是应用层面的“防火墙”,专门检测 HTTP 流量,是防护 Web 应用的安全技术。

04 | HTTP世界全览(下):与HTTP相关的各种协议

TCP/IP

TCP/IP 协议实际上是一系列网络通信协议的统称,其中最核心的两个协议是TCP和IP,其他的还有 UDP、ICMP、ARP 等等,共同构成了一个复杂但有层次的协议栈。

这个协议栈有四层,最上层是“应用层”,最下层是“链接层”,TCP 和 IP 则在中间:TCP 属于“传输层”,IP 属于“网际层”。

IP 协议是“Internet Protocol”的缩写,主要目的是解决寻址和路由问题,以及如何在两点间传送数据包。

TCP 协议是“Transmission Control Protocol”的缩写,意思是“传输控制协议”,它位于 IP 协议之上,基于 IP 协议提供可靠的、字节流形式的通信,是 HTTP 协议得以实现的基础。

DNS

相当于对应你身份证号码的名字,别人不需要通过身份证号码来记住你,名字就够了。

URI/URL

URI(Uniform Resource Identifier),中文名称是 统一资源标识符,使用它就能够唯一地标记互联网上资源。

URI 另一个更常用的表现形式是URL(Uniform Resource Locator), 统一资源定位符,也就是我们俗称的“网址”,它实际上是 URI 的一个子集,不过因为这两者几乎是相同的,差异不大,所以通常不会做严格的区分。

HTTPS

它的全称是**“HTTP over SSL/TLS”**,也就是运行在 SSL/TLS 协议上的 HTTP。

SSL 的全称是“Secure Socket Layer”,由网景公司发明,当发展到 3.0 时被标准化,改名为 TLS,即“Transport Layer Security”,但由于历史的原因还是有很多人称之为SSL/TLS,或者直接简称为 SSL。

代理

代理有很多的种类,常见的有:

匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器;透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客

户端;正向代理:靠近客户端,代表客户端向服务器发送请求;反向代理:靠近服务器端,代表服务器响应客户端的请求;

05 | 常说的“四层”和“七层”到底是什么?“五层”“六层”哪去了?

TCP/IP 网络分层模型

第一层叫“链接层”(link layer),负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络上的设备,所以有时候也叫 MAC层。

第二层叫“网际层”或者“网络互连层”(internet layer),IP 协议就处在这一层。因为IP 协议定义了“IP 地址”的概念,所以就可以在“链接层”的基础上,用 IP 地址取代MAC 地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把 IP 地址再“翻译”成 MAC 地址就可以了。

第三层叫“传输层”(transport layer),这个层次协议的职责是保证数据在 IP 地址标记的两点之间“可靠”地传输,是 TCP 协议工作的层次,另外还有它的一个“小伙伴”UDP。

协议栈的第四层叫“应用层”(application layer),由于下面的三层把基础打得非常好,所以在这一层就“百花齐放”了,有各种面向具体应用的协议。例如 Telnet、SSH、FTP、SMTP 等等,当然还有我们的 HTTP。

OSI 网络分层模型

OSI,全称是“开放式系统互联通信参考模型”(Open System Interconnection Reference Model)。

OSI 模型分成了七层,部分层次与 TCP/IP 很像,从下到上分别是:

第一层:物理层,网络的物理形式,例如电缆、光纤、网卡、集线器等等;第二层:数据链路层,它基本相当于 TCP/IP 的链接层;第三层:网络层,相当于 TCP/IP 里的网际层;第四层:传输层,相当于 TCP/IP 里的传输层;第五层:会话层,维护网络中的连接状态,即保持会话和同步;第六层:表示层,把数据转换为合适、可理解的语法和语义;第七层:应用层,面向具体的应用传输数据。

06 | 域名里有哪些门道?

域名使用字符串来代替 IP 地址,方便用户记忆,本质上一个名字空间系统;DNS 就像是我们现实世界里的电话本、查号台,统管着互联网世界里的所有网站,是一个“超级大管家”;DNS 是一个树状的分布式查询系统,但为了提高查询效率,外围有多级的缓存;使用 DNS 可以实现基于域名的负载均衡,既可以在内网,也可以在外网。

07 | 自己动手,搭建HTTP实验环境

额,简言之,chrome、Telnet、wireshark、openresty。

安装都挺简单的,一路next。

附上github链接:/chronolaw/http_study

如果觉得《“透视HTTP协议”之破冰篇个人总结》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。