首页 > 其他分享 >【学习笔记】透视HTTP协议(三):与HTTP相关的各种概念

【学习笔记】透视HTTP协议(三):与HTTP相关的各种概念

时间:2024-06-06 18:28:58浏览次数:18  
标签:Web 浏览器 协议 透视 CDN 笔记 服务器 HTTP

 本文是一篇学习笔记,学习的课程是极客时间的《透视HTTP协议》。

透视HTTP协议_HTTP_HTTPS-极客时间 (geekbang.org)

本文主要用来介绍跟HTTP相关的各种概念。

目录

一、网络世界

二、浏览器

三、Web服务器

四、CDN

五、爬虫

六、HTML/WebService/WAF


一、网络世界

互联网是由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万台电脑的广域网,可能是用电缆、光纤构成的固定网络,也可能是用基站、热点构成的移动网络……

互联网世界更像是由数不清的大小岛屿组成的“千岛之国”。

我们通常所说的“上网”实际上访问的只是互联网的一个子集“万维网”(World Wide Web),它基于HTTP协议,传输HTML等超文本资源,能力也就被限制在HTTP协议之内。互联网上绝大部分资源都使用HTTP协议传输.

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

二、浏览器

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

浏览器的正式名字叫“Web Browser”,顾名思义,就是检索、查看互联网上网页资源的应用程序,名字里的Web,实际上指的就是“World Wide Web”,也就是万维网。

浏览器本质上是一个HTTP协议中的请求方,使用HTTP协议获取网络上的各种资源。当然,为了让我们更好地检索查看网页,它还集成了很多额外的功能。例如,HTML排版引擎用来展示页面,JavaScript引擎用来实现动态化效果,甚至还有开发者工具用来调试网页,以及五花八门的各种插件和扩展。

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

三、Web服务器

浏览器是HTTP里的请求方,在协议另一端的应答方(响应方)是服务器Web Server

“Web服务器”时有两个层面的含义:硬件和软件。

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

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

比起层出不穷的各种Web浏览器,Web服务器就要少很多了,常见的有Apache、Nginx、Windows上的IIS、Java的Jetty/Tomcat。

Apache是老牌的服务器,到今天已经快25年了,功能相当完善,相关的资料很多,学习门槛低,是许多创业者建站的入门产品。

Nginx是Web服务器里的后起之秀,特点是高性能、高稳定,且易于扩展。自2004年推出后就不断蚕食Apache的市场份额,在高流量的网站里更是不二之选。

Windows上的IIS、Java的Jetty/Tomcat等,因为性能不是很高,所以在互联网上应用得较少。

四、CDN

浏览器和服务器是HTTP协议的两个端点,那么,在这两者之间还有别的什么东西吗?浏览器通常不会直接连到服务器,中间会经过“重重关卡”,其中的一个重要角色就叫做CDN。CDN位于浏览器和服务器之间,主要起到缓存加速的作用。

CDN,全称是“Content Delivery Network”,翻译过来就是“内容分发网络”。它应用了HTTP协议里的缓存和代理技术,代替源站响应客户端的请求。

CDN可以缓存源站的数据,让浏览器的请求不用“千里迢迢”地到达源站服务器,直接在“半路”就可以获取响应。如果CDN的调度算法很优秀,更可以找到离用户最近的节点,大幅度缩短响应时间。打个比方,就好像唐僧西天取经,刚出长安城,就看到阿难与迦叶把佛祖的真经递过来了,是不是很省事?

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

五、爬虫

前面说到过浏览器,它是一种用户代理,代替我们访问互联网。

但HTTP协议并没有规定用户代理后面必须是“真正的人类”,它也完全可以是“机器人”,这些“机器人”的正式名称就叫做“爬虫”(Crawler),实际上是一种可以自动访问Web资源的应用程序。

六、HTML/WebService/WAF

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

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

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

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。

 题外话:你觉得CDN在对待浏览器和爬虫时会有差异吗?

CDN在对待浏览器和爬虫时,理论上不应该有差异。CDN的核心工作是通过缓存和分发静态资源,来提高用户对网站内容的访问速度。无论是浏览器还是爬虫,它们都是发起HTTP请求的客户端,CDN的主要任务是有效地处理和响应这些请求,以便快速提供所需的内容。

然而,实际上CDN服务提供商可能会根据他们的策略和配置,对浏览器和爬虫进行不同的处理。例如,CDN可以通过User-Agent(请求头)来识别请求的来源是浏览器还是爬虫,并据此进行特殊处理。对于爬虫,CDN可能会返回特定的内容,如缓存的版本或限制其访问频率,以保护源站服务器免受过度爬取的负担。但这种差异处理更多是出于安全和性能优化的考虑,而非CDN本身的功能差异。

