Linux C/C++ 学习日记(10):在浏览器上搜索信息的底层逻辑:(URL、DNS、HTTP、浏览器、搜索引擎)

注:该文用于个人学习记录和知识交流,如有不足,欢迎指点。

DNS、HTTP已经在我前面的文章介绍过了,如果没了解的可以去看一看

Linux C/C++ 学习日记(7):DNS协议及用C语言发送报文实现查询指定域名的IP地址-优快云博客

Linux C/C++ 学习日记(8):http协议的介绍,及基于该协议实现数据拉取-优快云博客

一、URL

1. 为什么会有URL这种东西?

维度具体内容
URL 的定义全称 Uniform Resource Locator(统一资源定位符),即 “网址”;本质是标准化的字符串,用于精准定位互联网上的资源(如网页、图片、文件),让浏览器、App 等工具能识别并获取资源。
诞生的核心原因

1. 早期地址格式不统一:不同服务器厂商(IBM、SUN 等)用不同方式表示资源位置,导致跨工具 / 跨系统无法通用;

2. 资源类型难区分:无统一标注资源类型的方式,工具无法确定用 HTTP、FTP 等哪种协议获取;

3. 用户记忆成本高:需手动输入 “IP + 端口 + 文件路径”,普通用户难以记住复杂信息。

解决的核心问题

1. 统一地址格式:规定 “协议 + 域名 + 端口 + 路径 + 查询参数” 的固定结构,所有工具和系统按同一规则识别,打破厂商壁垒;

2. 明确资源定位逻辑:通过 “协议” 标注资源类型(如 HTTP 对应网页、FTP 对应文件),通过 “路径 / 查询参数” 定位具体资源;

3. 降低记忆成本:用易记的 “域名” 替代 IP,默认隐藏常用端口(如 HTTPS 默认 443),用户只需记简单域名即可访问。

核心价值总结作为 “互联网资源的通用地址”,解决了 “资源定位、工具识别、用户记忆” 三大痛点,是浏览器访问网页、App 加载数据的基础,支撑了现代互联网

2. URL的结构

结构组成核心定义示例内容核心功能关键技术细节
协议(Scheme)客户端(浏览器 / App)与服务器通信的 “规则标准”,规定数据传输格式、加密方式等https

1. 决定数据是否加密(http未加密,https带 SSL/TLS 加密);

2. 明确客户端与服务器的交互逻辑(如请求格式、响应格式)。

1. 常见协议:http(网页传输)、https(安全网页)、ftp(文件传输)、mailto(邮件);

2. 协议后必须跟 :// 作为分隔符(如 https://),否则无法识别。

域名(Domain)服务器的 “网络标识名称”,用于替代难记的 IP 地址,方便用户记忆和访问www.baidu.com

1. 作为服务器的 “人类可读地址”,避免用户记忆 IP(如180.101.50.242);

2. 通过 DNS 解析可转换为服务器的实际 IP,实现对服务器的定位。

1. 域名结构:通常由 “主机名 + 顶级域名” 组成(如www是主机名,baidu.com是顶级域名);

2. 一个域名可对应多个 IP(负载均衡),一个 IP 也可对应多个域名(虚拟主机)。

端口(Port)服务器上 “不同服务的入口编号”,用于区分同一服务器上的不同服务(如网页服务、文件服务)默认443(隐藏),完整写法:443

1. 明确客户端要访问服务器的 “具体服务”(如 443 端口对应 HTTPS 服务,80 端口对应 HTTP 服务);

2. 避免同一服务器上的不同服务冲突(如同时开启网页服务和文件服务,用不同端口区分)。

1. 端口号范围:0-65535,其中 0-1023 是 “知名端口”(由 IANA 分配,如 80、443),1024-49151 是 “注册端口”(应用专用);

