计算机网络前置知识
1. 计算机网络是干什么的
计算机网络本质上研究的是:
一台计算机上的程序,如何与另一台计算机上的程序通信。
例如浏览器访问网站:
浏览器(客户端)
↓
网络
↓
网站服务器
常见通信流程:
找到服务器
→ 建立连接
→ 发送请求
→ 服务器处理
→ 返回响应
→ 浏览器显示页面
2. Client 和 Server
Client
Client:客户端
主动向服务器发起请求的一方。
例如:
- 浏览器
- 手机 App
- 前端网页
Server
Server:服务器
接收请求并提供服务的一方。
例如浏览器访问一个网站:
Client Server
浏览器 ─────── 请求 ───────→ 网站服务器
浏览器 ←────── 响应 ──────── 网站服务器
3. IP 地址
IP:Internet Protocol
中文:
网际协议 / 互联网协议
IP 地址用于标识网络中的设备。
可以简单理解:
IP 地址解决“数据应该发给哪台机器”。
例如:
192.168.1.10
可以类比现实地址:
IP 地址 ≈ 哪栋楼
4. Port 端口
Port:端口
一台计算机上可以同时运行很多网络程序,因此只知道 IP 地址还不够,还需要知道应该把数据交给哪个程序。
例如:
HTTP → 80
HTTPS → 443
SSH → 22
所以:
IP 地址 + Port
可以定位某台机器上的某个网络服务。
类比:
IP 地址 = 哪栋楼
Port = 哪个房间
5. Protocol 协议
Protocol:协议
协议就是:
通信双方共同遵守的一套规则。
例如双方需要约定:
- 数据是什么格式
- 什么字段表示什么含义
- 请求应该怎么写
- 响应应该怎么写
HTTP 就是一种网络协议。
例如:
GET /index.html HTTP/1.1
Host: example.com
服务器能够理解这段数据,是因为双方都遵守 HTTP 协议。
6. 网络数据通常会被拆开传输
网络通常不会把一大块数据直接整体发送。
例如:
ABCDEFGHIJK
可能被拆成:
ABC
DEF
GHI
JK
然后分别进行传输。
在不同网络层中,这些数据单位有不同名称,例如:
应用层:Data
传输层:Segment
网络层:Packet
数据链路层:Frame
暂时不用死记这些名称。
重点知道:
网络传输的数据通常会被分块。
这也是之后理解丢包、重传、TCP 队头阻塞的重要基础。
7. TCP
TCP:Transmission Control Protocol
中文:
传输控制协议
TCP 属于传输层协议。
它主要负责:
将数据可靠、有序地从一个程序传给另一个程序。
TCP 的核心特点:
- 面向连接
- 可靠传输
- 保证数据顺序
- 出现数据丢失时可以重传
例如发送:
1 2 3
如果 2 丢失:
1 3
TCP 会想办法重新发送 2。
初期可以简单记:
TCP 的特点是可靠、有序、面向连接。
8. UDP
UDP:User Datagram Protocol
中文:
用户数据报协议
UDP 同样属于传输层协议。
UDP 相比 TCP 更简单。
UDP 不保证:
- 数据一定到达
- 数据按照发送顺序到达
- 丢失的数据一定重传
所以可以粗略理解:
TCP:更强调可靠
UDP:更轻量、开销更小
注意:
“UDP 一定比 TCP 快”并不是严格正确的说法。
9. HTTP
HTTP:HyperText Transfer Protocol
中文:
超文本传输协议
HTTP 属于应用层协议。
它主要规定:
客户端和服务器之间应该如何发送请求和响应。
例如:
浏览器:
我要首页
服务器:
这是首页内容
对应到 HTTP:
HTTP Request
HTTP Response
10. HTTP 和 TCP 的关系
HTTP 和 TCP 不是同一层。
HTTP 属于:
应用层
TCP 属于:
传输层
可以简单理解:
HTTP:规定发送什么内容、内容是什么格式
TCP:负责可靠地把这些内容送过去
类比:
HTTP = 信件内容
TCP = 快递运输系统
传统 HTTP 通信经常是:
HTTP
↓
TCP
↓
IP
11. IP 和 TCP 的区别
TCP 主要解决:
数据如何可靠地从一个程序传到另一个程序。
IP 主要解决:
数据应该发送到哪台机器。
所以可以先记:
HTTP:应用之间怎么交流
TCP :数据怎么可靠传输
IP :数据应该发到哪台机器
12. DNS
DNS:Domain Name System
中文:
域名系统
我们平时访问:
www.example.com
但网络通信最终需要找到服务器的 IP 地址。
所以 DNS 负责:
域名
↓
IP 地址
例如:
www.example.com
↓
某个 IP 地址
可以类比:
域名 = 联系人姓名
IP = 电话号码
DNS = 通讯录
因此 DNS 最核心的作用:
将域名解析成 IP 地址。
13. HTTP 和 HTTPS
HTTP
HTTP:HyperText Transfer Protocol
HTTP 本身不会自动提供加密保护。
HTTPS
HTTPS:HyperText Transfer Protocol Secure
可以简单理解为:
HTTPS = HTTP + TLS
其中:
TLS:Transport Layer Security
中文:
传输层安全协议
TLS 主要提供:
- 加密
- 身份认证
- 数据完整性保护
所以 HTTPS 的核心目标就是:
让 HTTP 通信更加安全。
常见默认端口:
HTTP → 80
HTTPS → 443
14. 五层网络模型
常见五层模型:
应用层
Application Layer
HTTP / HTTPS / DNS
↓
传输层
Transport Layer
TCP / UDP
↓
网络层
Network Layer
IP
↓
数据链路层
Data Link Layer
Ethernet / Wi-Fi
↓
物理层
Physical Layer
网线 / 光纤 / 无线电波
15. 前端阶段最重要的主线
目前最需要记住:
HTTP
↓
TCP
↓
IP
分别对应:
HTTP:应用之间传什么、怎么表达
TCP:数据如何可靠地传输
IP:数据应该发送到哪台机器
16. 浏览器访问网站的简化流程
例如访问:
https://www.example.com
可以先粗略理解成:
1. 浏览器拿到域名 www.example.com
2. DNS
域名 → IP 地址
3. 根据 IP 找到目标服务器
4. 建立网络连接
5. HTTPS 建立安全通信
6. 浏览器发送 HTTP Request
7. 服务器处理请求
8. 服务器返回 HTTP Response
9. 浏览器处理响应并显示页面
后续学习会逐渐补充:
DNS
↓
TCP 三次握手
↓
TLS 握手
↓
HTTP 请求
↓
HTTP 响应
↓
浏览器渲染
17. 当前阶段需要记住的英文缩写
| 缩写 | 全称 | 中文 |
|---|---|---|
| IP | Internet Protocol | 网际协议 |
| TCP | Transmission Control Protocol | 传输控制协议 |
| UDP | User Datagram Protocol | 用户数据报协议 |
| HTTP | HyperText Transfer Protocol | 超文本传输协议 |
| HTTPS | HyperText Transfer Protocol Secure | 安全的超文本传输协议 |
| DNS | Domain Name System | 域名系统 |
| TLS | Transport Layer Security | 传输层安全协议 |
| SSH | Secure Shell | 安全外壳协议 |
一句话总纲
DNS:帮我找到服务器
IP:告诉网络数据要去哪台机器
TCP:负责把数据可靠地送过去
HTTP:规定浏览器和服务器怎么交流
TLS:给通信加密和提供安全保障
HTTPS:HTTP + TLS