🔌 网络是怎样连接的 · 目录

🔌 网络是怎样连接的

照着《网络是怎样连接的》([日] 户根勤 著,周自恒 译,图灵程序设计丛书)做的自学笔记 —— 前面那门 计算机网络 讲的是地图(分层、协议、设备各自怎么定义),这一课走的是路本身:把一次网页访问拆开,沿着消息从浏览器出发、经协议栈、网卡、集线器、交换机、路由器、接入网、运营商、服务器一路走完全程。全书 6 章 141 篇(含每章一个 COLUMN):浏览器生成消息 → 用电信号传输 TCP/IP 数据 → 从网线到网络设备 → 通过接入网进入互联网内部 → 服务器端的局域网中有什么玄机 → 请求到达 Web 服务器、响应返回浏览器。这是概念之旅课,不需要任何真实网络设备即可读完;教材成书于 2014 年前后(IPv4 为主、HTTP/1.1、ADSL 尚在服役),凡与现状不同处各篇都用【⚠️ 2026 现状】单列。大白话、不跳步骤、必带生活比喻、常见误区、可折叠自测题。
前置课程:计算机网络(分层与协议)、Web技术原理(Web 这一层的全景)、服务器工作原理(服务器怎么转)。

内容来自我的 Obsidian 自学笔记 · 全 6 章 141 篇完结 ✅

第一章 浏览器生成消息

1.1.1

探索之旅从输入网址开始

网址不只是网址:HTTP 访问 URL…

⭐阅读全文 →
1.1.2

浏览器先要解析URL

URL 按斜杠切块:协议+Web 服务器…

⭐⭐阅读全文 →
1.1.3

省略文件名的情况

末尾带斜杠是目录、不带才是文件名;省略时…

⭐阅读全文 →
1.1.4

HTTP的基本思路

客户端发请求、服务器回响应;请求里两个关…

⭐⭐阅读全文 →
1.1.5

生成HTTP请求消息

第一行是请求行(方法+URI+版本),第…

⭐⭐阅读全文 →
1.1.6

发送请求后会收到响应

响应开头是状态码:2 开头成事、3 开头…

⭐阅读全文 →
1.2.1

IP地址的基本知识

32 比特按 8 位一组点分成 4 段…

⭐⭐阅读全文 →
1.2.2

域名和IP地址并用的理由

域名给人记(字母上口、最长 255),I…

⭐阅读全文 →
1.2.3

Socket库提供查询IP地址的功能

翻译的人叫解析器,住在操作系统的 Soc…

⭐阅读全文 →
1.2.4

通过解析器向DNS服务器发出查询

解析器生成查询消息走 UDP 发给 DN…

⭐⭐阅读全文 →
1.2.5

解析器的内部原理

解析器发查询后原地等回信(程序停在那儿)…

⭐⭐阅读全文 →
1.3.1

DNS服务器的基本工作

查询消息三件套——名字、类别、类型;A…

⭐⭐阅读全文 →
1.3.2

域名的层次结构

域名像树:点分层级、从右往左一级比一级大…

⭐⭐阅读全文 →
1.3.3

寻找相应的DNS服务器并获取IP地址

从根服务器顺着树往下问:给的是下一层的门…

⭐⭐阅读全文 →
1.3.4

通过缓存加快DNS服务器的响应

问过一次的答案存起来下次直接答;缓存有时…

⭐阅读全文 →
1.4.1

数据收发操作概览

委托协议栈发消息分四阶段——创建套接字…

⭐阅读全文 →
1.4.2

创建套接字阶段

socket() 返回一个描述符;它是操…

⭐⭐阅读全文 →
1.4.3

连接阶段:把管道接上去

connect() 带上描述符、服务器…

⭐⭐阅读全文 →
1.4.4

通信阶段:传递消息

write() 塞进去、read() 取…

⭐阅读全文 →
1.4.5

断开阶段:收发数据结束

close() 拆管道;Web 的一方先…

⭐阅读全文 →
COLUMN

怪杰 Resolver

解析器的小传:全名 resolver,个…

⭐阅读全文 →

第二章 用电信号传输TCP/IP数据

2.1.1

协议栈的内部结构

协议栈上下分层:TCP/UDP 管收发…

