HTTP相关各种概念
网络世界
从抽象的、虚拟的层面来看,网络世界是一张一望无际的巨大网络,每一台电脑都是一个节点,均匀地分布在这张网上。
从现实世界,互联网是由许许多多个规模较小的网络里连接而成的。可能是几百台电脑的局域网,也可能是几万、几十万台电脑的广域网组成的,也可能是用电缆、光纤构成的固定网络,也可能是由基站、热点构成的移动网络。
浏览器
浏览器正式名字为“Web Browser”,顾名思义就是检索、查看网页资源的应用程序。
浏览器本质上是HTTP协议中的请求方,使用HTTP协议获取网络上的资源。
在HTTP协议中,浏览器的角色被定位为用户代理“user Agent”,意思是作为访问者的“代理”来发起HTTP请求,不过在不引起混淆的情况下,我们通常简单称之为客户端。
web服务器
Web服务器 Web Service是HTTP协议中的应答方,含有两层含义:硬件和软件。
硬件含义就是物理形式或“云”形式的机器,在绝大数情况下可能不是一台服务器,通常利用反向代理、负载均衡等技术组成的庞大集群,在外界看来,它仍然表现为一台机器,但这个形象是虚拟的。
软件含义就是提供Web服务的应用程序,通常会运行在硬件含义的服务器上。他利用强大的硬件能力响应海量的客户端HTTP请求,处理磁盘上的网页、图片等静态资源,或是把请求转发给后面的Tomcat、NodeJs等业务应用,返回动态的信息。
CDN
CDN,(Content Delivery Network)内容分发网络,应用了HTTP协议的缓存和代理技术,代替源服务器响应客户端的请求。
好处:它可以缓存源站的数据,让浏览器的请求不再“千里迢迢”到达源站服务器,直接在“半路”
就可以获取响应。如果CDN调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。
爬虫
HTTP协议没规定发起请求的一定是人类,它也完全可以是机器人,它的正式名字叫做爬虫。实际上是一种可以自动访问Web资源的应用程序。
爬虫是怎么来的呢?
绝大多数是由各大搜索引擎放出来的,抓取网页存入庞大的数据库,在建立关键字索引,这样我们才能在搜索引擎中快速的搜索到互联网角落里的页面。
爬虫也有不好的一面,他会过度消耗网络资源,占用服务器和宽带,影响网站对真实数据的分析,甚至导致敏感信息泄露,所以,又出现了“反爬虫”技术,通过各种手段来限制爬虫。其中一项就是“君子协定”robots.text,约定哪些该爬,哪些不该爬。
无论是爬虫还是反爬虫,用到的基本技术都是两个,一个是HTTP,一个是HTML。
HTML/WebService/WAF
HTML是HTTP协议传输的主要内容之一,它描述了超文本页面,用各种“标签”定义文字、图片等资源和排版布局,最终由浏览器“渲染”出可视化页面。
HTML目前有两个主要的标准,HTML4和HTML5。广义上的HTML通常是指HTML、CSS、JavaScript等前端技术的组合,能够实现比传统静态页面更丰富的动态页面。
WebService是由W3C定义的应用服务开发规范,使用client-server主从架构,通常使用WSDL定义服务接口,使用HTTP协议传输XML或SOAP消息,也就是说,他是一个基于Web(HTTP)的服务架构技术,既可以运行在内网,也可以适当保护后运行到外网。
因为采用了HTTP传输协议,因此Web Service架构里可以采用不用的操作系统和编程语言。
WAF全称是网络应用防火墙。与硬件防火墙类似,它是应用层面的防火墙,专门监控HTTP流量,是防护Web应用的安全技术。
WAF通常位于Web服务器之前,可以阻止如SQL注入,跨站脚本等攻击。目前应用比较多的是一个开源项目ModSecurity。
TCP/IP
IP(Internet Protocol),主要目的是解决寻址和路由问题,以及如何在两点之间传输数据包。IP协议使用“IP地址”的概念来定位每一台计算机。可以类比现实生活中的电话机,你拿着的手机相当于互联网上的计算机,而要打电话就必须接入电话网,由通讯公司分配一个电话号码,这个号码就相当于IP地址。
TCP协议是“Transmission Control Protocol”,传输控制协议,位于IP协议之上,基于IP协议提供可靠的、字节流形式的通讯,是HTTP协议实现的基础。
“可靠”是指保证数据不丢失·,“字节流”是指保证数据完整,所以在TCP协议的两端可以如同操作文件一样访问传输的数据,就像读写在一个封闭的管道里“流动”的字节。
HTTP更准确称为“HTTP over TCP/IP”
DNS
DNS(Domain Name System),用有意义的名字作为IP地址的等价替代。
在DNS中,域名又称为主机名(HOST),域名用.分隔成多个单词。级别从左到右逐级增高。三级域名.二级域名.顶级域名。
想要使用TCP/IP协议仍要使用IP地址,所以需要把域名做一个转换,“映射”到真实的IP地址,这就是域名解析。
URI/URL
URI(Uniform Resource Identifier),中文名统一资源标识符,使用它能够唯一标识互联网上的资源。
URL(Uniform Resource Locator),中文名统一资源定位符,也就是我们通常俗称的网址,它实际上是URI的一个子集,不过因为这两者几乎是相同的,差异不大,所以通常不会做严格的区分。
URI主要用的三个基本的部分:
- 协议名
- 主机名
- 路径
HTTPS
HTTPS全程是“HTTP over SSL/TSL”,运行在SSL/TSL协议之上的HTTP。它是负责加密通讯的安全协议,建立在TCP/IP之上,所以也是个可靠的传输协议,可以被用作在HTTP的下层。
因为HTTPS相当于是“HTTP+SSL/TSL+TCP/IP”。
SSL全称是“Secure Socket Layer”,由网景公司发明,当发展到3.0时被标准化,改名为“TSL”,即“Transport Layer Secure”,但由于历史的原因还是很多人称之为“SSL/TSL”,或者直接简称为“SSL”。
“对称加密”、“非对称加密”、“摘要算法”、“数字签名”、“数字证书”等技术。
代理
代理(proxy)是请求方和应答方中间的一个环节,作为中转站,既可以转发客户端的请求,也可以转发服务端的应答。
常见的代理:
- 匿名代理:完全“匿藏”了被代理的机器,外界看到的只是代理服务器。
- 透明代理:顾名思义,它在传输过程中是“透明开放”的,外界既知道代理,也知道客户端。
- 正向代理:靠近客户端,代表客户端向服务器发送请求。
- 反向代理:靠近服务端,代表服务端响应客户端的请求。
CDN实际上就是一种代理,它代替源站服务器响应客户端的请求,通常扮演着透明代理和反向代理的角色。
由于代理在传输过程中插入了一个中间层,所以可以在这个环节做很多有意思的事情。
比如:
- 负载均衡
- 内容缓存
- 安全防护
- 数据处理
此文章为11月Day3学习笔记,内容来源于极客时间《透视HTTP协议》,以梦为马,11月进步💪💪
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。