浏览器
浏览器的名字叫“Web Browser”,“world Wide Wed”,就是检索、查看互联网上网页资源的应用程序,也就是万维网。
浏览器本质上是一个HTTP的请求方,使用HTTP协议获取网络上的各种资源;还有一些额外的功能,比如HTML排版引擎用来展示页面,JavaScript引擎用来实现动态化效果;开发者工具用来调试网页,以及五花八门的各种插件和扩展。
在HTTP协议里,浏览器的角色被称为“User Agent”,即用户代理,意思是作为访问者的“代理”来发起HTTP请求。
Web服务器
Web服务器是HTTP协议里相应请求的主体,通常把控大多数网络资源;
一般包括两个层面的含义:硬件和软件。
硬件含义就是物理形式或“云”形式的机器,在大多数情况下不是一台服务器,而是通过反向代理、负载均衡等技术组成的庞大集群。但从外界来看,仍然表现为一台机器,但这个形象是“虚拟”的。
软件含义的Web服务器就是提供Web服务的应用程序,通常会运行在硬件含义的服务器上。利用强大的硬件能力响应海量的客户端HTTP请求,处理磁盘上的网页、图片等静态文件,或者把请求转发给后面的Tomcat、Node.js等业务应用,返回动态信息。
常见的Web服务器有Apache,到今天已快25年,功能很完善,学习资料多,门槛低,是很多创业者建站的入门产品。
Nginx是后起之秀,特点是高性能,高稳定,易于扩展。自2004年推出后就不断蚕食Apache的市场份额,在高流量的网站中是不二之选。
此外,还有Windows上的IIS、java 的 Jetty/Tomcat等,因为性能不是很高,所以在互联网上应用的较少。
CDN
浏览器和服务器是HTTP协议的两个端点,中间会经过“重重关卡”,其中一个重要角色就是CDN。
CDN,全称是“Content Delivery Network”,翻译过来就是“内容分发网络”。应用了HTTP协议中的缓存和代理技术,代替源站响应客户端的请求。
CDN的作用: 可以缓存源站的数据,让浏览器的请求不用“千里迢迢”的到达源站服务器,直接在“半站”就可以获取响应。如果CDN的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。
CDN也是互联网中的一项重要基础设施,除了基本的网络加速外,还提供负载均衡、安全防护、边缘计算、跨运营商网络等功能,能够成倍的“放大”源站服务器的服务能力,很多云服务商都把CDN作为产品的一部分。
爬虫
HTTP协议并没有规定用户代理后面必须是“真正的人类”,他也完全可以是“机器人”;
爬虫是一种用户代理,实际上是一种可以自动访问Web资源的应用程序,代替我们访问互联网。
“爬虫”这个名字非常形象,他们就像是一只只不知疲倦的蚂蚁,在无边无际的网络上爬来爬去,不停在网站间奔走,搜集抓取各种信息。
据统计,互联网上至少有50%的流量都是爬虫产生的,某些特定领域的比例还会更高;
爬虫是怎么来的呢?
绝大多数是各大搜索引擎“放“出来的,抓取网页存入庞大的数据库,再建立关键字索引,这样我们才能够在搜索引擎中快速的找到搜索到互联网角落里的页面。
爬虫也有不好的一面,它会过度消耗网络资源,占用服务器和带宽,影响网站对真实数据的分析,甚至导致敏感信息泄露。所以,又出现了”反爬虫“技术,通过各种手段来限制爬虫。其中一项就是”君子协定“robots.txt,约定哪些该爬,哪些不该爬。
无论是“爬虫”和“反爬虫”,用到的基本技术都是两个,一个是HTTP,另一个就是HTML。
HTML/WebService/WAF
HTML是HTTP协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器“渲染”出可视化页面。
HTML目前有两个主要的标准,HTML4和HTML5.广义上的HTML通常是指HTML、JavaScript、CSS等前端技术的组合,能够实现比传统静态页面更丰富的动态页面。
Web Service,是一种由W3C定义的应用服务开发规范,使用client-server主从架构,通常使用WSDL定义服务接口,使用HTTP协议传输XML或者SOAP消息;也就是说,它是一个基于Web(HTTP)的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网。
因为采用了HTTP协议传输数据,所以在Web Service架构里服务器和客户端可以采用不同的操作系统或编程语言开发。例如服务端用linux+java,客户端用windows+c#,具有跨平台跨语言的特点。
WAF是“网络应用防火墙”。与硬件“防火墙”类似,它是应用层面的“防火墙”,专门检测HTTP流量,是防护Web应用的安全技术。
WAF通常位于Web服务器之前,可以阻止如SQL注入,跨站脚本等攻击,目前应用较多的一个开源项目是ModSecurity,它能够完全集成进Apache或者Nginx。