⭐⭐阅读全文 →
2.1.2

套接字的实体就是通信控制信息

套接字的实体是内存里的一块通信控制信息…

⭐⭐阅读全文 →
2.1.3

调用socket时的操作

socket() 只做三件事:划一块控制…

⭐⭐阅读全文 →
2.2.1

连接是什么意思

连接的实体=双方控制信息里互写对方地址…

⭐⭐阅读全文 →
2.2.2

负责保存控制信息的头部

控制信息不进套接字就进头部——TCP 头…

⭐⭐阅读全文 →
2.2.3

连接操作的实际过程

connect 触发三次握手:SYN 带…

⭐⭐⭐阅读全文 →
2.3.1

将HTTP请求消息交给协议栈

write 只是把数据放进 TCP 发送…

⭐⭐阅读全文 →
2.3.2

对较大的数据进行拆分

以太网 MTU 1500 扣掉 IP 头…

⭐⭐阅读全文 →
2.3.3

使用ACK号确认网络包已收到

ACK 号=【下次该从第几字节开始发】…

⭐⭐⭐阅读全文 →
2.3.4

根据网络包平均往返时间调整ACK号等待时间

重发超时值=平均 RTT 加余量、持续动…

⭐⭐⭐阅读全文 →
2.3.5

使用窗口有效管理ACK号

停等太慢——滑动窗口让发送方不等 ACK…

⭐⭐⭐阅读全文 →
2.3.6

ACK与窗口的合并

TCP 头里 ACK 号与窗口字段搭同一…

⭐⭐阅读全文 →
2.3.7

接收HTTP响应消息

浏览器 read 循环收数据:read…

⭐⭐阅读全文 →
2.4.1

数据发送完毕后断开连接

断开用 FIN 互告——谁先说完谁先关…

⭐⭐阅读全文 →
2.4.2

删除套接字

close 后套接字不立刻消失——先半关…

⭐⭐阅读全文 →
2.4.3

数据收发操作小结

四阶段复盘:创建划内存、连接对起始号、收…

⭐⭐阅读全文 →
2.5.1

包的基本知识

