《透视HTTP协议》是 罗剑锋 (奇虎360技术专家)在极客时间开的一门专栏课,笔者记录一下学习笔记,仅供参考。
1、通常所说的“上网”实际上访问的只是互联网的一个子集“万维网”(World Wide Web)
World Wide Web 它基于 HTTP 协议,传输 HTML 等超文本资源,能力也就被限制在 HTTP 协议之内。
2、互联网上还有许多万维网之外的资源
例如常用的电子邮件、BT 和 Magnet 点对点下载、FTP 文件下载、SSH 安全登录、各种即时通信服务等等,它们需要用各自的专有协议来访问。
浏览器的正式名字叫“Web Browser”,顾名思义,就是检索、查看互联网上网页资源的应用程序
Chrome、Firefox、Safari、IE、Edge、Opera。。。
浏览器本质上是一个 HTTP 协议中的请求方,使用 HTTP 协议获取网络上的各种资源。集成了很多额外的功能
比如:HTML 排版引擎用来展示页面,JavaScript 引擎用来实现动态化效果,甚至还有开发者工具用来调试网页,等等插件和扩展。
在 HTTP 协议里,浏览器的角色被称为“User Agent”即“用户代理”,作为访问者的“代理”来发起 HTTP 请求。
浏览器是 HTTP 里的请求方,另一端的应答方(响应方)就是服务器,Web Server。
Web 服务器两个层面的含义:
硬件含义:物理形式或“云”形式的机器
软件含义:提供 Web 服务的应用程序
Apache、Nginx、Windows 上的 IIS、Java 的 Jetty/Tomcat 等
CDN,全称Content Delivery Network(内容分发网络)。应用了 HTTP 协议里的缓存和代理技术,代替源站响应客户端的请求。
好处:它可以缓存源站的数据。如果 CDN 的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。
其他:CDN 除了基本的网络加速外,还提供负载均衡、安全防护、边缘计算、跨运营商网络等功能
“爬虫”(Crawler),实际上是一种可以自动访问 Web 资源的应用程序。
1、来源:绝大多数爬虫是由各大搜索引擎“放”出来的,抓取网页存入庞大的数据库,再建立关键字索引,这样我们才能够在搜索引擎中快速地搜索到互联网角落里的页面。
2、爬虫坏处:它会过度消耗网络资源,占用服务器和带宽,影响网站对真实数据的分析,甚至导致敏感信息泄漏。
3、“君子协定”:robots.txt约定哪些该爬,哪些不该爬。
4、基本技术:无论是“爬虫”还是“反爬虫”,用到的基本技术都是两个,一个是 HTTP,另一个就是 HTML。
1、HTML 是 HTTP 协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器“渲染”出可视化页面。
2、Web Service:是一种由 W3C 定义的应用服务开发规范,使用 client-server 主从架构,通常使用 WSDL 定义服务接口,使用 HTTP 协议传输 XML 或 SOAP 消息,也就是说,它是一个基于 Web(HTTP)的服务架构技术,既可以运行在内网,也可以在适当保护后运行在外网。
3、WAF:是“网络应用防火墙”。与硬件“防火墙”类似,它是应用层面的“防火墙”,专门检测 HTTP 流量,是防护 Web 应用的安全技术。
WAF 通常位于 Web 服务器之前,可以阻止如 SQL 注入、跨站脚本等攻击,目前应用较多的一个开源项目是 ModSecurity,它能够完全集成进 Apache 或 Nginx。
1、互联网上绝大部分资源都使用 HTTP 协议传输
2、浏览器是 HTTP 协议里的请求方,即 User Agent
3、服务器是 HTTP 协议里的应答方,常用的有 Apache 和 Nginx
4、CDN 位于浏览器和服务器之间,主要起到缓存加速的作用
5、爬虫是另一类 User Agent,是自动访问网络资源的程序