题外话:如何理解WebService与Web Server?

Web Server是使用HTTP协议与客户端浏览器交换信息,并为互联网客户提供服务(如浏览信息、下载资源等)的主机。它是一个被动的角色,主要等待并响应客户端的请求。

而WebService是自包含的、模块化的应用程序,它可以在Web中被描述、发布、查找以及调用。WebService基于网络,是分布式的模块化组件,执行特定的任务并遵守具体的技术规范。WebService更多的是一种服务提供方式,它使得不同的应用程序可以通过网络进行交互和集成。

简而言之,Web Server主要关注于提供静态或动态的内容给客户端,而WebService则更侧重于提供功能性的服务给其他应用程序。两者在架构和功能上有所重叠,但侧重点和使用场景有所不同。

标签:Web,浏览器,协议,透视,CDN,笔记,服务器,HTTP
From: https://blog.csdn.net/MAOZI8/article/details/139323122

相关文章

  • UI学习笔记(一)
    UI学习一:UIView基础frame属性隐藏视图对象:UIView的层级关系二:UIWindow对象三:UIViewController基础UIViewController使用四:定时器与视图移动五:UISwitch控件六:滑动条和进度条七:步进器和分栏控件总结一:UIView基础我们先来介绍一下frame属性frame属性frame框架可以......
  • 算法课程笔记——并查集基础
    算法课程笔记——并查集基础......
  • 常用笔记语法记录
    一、markdown常用操作1、标题利用#实现一级标题二级标题三级标题以此类推2、段落背景色语法<table><tr><tdbgcolor=#FF00FF>背景色的设置是按照十六进制颜色值:#7FFFD4</td></tr></table><table><tr><tdbgcolor=#FF83FA>背景色的设置是按照十六进制颜色值:#FF83FA</t......
  • Could not transfer artifact xxx.yyy from/to maven-default-http-blocker (http://0
    maven依赖下载,报Couldnottransferartifactxxx.yyyfrom/tomaven-default-http-blocker(http://0.0.0.0/):Blockedmirrorforrepositories:yyyy之类的错,上网搜了下https://blog.csdn.net/oscar999/article/details/131237101,发现settings.xml配置了如下片段。<mirror>......
  • Android网络请求:协程+Flow+Retrofit+OkHttp
    在Android开发中,网络请求是一个很常见的任务。随着Kotlin协程和Flow的流行,我们有了新的工具来优雅地处理网络请求。结合Retrofit和OkHttp,我们可以构建一个强大的、易于理解和维护的网络请求框架。一、Kotlin协程与FlowKotlin协程是Kotlin提供的一种轻量级线程管理方式。它......
  • GFormer论文阅读笔记
    GraphTransformerforRecommendation论文阅读笔记Abstract​ 本文提出了一种将生成式自监督学习与图转换器架构集成的推荐系统中的表示学习新方法。我们强调了高质量的数据增强与自监督借口相关的任务对提高性能的重要性。为此,我们提出了一种新方法,通过合理感知生成式SSL自......
  • Python学习笔记四(面向对象)
    传送门python及pycharm安装配置-CSDN博客 Python学习笔记(一)-CSDN博客 Python学习笔记(二)-CSDN博客 Python学习笔记三(面向对象)-CSDN博客 目录一、继承1.1什么是继承题外话:多继承的问题1.2重写1.3super()函数1.3.1调用父类的方法1.3.2多重继承中的调用(硬核)1.3.3......
  • C Primer Plus第六章学习笔记以及编程题
    1.dowhile循环while循环和for循环都是入口条件循环,即在循环的每次迭代之前检查测试条件,所以有可能根本不执行循环体中的内容。C语言还有出口条件循环(exit-conditionloop),即在循环的每次迭代之后检查测试条件,这保证了至少执行循环体中的内容一次。这种循环被称为dowhil......
  • 记录第一次http转https
    之前小程序用的后端是咸虾米老师的,昨天写小程序就想着自己又不是不会写?用自己的吧,然后发现微信小程序要域名是https协议的。看来又得学新东西了Q-Q查了下大概要这么几个步骤1.购买ssl证书2.通过naginx配置ssl证书3.将以前的http重定向到https那就从第一步开始,应该是这个......
  • HttpContext.Current 和 IHttpContextAccessor 的区别
    "HttpContext.Current"和"IHttpContextAccessor"是两个不同的方式,用来访问当前的HTTP上下文(即与HTTP请求相关的信息,如请求、响应、用户、会话等)。"HttpContext.Current"定义:"HttpContext.Current"是在ASP.NET(旧版.NETFramework)中用于访问当前HTTP上下文的静态属......