计算机网络前置知识

向下滚动可查看阅读进度

计算机网络前置知识

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. 当前阶段需要记住的英文缩写

缩写全称中文
IPInternet Protocol网际协议
TCPTransmission Control Protocol传输控制协议
UDPUser Datagram Protocol用户数据报协议
HTTPHyperText Transfer Protocol超文本传输协议
HTTPSHyperText Transfer Protocol Secure安全的超文本传输协议
DNSDomain Name System域名系统
TLSTransport Layer Security传输层安全协议
SSHSecure Shell安全外壳协议

一句话总纲

DNS:帮我找到服务器

IP:告诉网络数据要去哪台机器

TCP:负责把数据可靠地送过去

HTTP:规定浏览器和服务器怎么交流

TLS:给通信加密和提供安全保障

HTTPS:HTTP + TLS