包=切小的数据块+头部(目的地等控制信息…

⭐⭐阅读全文 →
2.5.2

包收发操作概览

IP 层发包五步:接数据、查路由表定下一…

⭐⭐阅读全文 →
2.5.3

生成包含接收方IP地址的IP头部

IP 头写源/目的 IP、协议号、TTL…

⭐⭐⭐阅读全文 →
2.5.4

生成以太网用的MAC头部

MAC 头三个字段:目的 MAC(下一跳…

⭐⭐阅读全文 →
2.5.5

通过ARP查询目标路由器的MAC地址

知道 IP 不知道 MAC 时发 ARP…

⭐⭐⭐阅读全文 →
2.5.6

以太网的基本知识

以太网三块基石:帧结构(头+数据+FCS…

⭐⭐阅读全文 →
2.5.7

将IP包转换成电或光信号发送出去

网卡把包转成信号四步:驱动写入缓冲、加前…

⭐⭐阅读全文 →
2.5.8

给网络包再加3个控制数据

出门前帧前后各加控制数据:帧头前是前导码…

⭐⭐⭐阅读全文 →
2.5.9

向集线器发送网络包

信号进了集线器就广播给所有端口(半双工…

⭐⭐阅读全文 →
2.5.10

接收返回包

收包四道关:PHY 还原比特、FCS 验…

⭐⭐阅读全文 →
2.5.11

将服务器的响应包从IP传递给TCP

IP 层按协议号分派:6 给 TCP、1…

⭐⭐阅读全文 →
2.6.1

不需要重发的数据用UDP发送更高效

UDP 不对账、不重发、不握手——发了就…

⭐⭐阅读全文 →
2.6.2

控制用的短数据

控制消息(DNS 查询、DHCP 分配等…

⭐⭐阅读全文 →
2.6.3

音频和视频数据

实时音视频要【准时】胜过要【完整】——等…

⭐⭐阅读全文 →
COLUMN

插进Socket里的是灯泡还是程序

Socket 里插进去的是程序——套接字…

⭐阅读全文 →

第三章 从网线到网络设备

3.1.1

每个包都是独立传输的

同一条连接的多个包,各走各的路、各排各的…

⭐阅读全文 →
3.1.2

防止网线中的信号衰减很重要

信号沿网线传播会衰减——以太网把双绞线合…

⭐⭐阅读全文 →
3.1.3

【双绞】是为了抑制噪声

两根线互相缠绕用来抑制噪声:外部干扰两根…

⭐⭐阅读全文 →
3.1.4

集线器将信号发往所有线路

集线器是物理层复读机——收到信号原样复制…

⭐⭐阅读全文 →
3.2.1

交换机根据地址表进行转发

交换机维护 MAC 地址表(端口↔MAC…

⭐⭐阅读全文 →
3.2.2

MAC地址表的维护

地址表不靠人工填——交换机收到帧顺手记下…

⭐⭐阅读全文 →
3.2.3

特殊操作

目的 MAC 不在表里时交换机泛洪(除收…

⭐⭐阅读全文 →
3.2.4

全双工模式可以同时进行发送和接收

网线里有 4 对芯线——收发各走各的线对…

⭐⭐阅读全文 →
3.2.5

自动协商:确定最优的传输速率

两端接通先互报支持的速度与双工能力,取交…

⭐⭐阅读全文 →
3.2.6

交换机可同时执行多个转发操作

交换机内部交换结构支持多对端口同时转发…

⭐⭐阅读全文 →
3.3.1

路由器的基本知识

路由器看 IP 头、查路由表转发——和交…

⭐⭐阅读全文 →
3.3.2

路由表中的信息

路由表条目=目的网段(掩码表达)+出口/…

⭐⭐阅读全文 →
3.3.3

路由器的包接收操作

路由器收包三步:核对目的 MAC 是不是…

⭐⭐阅读全文 →
3.3.4

查询路由表确定输出端口

用【目的 IP AND 掩码】逐条比对路…

⭐⭐⭐阅读全文 →
3.3.5

找不到匹配路由时选择默认路由

全表比对无一命中时,若有默认路由(0.0…

⭐⭐阅读全文 →
3.3.6

包的有效期

TTL 每过一跳减一,减到 0 就被丢弃…

⭐⭐阅读全文 →
3.3.7

通过分片功能拆分大网络包

两条链路 MTU 不同时,路由器把装不下…

⭐⭐⭐阅读全文 →
3.3.8

路由器的发送操作和计算机相同

路由器转发出口侧与主机发包完全同构:查表…

⭐⭐阅读全文 →
3.3.9

路由器与交换机的关系

院内靠交换机(MAC 表)、跨网段靠路由…

⭐⭐阅读全文 →
3.4.1

通过地址转换有效利用IP地址

全球可分配 IPv4 约 37 亿,联网…

⭐⭐阅读全文 →
3.4.2

地址转换的基本原理

NAT 出门时把源 IP 换成全局地址…

⭐⭐⭐阅读全文 →
3.4.3

改写端口号的原因

只改 IP 会让【同端口的两条内部连接】…

⭐⭐⭐阅读全文 →
3.4.4

从互联网访问公司内网

NAT 使外部无法主动访问内网——要放行…

⭐⭐阅读全文 →
3.4.5

路由器的包过滤功能

包过滤按五个维度判定放行:源/目的 IP…

⭐⭐阅读全文 →
COLUMN

集线器和路由器,换个名字身价翻倍?

第三章专栏:从集线器到交换机再到路由器…

⭐阅读全文 →

第四章 通过接入网进入互联网内部

4.1.1

互联网的基本知识和家庭、公司的网络接入方式

互联网=无数运营商网络互联而成的【网络的…

⭐⭐阅读全文 →
4.1.2

ADSL 接入网的结构

ADSL 接入网=用户侧(电话+分离器)…

⭐⭐阅读全文 →
4.1.3

在用户端计算发送数据的信号波形

用户端把数据调制到电话语音频段以上的高频…

⭐⭐⭐阅读全文 →
4.1.4

通过电话线传输信号

信号在高频段沿电话线传输,同时受两个现实…

⭐⭐阅读全文 →
4.1.5

在电话局侧分离信号

电话局收到混合信号后用分离器分流:低频进…

⭐⭐阅读全文 →
4.1.6

通过分离器分离噪声

分离器不只分频段,还挡住电话机产生的高频…

⭐⭐阅读全文 →
4.1.7

ADSL 通过多个频段传输数据

ADSL 把可用频段切成一格格子(子信道…

⭐⭐阅读全文 →
4.1.8

DSLAM 通过多台设备接收信号

DSLAM 把成百上千条用户线的信号解调…

⭐⭐阅读全文 →
4.1.9

从用户到电话局、从电话局到互联网

过了 DSLAM 与 BAS 之后,路交…

⭐⭐阅读全文 →
4.2.1

光纤的基本知识

光纤靠全反射把光关在芯里传输:芯的折射率…

⭐⭐阅读全文 →
4.2.2

光纤的传输方式

一根纤只能单向传光——要么用两种波长做单…

⭐⭐阅读全文 →
4.2.3

光纤接入网(FTTH)

FTTH=ONU(用户侧光猫)+光分路器…

⭐⭐阅读全文 →
4.3.1

互联网接入的拨号和认证

互联网接入要解决两件事:你是谁(认证)与…

⭐⭐阅读全文 →
4.3.2

通过 PPP 传输消息

PPP 是接入网的通用语言:做认证(账号…

⭐⭐阅读全文 →
4.3.3

通过隧道功能传输 PPP 消息

隧道=把一种协议装进另一种协议里运:PP…

⭐⭐阅读全文 →
4.3.4

ADSL 和 FTTH 的接入形态

同为 PPP,装法不同:ADSL 把 P…

⭐⭐阅读全文 →
4.3.5

使用 PPPoE 的 ADSL 接入网的结构

一条包的封装从内到外:数据 → PPP…

⭐⭐阅读全文 →
4.3.6

使用 PPPoE 的 FTTH 接入网的结构

FTTH 里封装层次基本照旧,只是最底下…

⭐⭐阅读全文 →
4.3.7

通过 DHCP 分配 IP 地址

认证过了还得有地址:客户端广播询问、服务…

⭐⭐阅读全文 →
4.4.1

POP 和 NOC

POP(Point of Presenc…

⭐⭐阅读全文 →
4.4.2

网络运营商内部结构

运营商内部也是【汇聚-骨干】分层:POP…

⭐⭐⭐阅读全文 →
4.5.1

No.1 互联网交换中心

IX(互联网交换中心)=多方共用的交换点…

⭐⭐⭐阅读全文 →
4.5.2

No.2 通过与运营商直接连接来交换网络包

两家运营商私下对等互联:拉专线直连——质…

⭐⭐阅读全文 →
4.5.3

No.3 通过交叉连接交换网络包

交叉连接=在第三方机房里把两根线物理跳接…

⭐⭐阅读全文 →
4.5.4

通过 AS 之间的路由交换来交换网络包

每个运营商是一个 AS(自治系统),内部…

⭐⭐⭐阅读全文 →
4.5.5

跨越运营商网络包的路由

跨运营商的包:家 → 本运营商 POP/…

⭐⭐阅读全文 →
COLUMN

名字叫服务器,其实是路由器

第四章专栏:接入网与运营商内部那些【叫服…

⭐阅读全文 →

第五章 服务器端的局域网中有什么玄机

5.1.1

在公司里部署 Web 服务器

在公司里放服务器能做,但要满足三件事:能…

⭐⭐阅读全文 →
5.1.2

将 Web 服务器部署在数据中心

数据中心=高速线路+环境电力保障+安防监…

⭐⭐阅读全文 →
5.2.1

主流的包过滤方式

防火墙的主流方式是包过滤:基于 IP 头…

⭐⭐阅读全文 →
5.2.2

如何设置包过滤的规则

规则按包的流动方向分别写:源到目的+端口…

⭐⭐⭐阅读全文 →
5.2.3

通过端口号限定应用程序

端口号是应用程序的门牌:只放行需要的端口…

⭐⭐阅读全文 →
5.2.4

通过控制位判断连接方向

外到内的端口放行了,攻击者也能主动来连…

⭐⭐⭐阅读全文 →
5.2.5

从公司内网访问公开区域的规则

对外公开的服务器放进 DMZ 隔离区,三…

⭐⭐⭐阅读全文 →
5.2.6

从外部无法访问公司内网

外部进不了公司内网,两道理由叠加:内网用…

⭐⭐阅读全文 →
5.2.7

通过防火墙

包过滤小结:判断快、几乎不拖慢流量,但只…

⭐⭐阅读全文 →
5.2.8

防火墙无法抵御的攻击

防火墙拦得住【谁跟谁】,拦不住【说了什么…

⭐⭐⭐阅读全文 →
5.3.1

性能不足时需要负载均衡

访问量涨到单台服务器扛不住,就要多台分担…

⭐⭐阅读全文 →
5.3.2

使用负载均衡器分配访问

负载均衡器对外只亮一个虚拟地址,把请求按…

⭐⭐⭐阅读全文 →
5.4.1

如何使用缓存服务器

缓存服务器站在客户端与源站之间:请求先问…

⭐⭐阅读全文 →
5.4.2

缓存服务器通过更新时间管理内容

缓存怕旧——拿文件的更新时间与源站对账(…

⭐⭐⭐阅读全文 →
5.4.3

最原始的代理——正向代理

代理最早站在客户端一侧(正向代理):代替…

⭐⭐阅读全文 →
5.4.4

正向代理的改良版——反向代理

把代理搬到服务器一侧就是反向代理:对客户…

⭐⭐阅读全文 →
5.4.5

透明代理

正向代理要设置、反向代理要部署在服务器侧…

⭐⭐阅读全文 →
5.5.1

利用内容分发服务分担负载

CDN=专业公司运营的缓存服务器网络:把…

⭐⭐⭐阅读全文 →
5.5.2

如何找到最近的缓存服务器

让用户访问最近节点,主流做法靠 DNS…

⭐⭐⭐阅读全文 →
5.5.3

通过重定向向服务器分配访问目标

不走 DNS 的另一招:先访问入口服务器…

⭐⭐⭐阅读全文 →
5.5.4

缓存的更新方法会影响性能

几百个节点什么时候更新:主动型定期去源站…

⭐⭐阅读全文 →
COLUMN

当通信线路变成局域网

第五章专栏:公司与数据中心之间那条【专线…

⭐阅读全文 →

第六章 请求到达Web服务器,响应返回浏览器

6.1.1

客户端与服务器的区别

客户端与服务器不是硬件等级,是角色:发起…

⭐阅读全文 →
6.1.2

服务器程序的结构

一台服务器要同时陪成百上千个客户端——靠…

⭐⭐阅读全文 →
6.1.3

服务器的套接字和端口号

服务器端套接字四步:socket 造、b…

⭐⭐⭐阅读全文 →
6.2.1

网卡将接收到的信号转换成数字信息

服务器收包的前半程与客户端完全一样:PH…

⭐⭐阅读全文 →
6.2.2

IP 模块的接收操作

包交到 IP 模块查两件事:目的 IP…

⭐⭐阅读全文 →
6.2.3

TCP 模块如何处理连接包

收到 SYN=1 的连接包:查有无套接字…

⭐⭐⭐阅读全文 →
6.2.4

TCP 模块如何处理数据包

普通数据包按四元组精确命中套接字:数据进…

⭐⭐阅读全文 →
6.2.5

TCP 模块的断开操作

收到 FIN 就回 ACK 并通知应用(…

⭐⭐阅读全文 →
6.3.1

将请求的 URI 转换为实际的文件名

Web 服务器把请求行的 URI 映射到…

⭐⭐阅读全文 →
6.3.2

运行 CGI 程序

URI 指向的是程序而不是文件时,先运行…

⭐⭐⭐阅读全文 →
6.3.3

Web 服务器的访问控制

Web 服务器自己也能管访问:来源 IP…

⭐⭐阅读全文 →
6.3.4

返回响应消息

服务器把状态行+消息头+空行+消息体组装…

⭐⭐阅读全文 →
6.4.1

通过响应的数据类型判断其中的内容

浏览器拿到响应体,按 Content-T…

⭐⭐阅读全文 →
6.4.2

浏览器显示网页内容!访问完成!

HTML 解析成 DOM 树、CSS 算…

⭐阅读全文 →
COLUMN

Gateway是通往异世界的入口

第六章专栏:网关=不同协议世界之间的翻译…

⭐阅读全文 →