🔌 网络是怎样连接的
照着《网络是怎样连接的》([日] 户根勤 著,周自恒 译,图灵程序设计丛书)做的自学笔记 —— 前面那门 计算机网络 讲的是地图(分层、协议、设备各自怎么定义),这一课走的是路本身:把一次网页访问拆开,沿着消息从浏览器出发、经协议栈、网卡、集线器、交换机、路由器、接入网、运营商、服务器一路走完全程。全书 6 章 141 篇(含每章一个 COLUMN):浏览器生成消息 → 用电信号传输 TCP/IP 数据 → 从网线到网络设备 → 通过接入网进入互联网内部 → 服务器端的局域网中有什么玄机 → 请求到达 Web 服务器、响应返回浏览器。这是概念之旅课,不需要任何真实网络设备即可读完;教材成书于 2014 年前后(IPv4 为主、HTTP/1.1、ADSL 尚在服役),凡与现状不同处各篇都用【⚠️ 2026 现状】单列。大白话、不跳步骤、必带生活比喻、常见误区、可折叠自测题。
前置课程:计算机网络(分层与协议)、Web技术原理(Web 这一层的全景)、服务器工作原理(服务器怎么转)。
内容来自我的 Obsidian 自学笔记 · 全 6 章 141 篇完结 ✅
第一章 浏览器生成消息
探索之旅从输入网址开始
网址不只是网址:HTTP 访问 URL…
浏览器先要解析URL
URL 按斜杠切块:协议+Web 服务器…
省略文件名的情况
末尾带斜杠是目录、不带才是文件名;省略时…
HTTP的基本思路
客户端发请求、服务器回响应;请求里两个关…
生成HTTP请求消息
第一行是请求行(方法+URI+版本),第…
发送请求后会收到响应
响应开头是状态码:2 开头成事、3 开头…
IP地址的基本知识
32 比特按 8 位一组点分成 4 段…
域名和IP地址并用的理由
域名给人记(字母上口、最长 255),I…
Socket库提供查询IP地址的功能
翻译的人叫解析器,住在操作系统的 Soc…
通过解析器向DNS服务器发出查询
解析器生成查询消息走 UDP 发给 DN…
解析器的内部原理
解析器发查询后原地等回信(程序停在那儿)…
DNS服务器的基本工作
查询消息三件套——名字、类别、类型;A…
域名的层次结构
域名像树:点分层级、从右往左一级比一级大…
寻找相应的DNS服务器并获取IP地址
从根服务器顺着树往下问:给的是下一层的门…
通过缓存加快DNS服务器的响应
问过一次的答案存起来下次直接答;缓存有时…
数据收发操作概览
委托协议栈发消息分四阶段——创建套接字…
创建套接字阶段
socket() 返回一个描述符;它是操…
连接阶段:把管道接上去
connect() 带上描述符、服务器…
通信阶段:传递消息
write() 塞进去、read() 取…
断开阶段:收发数据结束
close() 拆管道;Web 的一方先…
怪杰 Resolver
解析器的小传:全名 resolver,个…
第二章 用电信号传输TCP/IP数据
协议栈的内部结构
协议栈上下分层:TCP/UDP 管收发…
套接字的实体就是通信控制信息
套接字的实体是内存里的一块通信控制信息…
调用socket时的操作
socket() 只做三件事:划一块控制…
连接是什么意思
连接的实体=双方控制信息里互写对方地址…
负责保存控制信息的头部
控制信息不进套接字就进头部——TCP 头…
连接操作的实际过程
connect 触发三次握手:SYN 带…
将HTTP请求消息交给协议栈
write 只是把数据放进 TCP 发送…
对较大的数据进行拆分
以太网 MTU 1500 扣掉 IP 头…
使用ACK号确认网络包已收到
ACK 号=【下次该从第几字节开始发】…
根据网络包平均往返时间调整ACK号等待时间
重发超时值=平均 RTT 加余量、持续动…
使用窗口有效管理ACK号
停等太慢——滑动窗口让发送方不等 ACK…
ACK与窗口的合并
TCP 头里 ACK 号与窗口字段搭同一…
接收HTTP响应消息
浏览器 read 循环收数据:read…
数据发送完毕后断开连接
断开用 FIN 互告——谁先说完谁先关…
删除套接字
close 后套接字不立刻消失——先半关…
数据收发操作小结
四阶段复盘:创建划内存、连接对起始号、收…
包的基本知识
包=切小的数据块+头部(目的地等控制信息…
包收发操作概览
IP 层发包五步:接数据、查路由表定下一…
生成包含接收方IP地址的IP头部
IP 头写源/目的 IP、协议号、TTL…
生成以太网用的MAC头部
MAC 头三个字段:目的 MAC(下一跳…
通过ARP查询目标路由器的MAC地址
知道 IP 不知道 MAC 时发 ARP…
以太网的基本知识
以太网三块基石:帧结构(头+数据+FCS…
将IP包转换成电或光信号发送出去
网卡把包转成信号四步:驱动写入缓冲、加前…
给网络包再加3个控制数据
出门前帧前后各加控制数据:帧头前是前导码…
向集线器发送网络包
信号进了集线器就广播给所有端口(半双工…
接收返回包
收包四道关:PHY 还原比特、FCS 验…
将服务器的响应包从IP传递给TCP
IP 层按协议号分派:6 给 TCP、1…
不需要重发的数据用UDP发送更高效
UDP 不对账、不重发、不握手——发了就…
控制用的短数据
控制消息(DNS 查询、DHCP 分配等…
音频和视频数据
实时音视频要【准时】胜过要【完整】——等…
插进Socket里的是灯泡还是程序
Socket 里插进去的是程序——套接字…
第三章 从网线到网络设备
每个包都是独立传输的
同一条连接的多个包,各走各的路、各排各的…
防止网线中的信号衰减很重要
信号沿网线传播会衰减——以太网把双绞线合…
【双绞】是为了抑制噪声
两根线互相缠绕用来抑制噪声:外部干扰两根…
集线器将信号发往所有线路
集线器是物理层复读机——收到信号原样复制…
交换机根据地址表进行转发
交换机维护 MAC 地址表(端口↔MAC…
MAC地址表的维护
地址表不靠人工填——交换机收到帧顺手记下…
特殊操作
目的 MAC 不在表里时交换机泛洪(除收…
全双工模式可以同时进行发送和接收
网线里有 4 对芯线——收发各走各的线对…
自动协商:确定最优的传输速率
两端接通先互报支持的速度与双工能力,取交…
交换机可同时执行多个转发操作
交换机内部交换结构支持多对端口同时转发…
路由器的基本知识
路由器看 IP 头、查路由表转发——和交…
路由表中的信息
路由表条目=目的网段(掩码表达)+出口/…
路由器的包接收操作
路由器收包三步:核对目的 MAC 是不是…
查询路由表确定输出端口
用【目的 IP AND 掩码】逐条比对路…
找不到匹配路由时选择默认路由
全表比对无一命中时,若有默认路由(0.0…
包的有效期
TTL 每过一跳减一,减到 0 就被丢弃…
通过分片功能拆分大网络包
两条链路 MTU 不同时,路由器把装不下…
路由器的发送操作和计算机相同
路由器转发出口侧与主机发包完全同构:查表…
路由器与交换机的关系
院内靠交换机(MAC 表)、跨网段靠路由…
通过地址转换有效利用IP地址
全球可分配 IPv4 约 37 亿,联网…
地址转换的基本原理
NAT 出门时把源 IP 换成全局地址…
改写端口号的原因
只改 IP 会让【同端口的两条内部连接】…
从互联网访问公司内网
NAT 使外部无法主动访问内网——要放行…
路由器的包过滤功能
包过滤按五个维度判定放行:源/目的 IP…
集线器和路由器,换个名字身价翻倍?
第三章专栏:从集线器到交换机再到路由器…
第四章 通过接入网进入互联网内部
互联网的基本知识和家庭、公司的网络接入方式
互联网=无数运营商网络互联而成的【网络的…
ADSL 接入网的结构
ADSL 接入网=用户侧(电话+分离器)…
在用户端计算发送数据的信号波形
用户端把数据调制到电话语音频段以上的高频…
通过电话线传输信号
信号在高频段沿电话线传输,同时受两个现实…
在电话局侧分离信号
电话局收到混合信号后用分离器分流:低频进…
通过分离器分离噪声
分离器不只分频段,还挡住电话机产生的高频…
ADSL 通过多个频段传输数据
ADSL 把可用频段切成一格格子(子信道…
DSLAM 通过多台设备接收信号
DSLAM 把成百上千条用户线的信号解调…
从用户到电话局、从电话局到互联网
过了 DSLAM 与 BAS 之后,路交…
光纤的基本知识
光纤靠全反射把光关在芯里传输:芯的折射率…
光纤的传输方式
一根纤只能单向传光——要么用两种波长做单…
光纤接入网(FTTH)
FTTH=ONU(用户侧光猫)+光分路器…
互联网接入的拨号和认证
互联网接入要解决两件事:你是谁(认证)与…
通过 PPP 传输消息
PPP 是接入网的通用语言:做认证(账号…
通过隧道功能传输 PPP 消息
隧道=把一种协议装进另一种协议里运:PP…
ADSL 和 FTTH 的接入形态
同为 PPP,装法不同:ADSL 把 P…
使用 PPPoE 的 ADSL 接入网的结构
一条包的封装从内到外:数据 → PPP…
使用 PPPoE 的 FTTH 接入网的结构
FTTH 里封装层次基本照旧,只是最底下…
通过 DHCP 分配 IP 地址
认证过了还得有地址:客户端广播询问、服务…
POP 和 NOC
POP(Point of Presenc…
网络运营商内部结构
运营商内部也是【汇聚-骨干】分层:POP…
No.1 互联网交换中心
IX(互联网交换中心)=多方共用的交换点…
No.2 通过与运营商直接连接来交换网络包
两家运营商私下对等互联:拉专线直连——质…
No.3 通过交叉连接交换网络包
交叉连接=在第三方机房里把两根线物理跳接…
通过 AS 之间的路由交换来交换网络包
每个运营商是一个 AS(自治系统),内部…
跨越运营商网络包的路由
跨运营商的包:家 → 本运营商 POP/…
名字叫服务器,其实是路由器
第四章专栏:接入网与运营商内部那些【叫服…
第五章 服务器端的局域网中有什么玄机
在公司里部署 Web 服务器
在公司里放服务器能做,但要满足三件事:能…
将 Web 服务器部署在数据中心
数据中心=高速线路+环境电力保障+安防监…
主流的包过滤方式
防火墙的主流方式是包过滤:基于 IP 头…
如何设置包过滤的规则
规则按包的流动方向分别写:源到目的+端口…
通过端口号限定应用程序
端口号是应用程序的门牌:只放行需要的端口…
通过控制位判断连接方向
外到内的端口放行了,攻击者也能主动来连…
从公司内网访问公开区域的规则
对外公开的服务器放进 DMZ 隔离区,三…
从外部无法访问公司内网
外部进不了公司内网,两道理由叠加:内网用…
通过防火墙
包过滤小结:判断快、几乎不拖慢流量,但只…
防火墙无法抵御的攻击
防火墙拦得住【谁跟谁】,拦不住【说了什么…
性能不足时需要负载均衡
访问量涨到单台服务器扛不住,就要多台分担…
使用负载均衡器分配访问
负载均衡器对外只亮一个虚拟地址,把请求按…
如何使用缓存服务器
缓存服务器站在客户端与源站之间:请求先问…
缓存服务器通过更新时间管理内容
缓存怕旧——拿文件的更新时间与源站对账(…
最原始的代理——正向代理
代理最早站在客户端一侧(正向代理):代替…
正向代理的改良版——反向代理
把代理搬到服务器一侧就是反向代理:对客户…
透明代理
正向代理要设置、反向代理要部署在服务器侧…
利用内容分发服务分担负载
CDN=专业公司运营的缓存服务器网络:把…
如何找到最近的缓存服务器
让用户访问最近节点,主流做法靠 DNS…
通过重定向向服务器分配访问目标
不走 DNS 的另一招:先访问入口服务器…
缓存的更新方法会影响性能
几百个节点什么时候更新:主动型定期去源站…
当通信线路变成局域网
第五章专栏:公司与数据中心之间那条【专线…
第六章 请求到达Web服务器,响应返回浏览器
客户端与服务器的区别
客户端与服务器不是硬件等级,是角色:发起…
服务器程序的结构
一台服务器要同时陪成百上千个客户端——靠…
服务器的套接字和端口号
服务器端套接字四步:socket 造、b…
网卡将接收到的信号转换成数字信息
服务器收包的前半程与客户端完全一样:PH…
IP 模块的接收操作
包交到 IP 模块查两件事:目的 IP…
TCP 模块如何处理连接包
收到 SYN=1 的连接包:查有无套接字…
TCP 模块如何处理数据包
普通数据包按四元组精确命中套接字:数据进…
TCP 模块的断开操作
收到 FIN 就回 ACK 并通知应用(…
将请求的 URI 转换为实际的文件名
Web 服务器把请求行的 URI 映射到…
运行 CGI 程序
URI 指向的是程序而不是文件时,先运行…
Web 服务器的访问控制
Web 服务器自己也能管访问:来源 IP…
返回响应消息
服务器把状态行+消息头+空行+消息体组装…
通过响应的数据类型判断其中的内容
浏览器拿到响应体,按 Content-T…
浏览器显示网页内容!访问完成!
HTML 解析成 DOM 树、CSS 算…
Gateway是通往异世界的入口
第六章专栏:网关=不同协议世界之间的翻译…