计算机网络(一)基础概念
本篇文章为计算机网络相关知识点整理及扩展
基于B站计算机网络课程:https://www.bilibili.com/video/BV1p69tYZEvN/?spm_id_from=333.1007.top_right_bar_window_history.content.click
如有错误,还望大家不吝指正
URL(统一资源定位符)
是一个用于标识互联网上资源的地址,包括域名、协议号、端口号、路径等信息。
以课程链接为例:
- 协议:https://(Hypertext Transfer Protocol Secure)是浏览器与服务器进行信息交流的规则。
- 域名:www.bilibili.com 是一种网络服务在互联网上,供人类记忆的名字,通过DNS域名解析成服务器的IP地址供计算机识别。( com:顶级域名,表示这是一个商业网站。 bilibili:二级域名,代表公司或网站的名称。 www 子域名,通常表示一个网站的万维网服务)
- 端口号:用于定向一种服务。https协议默认使用443端口,等同于www.bilibili.com:443
- 路径:/video/BV1p69tYZEvN(在数据库中的唯一标识符)/ 资源在服务器上具体存放的位置 通常对应服务器文件系统中的目录和文件名。
- 查询参数:?spm_id_from=333.1007.top_right_bar_window_history.content.click:由键值对组成,用来向服务器传递额外的信息。(spm_id_from:b站自己的参数,用于追踪流量来源。333.1007[特定内部编码].top_right_bar_window_history.content.click :SPM[Source Product Model]值,告诉服务器这个点击来自哪个页面)
DSN域名解析
将域名解析为IP地址,步骤如下:
- 你在浏览器中输入 www.bilibili.com,然后按下回车。
- 你的计算机首先会向 本地 DNS 服务器(通常由你的网络服务提供商提供)发出查询请求。
- 如果本地 DNS 服务器有 www.bilibili.com的 IP 地址缓存,它会立即返回给你。
- 如果本地 DNS 服务器没有,它会向 根域名服务器 发出查询。根域名服务器会告诉它.com这个顶级域的地址。
- 本地 DNS 服务器再向.com的顶级域名服务器发出查询,顶级域名服务器会告诉它 www.bilibili.com的权威域名服务器地址。
- 最后,本地 DNS 服务器向bilibili.com 的权威域名服务器发出查询。这个服务器保存着 www.bilibili.com 的真实 IP 地址,并将其返回。
- 本地 DNS 服务器将 IP 地址返回给你的电脑,并将其缓存起来以便下次快速访问。
- 你的电脑现在拥有了 IP 地址,可以向该 IP 地址对应的服务器发起连接请求。
IP地址/MAC地址
IP地址:用于在互联网上唯一标识一台物理服务器的数字地址。一个IP地址可以对应多个域名
MAC地址:每个网卡都有一个全球唯一的物理地址,即 MAC 地址。这个地址用于在局域网(LAN)内部识别设备,确保数据包能够被准确地发送到正确的计算机。
-
IP 地址(Internet Protocol Address)
-
作用层级: 在网络层(OSI 模型第三层)工作。
-
功能: IP 地址用于在不同网络之间进行逻辑寻址和路由。它标识了设备所在的网络位置,是数据包能够跨越不同网络(例如从你的家庭网络到互联网上的服务器网络)传输的关键。IP 地址分为 IPv4 和 IPv6 两种版本。
-
分配方式: IP 地址是可变的。它由网络管理员或互联网服务提供商(ISP)动态或静态分配给设备,当设备连接到不同的网络时,其 IP 地址通常会改变。
-
-
MAC 地址(Media Access Control Address)
-
作用层级: 在数据链路层(OSI 模型第二层)工作。
-
功能: MAC 地址用于在同一局域网(LAN)内部进行物理寻址。它标识了网络适配器(网卡)这一硬件设备,是数据包能够在同一网络中从一个设备直接发送到另一个设备的依据。
-
分配方式: MAC 地址是固定的。它由网卡制造商在生产时烧录在网卡芯片中,具有全球唯一性,通常以16进制数表示,例如
00-1B-44-11-3A-B7
。
-
Host字段/端口号
当你在浏览器中输入一个网址并按下回车时,一个网络请求会经历一系列分层寻址过程,才能精准地找到目标资源。这个过程可以概括为:IP 地址负责在网络中定位到正确的物理服务器,而端口号和Host 字段则在服务器内部,将请求精确地分发给对应的服务和虚拟主机
端口号:是传输层(如 TCP 或 UDP 协议)的概念,用于在一台物理服务器上区分不同的软件服务。
-
工作机制: 一台物理服务器的 IP 地址是唯一的,但它可能同时运行着多种服务,例如一个网页服务(Web Server)、一个数据库服务(Database Server)和一个文件传输服务(FTP Server)。每种服务都会绑定一个唯一的端口号。
-
寻址过程: 当一个数据包(包含 IP 地址和端口号)到达物理服务器时,操作系统会首先接收这个数据包,然后检查其中的端口号。它会根据这个端口号,将数据包准确地传递给正在监听该端口的应用程序(即软件服务器)。
-
示例: 网页服务通常绑定默认的 80 端口(HTTP)或 443 端口(HTTPS),数据库服务通常绑定 3306 端口(MySQL),而 FTP 服务通常绑定 21 端口。
Host 字段是应用层(HTTP 协议)的概念,用于在一个Web 服务器上区分不同的虚拟主机(Virtual Host)。
-
工作机制: 虚拟主机是 Web 服务器软件的一种配置,允许一台服务器托管多个域名。服务器会为每个域名(如
www.bilibili.com
、www.google.com
)配置一个独立的虚拟主机,并指定其对应的网站文件目录。 -
寻址过程: 当浏览器向 Web 服务器发起 HTTP 请求时,它会在请求头(Header)中明确包含
Host: www.bilibili.com
这样的信息。Web 服务器收到请求后,会检查这个 Host 字段,根据其值将请求精确地分发到对应的虚拟主机配置,并返回该虚拟主机目录下的网站内容。 -
示例: 尽管
www.bilibili.com
和www.youtube.com
可能最终解析到同一个 IP 地址,但 Web 服务器会通过检查Host
字段,将对bilibili
的请求导向 Bilibili 网站的文件目录,将对youtube
的请求导向 YouTube 网站的文件目录。
一个完整的网络请求流程,就是将这些概念串联起来的过程:
-
DNS 解析(域名 → IP 地址): 浏览器将用户输入的域名(例如
www.bilibili.com
)解析成一个 IP 地址,从而确定要访问哪台物理服务器。 -
传输层寻址(IP 地址 + 端口号): 浏览器根据协议(如 HTTPS 默认使用 443 端口)将请求发送到该 IP 地址和对应的端口号。数据包到达服务器后,操作系统将请求传递给正在监听该端口的软件服务器(例如 Web 服务器)。
-
应用层分发(Host 字段): 软件服务器接收到请求,检查 HTTP 请求头中的 Host 字段。它会根据
Host
字段的值,将请求分发给对应的虚拟主机,并最终返回正确的网站内容。
虚拟主机
虚拟主机是在一台物理服务器上,通过软件配置,可以托管多个独立域名和网络服务的一种技术。
工作流程:
-
服务器端配置:
-
管理员在一台物理服务器上安装并运行一个 Web 服务器软件(如 Apache 或 Nginx)。
-
在 Web 服务器的配置文件中,管理员会为每个域名创建独立的虚拟主机配置。
-
每个虚拟主机配置都包含该域名(如
www.example.com
)和该服务文件所在的根目录(如/var/www/example
)、日志文件路径等信息。
-
-
客户端请求:
-
用户在浏览器中输入一个域名,例如
www.example.com
。 -
浏览器通过 DNS 域名解析,将这个域名转换成服务器的 IP 地址。
-
浏览器向这个 IP 地址发起一个 HTTP/S 请求,并在请求头中明确包含
Host: www.example.com
这个字段。
-
-
服务器端处理:
-
物理服务器收到请求后,由于所有的域名都解析到了同一个 IP 地址,所有请求都会先到达这台服务器。
-
服务器内部的 Web 服务器软件会检查请求的
Host
字段。 -
根据
Host
字段的值,Web 服务器会查找其配置文件中对应的虚拟主机。 -
一旦匹配成功,服务器就知道应该去
/var/www/example
这个目录,找到并返回对应的网络服务内容(可以是网站文件、API 响应、图片等)。
-
HTTP 协议被广泛用于各种应用,因此一个虚拟主机可以用来提供:
-
传统网站: 服务于
www.example.com
,提供 HTML、CSS 和图片。 -
API 服务: 服务于
api.example.com
,提供 JSON 或 XML 数据。 -
文件存储服务: 服务于
files.example.com
,提供文件上传和下载功能。
软件服务器
软件服务器是一个程序,它运行在硬件服务器上,负责处理用户的请求,然后把网站的内容发送给用户。最常见的软件服务器是 Web 服务器(如 Nginx、Apache)
“软件服务器”这个称谓有一个非常关键的限定:它必须提供服务给其他程序或设备。
我们可以把程序分为两类:
-
客户端程序(Client): 这些程序通常是用户直接使用的,它们请求服务。比如你电脑上的浏览器、Word 文档、游戏客户端等。
-
服务器程序(Server): 这些程序在后台运行,它们提供服务。比如你访问的网站服务器、你玩游戏时连接的游戏服务器等。
ISP(网络服务提供商)
ISP 是你连接到互联网的门户和桥梁。它们运营和维护着庞大的网络基础设施,包括服务器、路由器、光缆等,以确保用户能够:
-
接入互联网: ISP 为你分配一个唯一的 IP 地址,并提供物理连接(如光纤、DSL、同轴电缆或无线网络),让你能够将你的设备连接到他们的网络。
-
网络路由: ISP 的路由器负责将你的数据包(例如,你发出的网页请求)路由到互联网上的目的地服务器。
-
其他服务: 除了基本的网络接入,许多 ISP 还提供电子邮件服务、网页托管、云存储等增值服务
参考模型
碎碎念:原本的想法是把所有知识点整理到一篇文章里面,结果开始整理了才发现内容有点多,全放在一篇里过于臃肿,还是决定分成几篇文章来进行整理,后续有关概念的内容都会整理到这篇文章中(点个关注不迷路(¬‿¬))
以上, 跟着光。