与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 协议》

相关推荐
无所谓จุ๊บ34 分钟前
树莓派开发相关知识十 -小试服务器
服务器·网络·树莓派
道法自然040242 分钟前
Ethernet 系列(8)-- 基础学习::ARP
网络·学习·智能路由器
EasyCVR2 小时前
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
运维·服务器·网络·人工智能·ffmpeg·音视频
城南vision2 小时前
计算机网络——HTTP篇
网络协议·计算机网络·http
明月看潮生2 小时前
青少年编程与数学 02-003 Go语言网络编程 15课题、Go语言URL编程
开发语言·网络·青少年编程·golang·编程与数学
‍。。。3 小时前
使用Rust实现http/https正向代理
http·https·rust
龙哥说跨境3 小时前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
懒大王就是我3 小时前
C语言网络编程 -- TCP/iP协议
c语言·网络·tcp/ip
Elaine2023914 小时前
06 网络编程基础
java·网络
海绵波波1075 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip