HTTP 是什么
Last updated
Last updated
HTTP,HyperText Transfer Protocol,超文本传输协议。
协议
2+个参与者,对彼此行为的约定和规范
传输
双向传输,中间可以有中转或接力
超文本
从简单的字符文字(文本)到图片、音频、视频,甚至是压缩包等 且包含超链接(从一个超文本跳跃到另一个超文本) 比如 HTML 页面
协议:HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及相关的各种控制和错误处理方式。
传输协议:HTTP 是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。
超文本传输协议:HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
HTTP 是一个应用层的协议,通常基于 TCP/IP,它能够在网络上的任意两点之间传输文字、图片、音频、视频等超文本数据。
HTTP 协议不是一个孤立的协议,它需要下层很多其它协议的配合。
TCP/IP 协议,用来实现寻址、路由和可靠的数据传输
TCP/IP 协议实际上是一系列网络通信协议的统称,共同构成了一个复杂但有层次的协议栈
最核心的两个协议是 TCP 和 IP,还有 UDP、ICMP、ARP 等
用 IP 地址建立 TCP 连接
DNS 协议,用来实现对互联网上主机的定位查找
DNS,Domain Name System,域名系统
URI,Uniform Resource Identifier,统一资源标识符。使用它就能够唯一地标记互联网上资源
URL,Uniform Resource Locator, 统一资源定位符。也就是我们俗称的网址
URL 实际上是 URI 的子集,不过因为这两者几乎是相同的差异不大,所以通常不做严格区分
Proxy 代理:既可以转发客户端的请求,也可以转发服务器的应答
正向代理:靠近客户端,代表客户端向服务器发送请求
反向代理:靠近服务器端,代表服务器响应客户端的请求
匿名代理:完全“隐匿”了被代理的机器,外界看到的只是代理服务器
透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客户端
互联网的正式名称是 Internet,里面存储着无穷无尽的信息资源。
万维网,World Wide Web,就是通常所说的“上网”,它只是互联网的一个子集。WWW 基于 HTTP 协议,传输 HTML 等超文本资源,能力也就被限制在 HTTP 协议之内。
万维网之外的资源,例如电子邮件、BT 和 Magnet 点对点下载、FTP 文件下载、SSH 安全登录、各种即时通信服务等等,它们都需要用各自的专有协议来访问。
把互联网 ≈ 万维网 ≈ HTTP 应该也不算大错。因为 HTTP 协议非常灵活、易于扩展,而且“超文本”的表述能力很强,所以很多其它原本不属于 HTTP 的资源也可以“包装”成 HTTP 来访问。这就是我们为什么总能看到各种网页应用(微信网页版、邮箱网页版)的原因。现在的互联网 90% 以上的部分都被万维网,也就是 HTTP 所覆盖。
HTTP 协议中的两个端点称为请求方和应答方。请求方通常就是 Web 浏览器,也叫 user agent,应答方是 Web 服务器,存储着网络上的大部分静态或动态的资源。
浏览器,本质上是一个 HTTP 协议中的请求方,使用 HTTP 协议获取网络上的各种资源
服务器,有两个层面:硬件和软件
在浏览器和服务器之间还有一些“中间人”的角色,如 CDN、网关、代理等,它们也同样遵守 HTTP 协议,可以帮助用户更快速、更安全地获取资源。
CDN,Content Delivery Network,内容分发网络
CDN 应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求
爬虫,Crawler,实际上是一种可以自动访问 Web 资源的应用程序
仅有 HTTP 协议的两个端点:请求方和应答方
Wireshark:网络抓包工具,能够捕获在 TCP/IP 协议栈中传输的所有流量
Chrome/Firefox:作为 HTTP 协议中的 user agent
Telnet:命令行工具,基于 TCP 协议远程登录主机,用它来登录主机模拟浏览器操作
OpenResty:一个基于 Nginx 的强化包,功能非常丰富
linux,curl 命令,用 tcpdump 抓包