2. 若使用默认端口(如 HTTPS 用 443),URL 中可省略不写;非默认端口必须手动添加(如https://example.com:8443)。

路径(Path)服务器上 “具体资源的目录或文件路径”,用于定位服务器内部的某个资源/s

1. 相当于服务器的 “文件系统路径”,告诉服务器 “要获取哪个目录下的哪个资源”;

2. 示例中/s是百度搜索的 “功能路径”,服务器识别该路径后,会触发搜索功能的逻辑。

1. 路径以 / 开头,多个层级用 / 分隔(如/images/2024/photo.jpg,表示 “images 目录下的 2024 子目录中的 photo.jpg 图片”);

2. 若路径为 /(根路径),表示访问服务器的 “默认首页”(如https://www.baidu.com/ 访问百度首页)。

查询参数(Query)客户端向服务器传递的 “额外请求信息”,用于动态筛选或指定资源内容?wd=HTTP&tn=SE_PcZhidaoBatchRec

1. 向服务器传递用户需求(如wd=HTTP表示 “搜索关键词为 HTTP”);

2. 实现 “同一路径返回不同内容”(如同一搜索页面,不同关键词返回不同结果)。

1. 格式规则:以 ? 开头,多个参数用 & 分隔,每个参数是 “键 = 值” 的键值对(如wd=HTTP中,wd是键,HTTP是值);

2. 参数值若含特殊字符(如空格、中文),会自动进行 “URL 编码”(如空格编码为%20,中文 “百度” 编码为%E7%99%BE%E5%BA%A6),确保服务器能正确解析。

二、URL、DNS、HTTP三者的关系

维度URL(统一资源定位符)DNS(域名系统)HTTP(超文本传输协议)三者协作逻辑
核心角色资源 “地址提供者”域名 “翻译官”资源 “运输规则制定者”遵循 “定位→解析→传输” 流程:URL 定位资源→DNS 解析地址→HTTP 传输资源,形成完整访问链路
核心功能提供资源的完整地址(协议 + 域名 + 端口 + 路径 + 查询参数),明确 “要访问什么资源”将 URL 中的域名(如www.baidu.com)翻译成服务器 IP(如 180.101.50.242),解决 “资源在哪里”按 URL 定位的地址,通过标准化规则(请求 / 响应格式)传输资源,负责 “如何获取资源”URL 是基础(给目标),DNS 是桥梁(转地址),HTTP 是手段(传资源),三者缺一不可
本质属性静态的 “资源地址字符串”动态的 “域名 - IP 映射工具”动态的 “数据传输规则标准”-
协作流程(示例)1. 用户输入https://www.baidu.com/s?wd=HTTP(URL),明确目标是 “百度搜索 HTTP 关键词的资源”2. 浏览器向 DNS 服务器发送请求,将www.baidu.com解析为 IP(如 180.101.50.242)3. 浏览器通过 HTTP 协议向该 IP 发送请求,服务器返回搜索结果,再通过 HTTP 传输回浏览器三步依次执行,前一步的结果是后一步的前提(无 URL 则 DNS 无解析对象,无 IP 则 HTTP 无连接目标)
类比说明(寄快递)快递面单:写清 “收件地址(域名 + 路径)、运输方式(协议)”,明确寄件目标地址翻译器:把 “XX 路 XX 号(域名)” 翻译成 “门牌号编号(IP)”,方便快递员识别快递运输规则:规定打包标准(请求格式)、运输流程(数据传输)、签收方式(响应处理)面单(URL)给目标,翻译器(DNS)转地址,运输规则(HTTP)保送达,共同完成寄件(资源访问)
关键依赖关系

1. 是 DNS 解析的 “输入源”(无 URL 则 DNS 无域名可解析)

2. 是 HTTP 传输的 “目标地址”(无 URL 则 HTTP 不知传输什么资源)

1. 依赖 URL 中的域名才能工作(无域名则 DNS 无用)

2. 解析结果(IP)是 HTTP 建立连接的前提(无 IP 则 HTTP 无法找到服务器)

1. 依赖 URL 的目标信息(IP + 路径)(无目标则 HTTP 无传输方向)

2. 依赖 DNS 解析的 IP(无 IP 则 HTTP 无法连接服务器)

三者形成 “URL→DNS→HTTP” 的依赖链,任一环节缺失,均无法完成互联网资源访问
常见误区提醒

❌ 误区:URL=HTTP

✅ 纠正:URL 是地址,HTTP 是传输规则;URL 可搭配 FTP 等其他协议(如ftp://xxx.com/file.zip

❌ 误区:DNS 能直接定位资源

✅ 纠正:DNS 仅负责 “域名→IP” 翻译,无法定位具体资源(需结合 URL 的路径 / 查询参数)

❌ 误区:HTTP 可独立获取资源✅ 纠正:HTTP 需先知道资源地址(来自 URL+DNS 解析),否则无法传输三者是不同维度的工具,功能不可替代,需协同工作

总结:

DNS、URL、HTTP 的关系可简化为:URL 给 “目标”,DNS 转 “地址”,HTTP 跑 “运输”。没有 URL,就没有明确的访问目标;没有 DNS,就找不到服务器的具体位置;没有 HTTP,就无法把资源从服务器传输到客户端 —— 三者共同支撑了 “输入网址→看到网页” 的完整体验。

要不要我帮你补充一份 “三者协作异常的常见场景(如 DNS 解析失败、HTTP 请求错误)及排查方法表”,方便你应对实际访问问题?

三、浏览器、搜索引擎

1.浏览器

1.1 在没有浏览器之前人们是主要是通过什么获取信息的呢?

工具类型核心作用操作方式示例局限性
1. Telnet(远程终端协议)让用户通过本地电脑 “远程登录” 到服务器,直接操作服务器上的文件或程序

1. 在本地命令行输入 telnet ftp.example.com(连接目标服务器);

2. 输入服务器的账号密码登录;

3. 用 ls(查看文件列表)、get 文件名(下载文件)等指令获取数据。

- 只能显示纯文本,没有图片、视频等可视化内容;

- 操作全靠指令,记不住指令就无法使用;

- 安全性低,数据传输不加密。

2. FTP(文件传输协议)专门用于在不同电脑间传输文件(如文档、程序安装包)

1. 使用专用 FTP 客户端(如早期的 CuteFTP 雏形),或命令行输入 ftp 服务器IP

2. 登录后,用 put(上传文件)、get(下载文件)指令传输数据;

3. 部分公开服务器支持 “匿名登录”(无需账号密码),可直接下载公开文件。

- 仅能传输文件,无法 “浏览内容”(比如想预览文档内容,必须先下载到本地);

- 没有 “链接跳转” 功能,想换个服务器,必须重新输入新地址。

3. Gopher(菜单式信息系统)用 “层级菜单” 组织服务器上的文件和信息,比命令行更直观一点

1. 打开 Gopher 客户端,输入服务器地址(如 gopher://gopher.example.com);2. 屏幕显示文字菜单(如 “1. 科研论文 2. 实验数据”);

3. 输入菜单编号(如 “1”),即可查看对应分类下的文件列表,再选择下载。

- 仍以纯文本为主,最多支持简单的文字排版;

- 不同服务器的菜单格式不统一,换个服务器就要重新适应;

- 无法跨服务器 “跳转”,每个服务器都是独立的 “信息孤岛”。

1.2 浏览器的诞生

维度具体内容
一、浏览器的定义

1. 本质:用于访问互联网资源的应用软件

2. 核心功能

- 解析渲染:将服务器传输的 HTML、CSS、JavaScript 等代码,转化为用户可直观查看的可视化网页(含文字、图片、视频等)

- 网络请求:通过 HTTP/HTTPS 等协议,向服务器发起资源请求(如网页、文件),并接收返回内容

3. 常见示例:谷歌 Chrome、微软 Edge、Mozilla Firefox

二、诞生的核心原因

源于 1990 年代初互联网 “内容交互需求升级”,旧有工具(FTP、Telnet)无法满足超文本与万维网(WWW)的使用需求,核心痛点有 3 个:

1. 无超文本代码解析工具:超文本用 HTML 代码编写(如<img>表图片、<a>表链接),但 Telnet 等工具仅能显示纯文本,无法识别代码含义,像 “有代码书却无翻译工具”

2. 无资源可视化交互能力:超文本需 “点击链接跳转、加载图片视频、提交表单” 等交互,但 FTP/Telnet 仅能传输静态文件 / 文本,无法实现交互(如需手动输入新地址才能跳转网页)

3. 普通用户操作门槛高:访问资源需手动输入完整 URL(如http://180.101.50.242:80/index.html),还需理解 “协议、IP、端口” 等技术概念,远超日常使用需求

三、解决的核心问题

浏览器通过 “解析渲染 + 简化操作”,攻克早期痛点,让互联网从 “科研工具” 变为 “大众服务”:

1. 解决超文本代码可视化问题:能解析 HTML(结构)、CSS(样式)、JavaScript(交互)代码,将其转化为图文界面(如把<img src="logo.jpg">渲染成实际图片,<h1>渲染成大标题),让 “代码内容” 变 “可阅读网页”

2. 解决资源交互能力缺失问题:原生支持超文本交互需求:

- 点击<a>标签(链接),自动发起请求跳转目标网页

- 加载网页时,自动请求图片、视频等附属资源- 支持表单输入(如搜索框),用户提交后自动向服务器发数据(如百度搜索无需手动写请求指令)

3. 解决普通用户操作门槛高问题:隐藏复杂技术细节,降低操作成本:

- 支持域名访问:输入www.baidu.com,浏览器自动用 DNS 解析 IP,无需记数字 IP

- 自动补全协议 / 端口:默认用 HTTP/HTTPS,自动匹配 80/443 默认端口,无需手动输入

- 提供便捷功能:地址栏、书签、前进后退(如书签保存常用网址,点击即可访问),让浏览像 “翻书” 一样简单

四、核心价值总结浏览器是 “连接用户与万维网的核心桥梁”,核心价值是 **“把复杂的互联网技术转化为普通人能轻松使用的可视化工具”**:无浏览器时,用户需面对代码、IP、协议等技术细节;有浏览器后,仅需输入网址、点击链接,就能逛遍互联网

2. 搜索引擎

2.1 定义

维度具体内容
一、搜索引擎的定义

1. 本质属性:一种基于互联网的信息检索系统,核心是 “帮助用户快速定位所需信息”;

2. 核心工作流程

- 信息采集:通过 “网络爬虫” 主动抓取互联网中的网页、文件等信息;

- 信息存储:对抓取的信息进行自动索引(提取关键词、分类整理),存储到大型检索数据库;

- 信息检索:接收用户的查询指令(如关键词),在数据库中匹配相关信息;- 结果返回:通过排序算法对匹配结果排序,将最符合需求的信息(含资源网址)呈现给用户;

3. 核心功能:连接用户与互联网信息,提供 “查询 - 匹配 - 返回” 的一站式信息检索服务。

二、搜索引擎诞生的原因

源于 “互联网信息爆炸与用户查找效率的矛盾”,核心痛点为 “信息太多,找不到”:

1. 信息规模激增:随着互联网发展,全球网页数量突破数十亿且持续增长,形成庞大的 “信息海洋”;

2. 用户查找困难:在海量信息中,用户若想直接找到目标内容(如某篇文章、某个知识点),需逐个访问网站、手动筛选,如同 “大海捞针”,耗时且效率极低;

3. 需求催生工具:为解决 “信息过载” 导致的查找难题,搜索引擎应运而生,旨在通过技术手段降低信息获取门槛,帮用户快速、精准找到所需内容。

三、搜索引擎解决的核心问题

1. 提高信息获取效率

- 通过 “索引数据库” 和 “高效检索算法”,将原本需数小时甚至数天的手动查找,缩短至毫秒级;

- 无需用户逐个浏览网站,输入关键词即可快速匹配结果,大幅减少时间成本;

2. 实现精准信息定位

- 基于复杂排序算法(如网页相关性、权威性、用户体验),对检索结果按 “匹配度” 排序,将最符合用户需求的信息排在前列;

- 支持关键词细化(如 “2024 北京旅游攻略”),进一步缩小结果范围,避免无效信息干扰;

3. 整合和组织信息

- 打破信息壁垒,将来自不同网站、不同类型的信息(如新闻、视频、文档)整合到统一界面;

- 以标准化格式呈现结果(如标题、摘要、链接),提供 “一站式检索”,用户无需在多个平台间切换,简化信息获取流程。

2.2 构造

核心模块角色定位具体工作内容在系统中的核心作用类比(以 “数字化图书馆” 为例)
网络爬虫(Spider)信息采集员

1. 从 “种子 URL”(如知名网站首页)出发,自动遍历互联网网页;

2. 抓取网页的 HTML 代码、文字、图片等资源,记录网页更新时间;

3. 遵循 “robots 协议”(网站设置的抓取规则),不抓取禁止访问的页面;

4. 定期重新抓取已收录网页,确保信息时效性(如新闻类网页抓取频率高)。

为搜索引擎提供 “原始信息来源”,没有爬虫,后续的索引和查询都无数据可用。图书馆的 “图书采购员”:去各地书店 / 出版社搜集新书,带回图书馆。
索引数据库(Index DB)信息分类与存储库

1. 对爬虫抓取的网页内容进行 “预处理”:提取标题、关键词、正文摘要、网页链接等核心信息;

2. 按 “关键词倒排索引”(如 “HTTP” 关键词对应所有包含该词的网页链接)组织数据,大幅提升后续查询速度;

3. 对网页质量进行初步评估(如内容原创度、链接权威性),为排序提供基础数据。

将 “无序的原始信息” 转化为 “有序的可查数据”,是快速响应查询的关键。图书馆的 “图书分类架”:把新书按学科(如计算机、文学)、主题(如 HTTP、小说)分类编号,方便后续查找。
查询处理器(Query Processor)用户需求翻译官

1. 接收用户输入的关键词(如 “北京 明天 天气”),进行 “纠错处理”(如把 “天汽” 修正为 “天气”);

2. 进行 “语义理解”:拆分关键词逻辑(如 “北京” 是地点、“明天” 是时间、“天气” 是核心需求),补充相关词(如 “气温”“降水概率”);

3. 将处理后的 “结构化需求”(如 “地点:北京,时间:明天,类型:天气”)传递给索引数据库,触发查询。

准确理解用户真实需求,避免因关键词模糊或错误导致查询结果偏差。图书馆的 “咨询台工作人员”:听读者说 “想找明天北京天气的书”,明确需求是 “北京地区、次日、气象类信息”。
排序算法(Ranking Algorithm)信息筛选与排序员

1. 从索引数据库中匹配出 “与用户需求相关的网页”(如包含 “北京”“明天”“天气” 关键词的网页);

2. 按核心算法(如百度的 “百度搜索算法”、谷歌的 “PageRank”)对相关网页打分,评分维度包括:

- 内容相关性(关键词在网页中的位置、频率);

- 网页权威性(外部高质量链接数量);

- 用户体验(网页加载速度、是否适配移动端);

3. 按评分从高到低排序,确定最终展示给用户的结果顺序。

从 “相关网页” 中筛选出 “最符合用户需求的优质内容”,决定用户看到的结果优先级。图书馆的 “推荐专员”:从分类架中找出所有 “北京天气相关的书”,再按 “新书、权威作者、读者好评” 排序,把最好的几本放最前面。
用户交互界面(UI)信息展示与操作窗口

1. 提供 “搜索输入框”,支持文字、语音、图片等多种输入方式;

2. 按排序结果展示网页链接、标题、摘要、发布时间等信息,标注 “官方”“广告” 等标签;

3. 提供 “筛选工具”(如时间筛选 “近 1 周”、类型筛选 “新闻 / 视频”),方便用户进一步缩小结果范围;

4. 接收用户点击操作,跳转至目标网页。

连接 “用户” 与 “搜索引擎后台系统”,是用户直观操作和获取结果的唯一入口。图书馆的 “借阅窗口”:把排好序的书列表展示给读者,标注 “新书”“推荐” 标签,读者选书后帮忙取出。

3. 两者的区别和联系

3.1 区别

对比维度浏览器(如 Chrome、Edge)搜索引擎(如百度、谷歌)
核心定位「资源访问工具」:负责 “获取并展示资源”,是用户与网页的 “交互窗口”「资源检索服务」:负责 “筛选并推荐资源”,是用户与海量信息的 “连接桥梁”
本质属性独立的应用软件:需下载安装,有自己的运行程序和界面依赖载体的网络服务:没有独立软件,需通过浏览器 / App 才能使用
核心功能

1. 解析渲染:把 HTML、CSS 代码转成可视化网页(图文、视频);

2. 发起请求:用 HTTP/HTTPS 向服务器要资源;

3. 辅助功能:书签、下载、插件扩展等

1. 爬取索引:用爬虫抓网页,建索引库;

2. 响应查询:按关键词筛选资源并排序;

3. 结果展示:提供搜索结果列表(含链接、摘要)

用户操作逻辑

两种方式:

1. 直接输 URL(如www.bilibili.com)访问指定资源;

2. 打开搜索引擎链接,跳转后展示网页

一种方式:输关键词(如 “2024 电影推荐”),获取相关资源的链接,无法直接展示网页内容
没有它会怎样无法看到任何网页内容 —— 即使找到资源链接,也无法解析渲染成可视化界面无法快速找资源 —— 想访问网页,必须记住完整 URL,如同 “没地图找地址”

3.2 联系

维度具体内容
一、核心协作流程(3 步实现 “找资源→看资源”)

两者为 “上下游依赖关系”,需通过 3 个步骤协同,才能完成从 “有需求” 到 “见内容” 的全流程:

步骤 1:搜索引擎 “找资源”—— 定位目标

- 操作:用户打开浏览器,在地址栏输入搜索引擎网址(如www.baidu.com),进入搜索界面后输入关键词(如 “猫咪图片”);

- 分工:搜索引擎从自身索引库中,筛选出含 “猫咪图片” 的网页链接,以 “标题 + 摘要 + 链接” 的形式,在浏览器中展示结果列表;

- 类比:如同用美食 App 搜索 “附近奶茶店”,App 给出店铺地址列表。

步骤 2:浏览器 “接资源”—— 建立连接

- 操作:用户点击搜索结果中的某条链接(如https://img.abc.com/cat01.jpg);

- 分工:浏览器接收该 URL 后,自动触发两个动作:

① 通过 DNS 将 URL 中的域名(img.abc.com)解析为服务器 IP;

② 基于 HTTP 协议,向该 IP 的服务器发送 “获取猫咪图片网页” 的请求;

- 类比:如同按奶茶店地址,用导航软件找到店铺所在街道。

步骤 3:浏览器 “展资源”—— 可视化呈现

- 操作:服务器接收请求后,返回该网页的 HTML、CSS、JavaScript 代码;

- 分工:浏览器解析代码,将其转化为含图片、文字的可视化界面(即用户看到的猫咪图片网页);

- 类比:如同走进奶茶店,看到店内的菜单和环境。

二、关键误区:“浏览器内置搜索”≠功能融合

1. 误区表现:看到 Chrome、Edge 等浏览器支持 “直接在地址栏输关键词(如 “天气”)搜索”,误以为浏览器和搜索引擎 “合为一体”,功能无区分;

2. 真相拆解:这是 “浏览器内置搜索引擎调用入口”,核心功能仍完全分离,背后逻辑为:用户在浏览器地址栏输“天气” → 浏览器识别“非URL,是关键词” → 自动调用默认搜索引擎(如百度) → 搜索引擎筛选“天气”相关结果 → 浏览器渲染并展示结果页

3. 核心区别:搜索引擎始终负责 “筛选结果”,浏览器负责 “发起搜索请求 + 展示结果 + 渲染网页”,没有搜索引擎,浏览器无法生成搜索结果;没有浏览器,搜索引擎的结果无法被用户查看和交互。

3.3 先有的浏览器,后有的搜索引擎。

世界上第一个 Web 浏览器是 1990 年由伯纳斯 - 李开发的 “WorldWideWeb”(后更名为 Nexus)。

而最早的搜索引擎是 1990 年由加拿大蒙特利尔的麦吉尔大学学生 Alan Emtage、Peter Deutsch、Bill Wheelan 发明的 Archie,它主要用于自动索引互联网上匿名 FTP 网站文件。虽然 Archie 与现代搜索引擎的功能和形式有所不同,但它被认为是搜索引擎的先驱。

从严格意义上来说,1994 年 4 月 20 日正式亮相的 WebCrawler 是互联网上第一个支持搜索文件全部文字的全文搜索引擎。所以浏览器的出现时间要早于搜索引擎。

四、浏览器搜索的底层逻辑

从输入 “哔哩哔哩” 到进入网站:全流程技术步骤拆解:

整个过程是 “用户需求→工具协作→技术交互→画面呈现” 的闭环:

关键词(用户)→搜索引擎(找 URL)→超链接(触发 URL)→DNS(转 IP)→TCP(建通道)→HTTP(传资源)→浏览器(渲染画面)。

每个环节环环相扣,最终实现 “输入名字就能进入网站” 的便捷体验。

步骤参与角色具体操作与技术细节核心目标
1用户 + 浏览器

1. 用户打开浏览器(如 Chrome),点击地址栏;

2. 输入关键词 “哔哩哔哩”,按下回车键;

3. 浏览器判断 “哔哩哔哩” 非完整 URL,自动调用默认搜索引擎(如百度)。

发起 “找哔哩哔哩网站” 的需求,触发搜索引擎调用
2浏览器 + 搜索引擎

1. 浏览器向搜索引擎发送 “关键词 = 哔哩哔哩” 的请求;

2. 搜索引擎筛选结果并排序(B 站官网排前 1);

3. 搜索引擎返回含 B 站官网 URL(https://www.bilibili.com/)的结果;

4. 浏览器渲染搜索结果页,展示带超链接的条目。

通过搜索引擎获取 “哔哩哔哩官网的 URL”,并以超链接形式呈现在结果页
3用户 + 浏览器 + 超链接

1. 用户点击 “哔哩哔哩官网” 超链接;

2. 浏览器解析超链接对应的 URL,提取协议(HTTPS)、域名(www.bilibili.com)、默认端口(443)、根路径(/)。

触发 “访问 B 站官网” 的动作,解析超链接对应的完整 URL
4浏览器 + DNS

1. 浏览器向本地 DNS 服务器发送 “解析www.bilibili.com” 的请求;

2. DNS 服务器逐层查询,返回 B 站服务器 IP(如183.232.231.172);

3. 浏览器缓存该 IP。

将 “易记的域名” 转化为 “网络能识别的 IP”,确定要连接的 B 站服务器地址
5浏览器 + B 站服务器 + TCP+HTTPS

1. 浏览器基于 HTTPS,向 B 站服务器 443 端口发起TCP 三次握手,建立连接:

- 第一次:浏览器发 “连接请求”(SYN 包);

- 第二次:服务器回 “同意连接”(SYN+ACK 包);

- 第三次:浏览器发 “确认连接”(ACK 包);

2. TCP 连接建立后,双方通过 SSL/TLS 协议完成加密协商(生成会话密钥),后续数据传输均加密。

建立浏览器与 B 站服务器的 “稳定数据传输通道”,为后续 HTTP 请求做准备
6浏览器 + B 站服务器 + HTTP

1. 浏览器通过 TCP 通道,向 B 站服务器发送HTTPS 加密的 HTTP GET 请求,请求 “获取官网首页资源”;

2. B 站服务器接收请求,查询首页资源(HTML、CSS、JS、图片等),生成 HTTP 响应(状态码 200 OK);

3. 服务器通过 TCP 通道,将加密的响应数据分批传给浏览器;

4. 浏览器接收完所有资源数据后,向服务器发送 “数据已接收完成” 的信号。

完成 “浏览器请求资源→服务器返回资源” 的核心交互,获取 B 站首页的原始代码和文件
7浏览器 + HTML/CSS/JS

1. 浏览器解析资源:

- 解析 HTML 生成 DOM 树(网页结构);

- 解析 CSS 生成 CSSOM 树(样式);

- 合并为渲染树,计算元素位置与样式;

2. 浏览器 “绘制” 页面,加载图片 / 视频,执行 JS 实现动态效果(如导航动画)。

将 “服务器返回的代码和文件” 转化为 “用户能看到的可视化画面”
8用户 + 浏览器

1. 浏览器展示完整的 B 站首页(导航栏、推荐视频、热门榜单等);

2. 用户可正常操作(如点击视频、登录),操作会触发新的 TCP 连接与 HTTP 请求(如点击视频时请求播放资源)。

完成 “从输入关键词到看到 B 站首页” 的全流程,用户可正常使用 B 站功能
9浏览器 + B 站服务器 + TCP

1. 当 “首页资源传输完成” 且 “短期内无新请求”(如用户停留在首页不操作),双方触发TCP 四次挥手,断开连接:

- 第一次:浏览器发 “断开请求”(FIN 包),表示 “我这边数据发完了”;

- 第二次:服务器回 “确认收到断开请求”(ACK 包),表示 “我知道了,等我处理完剩余数据”;

- 第三次:服务器发 “我这边数据也发完了,同意断开”(FIN+ACK 包);

- 第四次:浏览器回 “确认断开”(ACK 包),双方连接正式关闭;

2. 若用户快速操作(如 10 秒内点击视频),浏览器会复用现有 TCP 连接(避免重复握手,提升效率),暂不断开。

释放闲置的 TCP 连接资源,避免服务器与浏览器的资源浪费

关键说明:TCP 断开的核心逻辑

  1. 断开时机:并非 “页面加载完就立刻断开”,而是等 “当前请求的数据传输完成” 且 “短期内无新请求”(浏览器通常默认闲置几秒到几十秒),才触发四次挥手;

  2. 资源优化:若用户持续操作(如连续点击链接),浏览器会复用已建立的 TCP 连接(“连接复用”),减少重复握手的时间,让后续访问更快;

  3. 强制断开:若网络中断或服务器超时,TCP 会通过 “超时重传” 机制检测异常,若多次重传失败,会强制断开连接。

五、感悟互联网通信的发展

时间阶段核心事件 / 技术关键人物 / 团队技术特点与作用对互联网通信的影响
1960s-1970s:互联网雏形阶段1. ARPANET(阿帕网)诞生2. 分组交换技术应用美国国防部高级研究计划局(ARPA)、保罗・巴兰(分组交换提出者)

1. ARPANET:1969 年连接 4 台大学计算机,全球首个分组交换网络,核心是 “去中心化”(部分节点损坏不影响通信);

2. 分组交换:将数据分割成 “小数据包” 传输,提升网络抗故障能力与资源利用率。

奠定互联网 “分布式通信” 底层基础,打破传统 “电路交换”(如电话网)局限,为后续 TCP/IP、HTTP 等协议提供网络环境。
1970s-1980s:协议标准确立阶段1. TCP/IP 协议诞生2. UDP 协议同步发展文顿・瑟夫、罗伯特・卡恩(TCP/IP 发明者)

1. TCP:面向连接协议,通过 “三次握手建连→数据校验→四次挥手断连”,保证数据可靠传输(如文件下载);

2. UDP:无连接协议,无需建连、传输速度快,适合实时场景(如视频通话、游戏);

3. 1983 年 TCP/IP 成为 ARPANET 标准,实现 “不同网络互联互通”。

解决 “跨网络、跨设备通信” 问题,成为互联网的 “通用语言”,为 HTTP 的 “客户端 - 服务器数据传输” 提供底层连接支撑。
1980s-1990s:应用层技术体系搭建阶段

1. DNS(域名系统)诞生

2. HTTP(超文本传输协议)发明

3. URL(统一资源定位符)提出4. 万维网(WWW)发布

保罗・莫卡派乔斯(DNS)、蒂姆・伯纳斯 - 李(HTTP/URL/ 万维网)

1. DNS(1983 年):将 “IP 地址”(如 183.232.231.172)转化为 “域名”(如www.bilibili.com),简化地址记忆;

2. HTTP(1989 年):应用层协议,定义 “浏览器(客户端)向服务器请求超文本资源” 的规则(如 GET 请求获取网页、POST 请求提交数据),默认基于 TCP 传输;

3. URL(1989 年):统一资源地址格式(如https://www.bilibili.com/s?wd=视频),包含 “协议(HTTP/HTTPS)、域名、路径”,明确资源位置;

4. 万维网:基于 HTTP+HTML+URL,实现 “图文混排 + 超链接跳转”,构建可交互信息网络。

1. 搭建 “资源定位 - 传输 - 展示” 完整体系:DNS 定位服务器、URL 定位资源、HTTP 传输数据,三者配合让 “获取互联网资源” 有了标准流程;

2. 万维网依托 HTTP 与 URL,打破 “纯文本通信” 局限,为浏览器和搜索引擎的出现提供核心技术框架。

1990s:用户工具普及阶段

1. 首款浏览器诞生

2. 首款搜索引擎出现

3. HTTP/1.0(1996 年)、HTTP/1.1(1999 年)发布

蒂姆・伯纳斯 - 李(浏览器)、艾伦・埃姆泰奇(搜索引擎)、W3C(HTTP 标准制定)

1. 浏览器(1990 年 “WorldWideWeb”、1993 年 Mosaic):核心能力是 “解析 URL→通过 HTTP 向服务器发请求→接收资源后渲染 HTML/CSS/JS 为可视化网页”,隐藏技术细节,让普通用户可操作;

2. 搜索引擎(1990 年 “Archie”、1994 年 “WebCrawler”):通过 “爬虫抓取 URL 对应的 HTTP 资源→索引存储→关键词检索”,帮用户从海量资源中找目标 URL;

3. HTTP 升级:HTTP/1.0 支持 “短连接”,HTTP/1.1 支持 “长连接”,提升资源传输效率。

1. 浏览器 + 搜索引擎让互联网 “从技术圈走向大众”:用户通过搜索引擎找 URL,再用浏览器通过 HTTP 加载资源,形成核心使用模式;

2. HTTP 升级优化传输体验,支撑更多网页内容(如图片、脚本)的加载,推动互联网信息丰富化。

2000s - 至今:高速与移动化发展阶段

1. 移动互联网兴起

2. HTTPS 普及、HTTP/2(2015 年)、HTTP/3(2022 年)发布

3. 5G、IPv6 落地

苹果(iPhone)、W3C、IETF(协议制定)

1. 移动互联网(2007 年 iPhone 发布):浏览器适配移动端,HTTP 请求支持 “轻量化资源”(如适配手机屏幕的网页),URL 支持 “App 深链接”(直接跳转 App 内资源);

2. HTTP 技术升级:

- HTTPS:在 HTTP 基础上增加 SSL/TLS 加密,保障数据传输安全(如登录、支付场景);

- HTTP/2:支持 “多路复用”(一个 TCP 连接传输多个 HTTP 请求),提升加载速度;

- HTTP/3:基于 UDP 实现,解决 TCP 队头阻塞问题,进一步降低延迟;

3. 5G+IPv6:5G 加速 HTTP 资源加载,IPv6 解决 IP 枯竭,支撑更多设备通过 HTTP 访问资源。

1. 移动互联网 + HTTP 升级,实现 “随时随地、安全高速” 访问:用户在手机上通过搜索引擎找 URL,浏览器用 HTTPS/HTTP/2 快速加载资源,体验大幅提升;

2. 新技术支撑复杂场景:HTTP/3+5G 满足视频流、云游戏、物联网等低延迟需求,推动互联网从 “信息浏览” 向 “沉浸式交互” 升级。

由此,可以总结出:

互联网通信演进围绕 “降低门槛、提升效率、拓展场景” 展开,以 “底层连接→应用层协议→地址定位→用户工具” 为递进路径,最终形成 “人人可用、万物可连” 的生态。

演进维度核心逻辑与关键技术解决的核心问题
1. 目标导向(三大核心)

- 解决 “能不能连”:靠 ARPANET(去中心化基础)、TCP/IP(互联互通协议)搭建通信骨架;

- 解决 “好不好用”:靠 DNS(简化地址)、浏览器(可视化浏览)降低使用门槛;

- 解决 “用得爽不爽”:靠搜索引擎(高效找资源)、移动互联网(随时随地访问)优化体验;

- 技术补充:UDP 适配实时场景、HTTP/3 提升速度。

从 “能连” 到 “好用” 再到 “爽用”
2. 技术递进(四层路径)

- 底层连接:TCP(可靠传输)、UDP(低延迟)为 HTTP 提供通道;

- 应用层协议:HTTP(含 HTTPS/HTTP/2/3)是核心枢纽,规范资源请求响应;

- 地址定位:DNS(解析域名)+ URL(明确资源位置),为 HTTP 提供定位依据;

- 用户工具:浏览器(用 HTTP 加载资源)+ 搜索引擎(找 URL),让技术落地体验;

- 技术升级:HTTP 版本迭代、URL 支持深链接,持续提效、降门槛、保安全。

从技术底层到用户体验落地

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值