什么是服务器和客户端
查看网站时,你的 PC 或手机并不只是把画面显示出来。
实际上,是浏览器或应用向互联网上的服务器发送请求,然后服务器返回所需的数据。
这时,发送请求的一方称为客户端,接收请求并返回响应的一方称为服务器。
许多 Web 通信都建立在这种客户端和服务器的关系之上。
简单来说,Web 通信的基本形式如下。
客户端发出请求。 服务器作出响应。
本文将整理 Web 通信的基础,也就是“发出请求的一方”和“返回响应的一方”之间的关系。
查看网站意味着什么
当你用浏览器打开网站时,画面上会显示页面。
但是,这个页面并不是一开始就存在于你的终端里。
浏览器会与网站侧的服务器通信,取得显示页面所需的数据。
例如,假设你打开某个文章页面。
这时浏览器会向服务器发送这样的请求:
“请给我这个页面的数据。”
服务器接收这个请求,并返回显示页面所需的数据。
浏览器读取返回的数据,把文字、图片、按钮、布局等显示在画面上。
也就是说,查看网站这一行为由下面这样的流程构成。
- 浏览器向服务器发送请求
- 服务器接收请求
- 服务器返回所需的数据
- 浏览器把接收到的数据显示在画面上
从你的角度看,可能只是打开了一个页面。
但在背后,客户端和服务器之间正在进行“请求”和“响应”。
什么是客户端
客户端是指通信中发送请求的一方。
查看网站时,你的浏览器就是客户端。
例如 Chrome、Safari、Firefox、Edge 等浏览器,为了查看网站,会向服务器发送请求。
浏览器会向服务器请求:
“请给我显示这个页面所需的数据。”
然后,浏览器使用服务器返回的数据,把 Web 页面显示在画面上。
也就是说,浏览器并不只是一个显示应用。
它是向网站服务器发送请求,并显示返回数据的客户端。
应用也会成为客户端
成为客户端的不只有浏览器。
手机应用和 PC 应用,只要会向服务器发送请求,也会成为客户端。
例如打开 SNS 应用时,会显示时间线、通知、个人资料、图片、视频等。
这些信息并不是一开始就全部保存在手机里。
应用会向服务器发送请求,并从服务器接收最新数据。
例如 SNS 应用可能会向服务器发送下面这样的请求。
- 请给我时间线数据
- 请确认新的通知
- 请给我这个用户的个人资料
- 请给我这张图片或这个视频的数据
服务器会根据这些请求返回所需的数据。
然后应用把接收到的数据显示在画面上。
云笔记应用、聊天应用、在线游戏、文件共享应用等也是一样。
它们会向服务器请求所需的数据,并使用返回的数据运行。
也就是说,客户端并不是只指“浏览器”。
在通信中发送请求的一方,就是客户端。
什么是服务器
服务器是指通信中接收请求并返回所需数据的一方。
对于网站来说,服务器持有显示网站所需的数据。
例如新闻网站、搜索引擎、SNS、网购网站等,会接收来自使用者浏览器或应用的请求,并根据请求返回数据。
服务器返回的数据例如包括下面这些。
- HTML
- CSS
- JavaScript
- 图片
- 视频
- 文章正文
- 商品信息
- 用户信息
HTML 是表示页面文字和结构的数据。
CSS 是决定文字大小、颜色、位置等外观的数据。
JavaScript 是用于实现按钮点击后的动作和页面内处理的数据。
图片和视频是在页面内显示的媒体数据。
浏览器读取服务器返回的这些数据,并作为 Web 页面显示在画面上。
一个页面也会发生多次请求
打开一个 Web 页面时,浏览器不一定只通信一次就结束。
为了显示页面,可能需要多种数据。
例如打开某个文章页面时,浏览器首先取得页面主体的数据。
之后,还可能追加取得用于整理页面外观的 CSS、用于实现页面动作的 JavaScript、文章内的图片等。
也就是说,从你看来只是打开了一个页面,但背后可能发生了多次请求。
例如可能有下面这样的请求。
- 请给我页面主体的数据
- 请给我设计用的数据
- 请给我图片文件
- 请给我页面动作所需的数据
- 请给我最新评论或通知
服务器会根据各个请求返回所需的数据。
浏览器把返回的数据组合起来,作为一个 Web 页面显示在画面上。
这样理解会更容易:Web 页面是“浏览器把服务器返回的数据组装起来并显示出来的东西”。
网站数据在哪里
网站的数据基本上在服务器侧。
当你打开网站时,浏览器会连接服务器并取得所需的数据。
然后,浏览器把取得的数据显示在画面上。
也就是说,查看网站就是客户端去获取服务器上的数据,并在自己的终端上显示出来。
不过,已经加载过的一部分图片或文件,也可能临时保存在你的终端中。
这会用于再次打开同一页面时加快显示等用途。
即便如此,基本结构并不会改变。
网站数据在服务器侧,客户端根据需要取得这些数据。
服务器不一定是一台机器
本文为了方便,把“服务器”说明成一个单独的存在。
但是,在实际的 Web 服务中,服务器不一定是一台物理机器。
小型网站可能运行在一台服务器上。
但是,大型 Web 服务会有许多使用者同时访问。
因此,有时会由多台服务器分担处理。
例如可能会有下面这样的分工。
- 返回 Web 页面的服务器
- 分发图片和视频的服务器
- 管理用户信息的服务器
- 处理数据库的服务器
- 把访问分配到多台服务器的机制
现在,使用云来运行 Web 服务也很常见。
在云中,Web 服务运营者不是自己准备物理机器,而是使用云服务商提供的服务器环境。
此外,图片、视频、CSS、JavaScript 等的分发也可能使用 CDN。
CDN 是把数据放在多个地点,并从靠近使用者的地方分发的机制。
这样可以加快页面显示,也可以减轻原始服务器的负载。
不过,一开始没有必要记住所有细节结构。
首先重要的是,服务器具有接收客户端请求并返回所需数据的角色。
而在现实的 Web 服务中,这个角色有时不是由一台机器承担,而是由多台服务器、云、CDN 等共同支撑。
客户端和服务器由角色决定
客户端和服务器并不是只由机器种类决定的。
重要的是,在通信中承担什么角色。
发送请求的一方是客户端。
接收请求并返回响应的一方是服务器。
例如,你的 PC 平时查看网站时,是作为客户端运行的。
但是,如果在这台 PC 上公开 Web 服务,并接收其他终端的连接,那么这台 PC 也可以作为服务器运行。
也就是说,把客户端和服务器理解为“通信中的角色”,而不是“终端的名称”,会更容易理解。
思考匿名性时的重要视角
思考匿名性时,客户端和服务器的关系很重要。
因为在 Web 通信中,基本上是你的浏览器或应用向连接目标服务器发送请求。
服务器会接收来自客户端的请求。
因此,网站侧可能看到一定的信息。
例如,网站侧可能看到下面这些信息。
- 作为连接来源可见的 IP 地址
- 访问时刻
- 被请求的页面
- 与浏览器或终端有关的信息
- 与 有关的信息
这里重要的是,“你的终端直接连接这个网站”时,与“使用 、、代理等”或“连接目标网站使用 CDN”时,对方侧可见的信息会发生变化。
例如,直接连接 Web 网站时,连接目标服务器可能看到分配给你线路的 IP 地址。
另一方面,经由 VPN 或 Tor 等时,网站侧可能看到的不是你原本的 IP 地址,而是中继目标的 IP 地址。
另外,如果使用 Cookie,网站可能识别来自同一浏览器的访问。
不过,什么信息能看到、能看到到什么程度,会因通信路径、浏览器设置、网站侧机制、是否使用 HTTPS、Cookie 的使用方式等而变化。
在这个阶段需要理解的,不是细枝末节的跟踪技术。
首先重要的是,Web 通信具有客户端向服务器发送请求,服务器接收该请求的结构。
正因为有这个结构,才会出现“连接目标服务器能看到什么”的问题。
要理解匿名性,首先需要掌握这种客户端和服务器的关系。
总结
客户端是通信中发送请求的一方。
Web 浏览器、手机应用、PC 应用等,会成为向服务器发送请求的客户端。
服务器是接收请求并返回所需数据的一方。
网站的数据基本上放在服务器侧,浏览器或应用会从服务器取得所需的数据。
查看 Web 页面时,浏览器会向服务器请求“请给我这个页面的数据”。
服务器会返回 HTML、CSS、JavaScript、图片等。
浏览器读取接收到的数据,并显示在画面上。
此外,在现实的 Web 服务中,服务器不一定是一台物理机器。
也可能使用多台服务器、云、CDN 等。
即便如此,基本结构不会改变。
客户端发出请求,服务器作出响应。
这就是 Web 通信的基本结构。
思考匿名性时,需要以这个结构为前提,考虑连接目标服务器能看到什么。
相关工具
WhatIsMyIP
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
BrowserLeaks WebRTC
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
Tor Project
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
Proton VPN
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
URL : https://protonvpn.com/
Mullvad VPN
与本文相关的外部资源。只有在符合你的处境和威胁模型时再打开。
列在这里的原因: 它可能有助于理解本文主题,但位于 Anonymity Sense 之外,使用前应先自行确认。
URL : https://mullvad.net/