Appearance
第 06 课 · 网络栈:从浏览器到 google
一层层寄合同:应用 → 快递 → 地址 → 本楼投递。
作者:曹宇春
先记住这个类比
打开 https://google.com ≈ 寄一份 密封重要合同:
| 层级 | 协议 | 类比 |
|---|---|---|
| 应用层 | HTTP(S) | 合同正文与格式 |
| 传输层 | TCP / UDP | 快递方式:签收重发 vs 扔门口 |
| 网络层 | IP | 收件地址 |
| 链路/物理 | Wi-Fi / 网线 | 本楼怎么递、路上怎么传 |
IP = 公司地址;端口 = 分机号(443 常挂 HTTPS,3000 常挂本地开发服)。
正式概念(人话版)
典型步骤
- DNS:查「google.com」对应哪个 IP ≈ 查电话簿
- TCP 三次握手:确认双方在线再传大包
- TLS:装进密封袋(HTTPS)——中间人难偷看
- HTTP:要页面内容
- 渲染:解析 HTML/CSS/JS,画到屏幕
Socket
进程手里的「通信端点」= IP + 端口(及协议)。
一个 Chrome 可以同时握很多 socket。
localhost / 127.0.0.1
公司内部对讲:数据在本机内核绕一圈,不走外网。npm run dev 时访问 http://127.0.0.1:3000 就是这套。
程序怎么找总管
读写网络、打开文件都要走 系统调用(syscall) ≈ 填领料单——员工不能自己碰网卡驱动。
在你电脑上看一眼
bash
# 谁占用了 3000 端口
lsof -i :3000
# 已建立的连接(节选)
netstat -an | grep ESTABLISHED | head -10
# 本机常见网卡/Wi-Fi 概况(可选)
ifconfig | head -40开发常见坑:端口被占用——另一个部门占着同一分机号,后到的起不来。
开发里什么时候用得上
- API 超时:可能是 DNS、防火墙、TLS 证书、对端挂了——分层排查
- Charles / Wireshark:在运输途中「拆袋检查」(HTTPS 需证书信任)
- 代理 / VPN:改的是「快递走哪条路」
练习
- 本机跑一个前端/后端,用
lsof -i :<端口>确认监听进程。 - 用浏览器打开一个站点,口头复述:DNS → TCP → TLS → HTTP。
小结
- 网络分层:各办各事,坏了先分层定位
- 端口是分机号;localhost 是内线
- Socket + syscall:程序不能直接摸硬件
下一课:隔间与分公司——容器与虚拟机。