与HTTP相关的各种概念

网络世界

网络世界中最重要的一个名词就是互联网(Internet),它以TCP/IP协议族为基础,构建成了一望无际的信息传输网络。而我们通常所说的"上网",主要就是访问互联网的一个子集------万维网(World Wide Web),里边的信息以HTML为载体,基于HTTP协议,所以它的能力就被束缚在HTTP协议内。

互联网上还有许多万维网之外的资源,例如常用的电子邮件、BT 和 Magnet 点对点下载、FTP 文件下载、SSH 安全登录、各种即时通信服务等等,它们需要用各自的专有协议来访问。

不过由于 HTTP 协议非常灵活、易于扩展,而且"超文本"的表述能力很强,所以很多其他原本不属于 HTTP 的资源也可以"包装"成 HTTP 来访问,这就是我们为什么能够总看到各种"网页应用"------例如"微信网页版""邮箱网页版"------的原因。

综合起来看,现在的互联网 90% 以上的部分都被万维网,也就是 HTTP 所覆盖,所以把互联网约等于万维网或 HTTP 应该也不算大错。

浏览器

浏览器是网络传输的请求方,使用 HTTP 协议获取网络上的各种资源。浏览器正式名字叫"Web Browser",顾名思义,就是检索、查看互联网上网页资源的应用程序,名字里的 Web,实际上指的就是"World Wide Web",也就是万维网。

常见的浏览器有 Google 的 Chrome、Mozilla 的 Firefox、Apple 的 Safari、Microsoft 的 IE 和 Edge,还有小众的 Opera 以及国内的各种"换壳"的"极速""安全"浏览器。

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

服务器

网络传输除了上边的请求方,还有有应答方------服务器。服务器有两种不同层次的含义,一种是硬件上的含义,一种是软件上的含义。

硬件上的含义:

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

软件上的含义:

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

Apache、Nginx、Windows 上的 IIS、Java 的 Jetty/Tomcat 等都是软件服务器。

CDN

从上边的描述可以看到HTTP的两点分别是浏览器和服务器,那么中间还有一个重要关卡------CDN(Content Delivery Network,中文全称是内容分发网络)。它应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。

CDN的好处:

它可以缓存源站的数据,让浏览器的请求不用"千里迢迢"地到达源站服务器,直接在"半路"就可以获取响应。如果 CDN 的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。

CDN 也是现在互联网中的一项重要基础设施,除了基本的网络加速外,还提供负载均衡、安全防护、边缘计算、跨运营商网络等功能,能够成倍地"放大"源站服务器的服务能力,很多云服务商都把 CDN 作为产品的一部分。

爬虫

爬虫(Crawler)与浏览器拥有相同的角色------用户代理。爬虫是一种可以自动访问 Web 资源的应用程序。

绝大多数是由各大搜索引擎"放"出来的,抓取网页存入庞大的数据库,再建立关键字索引,这样我们才能够在搜索引擎中快速地搜索到互联网角落里的页面。

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

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

HTML

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

HTML 目前有两个主要的标准,HTML4 和 HTML5。广义上的 HTML 通常是指 HTML、JavaScript、CSS 等前端技术的组合,能够实现比传统静态页面更丰富的动态页面。

WebService

Web Service的名字与 Web Server 很像,但却是一个完全不同的东西。

Web Service 是一种由 W3C 定义的应用服务开发规范,使用 client-server 主从架构,通常使用 WSDL(Web服务描述语言,Web Services Description Language) 定义服务接口,使用 HTTP 协议传输 XML 或 SOAP 消息,也就是说,它是一个基于 Web(HTTP)的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网。

因为采用了 HTTP 协议传输数据,所以在 Web Service 架构里服务器和客户端可以采用不同的操作系统或编程语言开发。例如服务器端用 Linux+Java,客户端用 Windows+C#,具有跨平台跨语言的优点。

WAF

WAF(Web Application Firewall,中文全称:网络应用防火墙)与硬件"防火墙"类似,它是应用层面的"防火墙",专门检测 HTTP 流量,是防护 Web 应用的安全技术。

WAF 通常位于 Web 服务器之前,可以阻止如 SQL 注入、跨站脚本等攻击,目前应用较多的一个开源项目是 ModSecurity,它能够完全集成进 Apache 或 Nginx。

此文章为10月Day 13学习笔记,内容来源于极客时间《透视 HTTP 协议》。

相关推荐
碧海银沙音频科技研究院1 小时前
炬芯ATS3089X手表的HFP通话不自动路由到设备BT的问题解决
网络·人工智能·嵌入式硬件·算法
EasyDSS5 小时前
连锁扩张管控难?一套视频会议/直播/点播/集群对讲EasyDSS音视频云平台打通门店全流程数字化
网络·音视频·easydss
比兔代理7 小时前
游戏、直播、远程办公遇到动态IP怎么办?
网络
Lzg_na7 小时前
ARP 地址解析协议详解
网络·网络协议
北京盛世宏博8 小时前
通信异常深度排查:以太网温湿度设备 TCP 粘包、UDP 丢包根治方案
单片机·网络协议·tcp/ip·udp·以太网·传感器·温湿度
上海广测检测科技有限公司8 小时前
消费类智能联网设备安全分级国标征求意见要点解析:三级五维框架与跨境对标逻辑
网络·经验分享
QZ166560951599 小时前
金融数据流转监测排行:从看见到拦截的距离
网络·安全·网络安全·金融
paopaokaka_luck9 小时前
滑雪场管理系统(AI智能助手流式对话,ECharts 运营数据分析、教练、雪具与场地一体化预约,钱包支付退款、订单核销与服务评价)
java·人工智能·spring boot·网络协议·数据分析·echarts
CCblandy10 小时前
HTTP 长连接 3 类故障实测:[WinError 10053]、99 个 TIME_WAIT、69 次多余握手,4 种对策怎么选
后端·python·网络协议·http·云原生·性能优化·架构
雪雪爱冲浪11 小时前
2026 年网络爬虫领域的Puppeteer vs. Playwright
爬虫·网络协议·测试工具·接口隔离原则