From 3bfc7ebb998a901fd3f38cbb051001cb4d63c2b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8F=B2=E5=B0=94=E5=BE=B7?= <2561191824@qq.com> Date: Tue, 19 May 2026 17:18:27 +0800 Subject: [PATCH] 1 --- ...41\345\236\213\347\254\224\350\256\260.md" | 203 ++++++++++++++++++ 1 file changed, 203 insertions(+) create mode 100644 "33 \347\237\263\345\245\245\347\277\224/20260519 \347\275\221\347\273\234\345\210\206\345\261\202\346\250\241\345\236\213\347\254\224\350\256\260.md" diff --git "a/33 \347\237\263\345\245\245\347\277\224/20260519 \347\275\221\347\273\234\345\210\206\345\261\202\346\250\241\345\236\213\347\254\224\350\256\260.md" "b/33 \347\237\263\345\245\245\347\277\224/20260519 \347\275\221\347\273\234\345\210\206\345\261\202\346\250\241\345\236\213\347\254\224\350\256\260.md" new file mode 100644 index 0000000..df063b8 --- /dev/null +++ "b/33 \347\237\263\345\245\245\347\277\224/20260519 \347\275\221\347\273\234\345\210\206\345\261\202\346\250\241\345\236\213\347\254\224\350\256\260.md" @@ -0,0 +1,203 @@ +## **1.网络分层模型** + +> “为什么分层”:复杂系统拆成职责清楚的层。 + +TCP/IP 模型是互联网通信的基础,它定义了一套标准化的协议,让不同厂商、不同网络结构的设备能够互相通信。 + +背一下OSI七层模型: + +应用层 + +表示层 + +会话层 应用层 + +传输层 + +网络层 + +数据链路层 + +物理层 网络接口层 + + + + + +相比于理论更完善的 **OSI七层模型**,**TCP/IP模型**更简洁、实用。它通常被描述为四层或五层结构: + +- **层次从上到下** + +数据从你的应用程序出发,一层层地“打包”,最后通过网线或Wi-Fi发送出去。 + +| 层数 | 名称 | 功能与职责 | 核心协议/概念 | 数据单位 | +| :---- | :------------- | :----------------------------------------------------------- | :----------------------------------------------------------- | :------- | +| **5** | **应用层** | 直接为你的应用程序(App、浏览器等)提供网络服务。决定了数据的具体含义。 | HTTP/HTTPS(网页)、SMTP(邮件)、FTP(文件传输)、DNS(域名解析)、SSH , | 报文 | +| **4** | **传输层** | 负责**端到端**的连接,解决数据可靠传输和流量控制问题。 | **TCP**(可靠、有连接,如网页、邮件) **UDP**(不可靠、无连接、速度快,如视频通话、DNS) | 段 | +| **3** | **网络层** | 负责**路径选择**和**逻辑寻址**,决定数据包从哪条路去往目标设备。 | **IP协议**(IPv4/IPv6,定义源和目的IP地址) ICMP(ping命令就是这个) | 包 | +| **2** | **数据链路层** | 负责在**同一物理网络**(如同一个局域网内)的两个设备之间传输帧数据。 | **以太网**、Wi-Fi (802.11) **MAC地址**(物理地址,设备唯一的身份证) | 帧 | +| **1** | **物理层** | 负责把二进制的0和1转换为物理信号(电信号、光信号、无线电波)在线缆或空气中传输。 | 网线(双绞线)、光纤、无线电频率、集线器、电压、接口标准 | 比特 | + +- **核心概念:数据封装** + +当发送数据时,每一层都会在收到的数据“前面加上一个头部”(有点像快递层层打包),这个过程叫**封装**。 + +​ **举例:你用浏览器访问一个网站** + +1. **应用层**:浏览器(HTTP协议)生成请求报文:“给我 index.html 文件”。 +2. **传输层**:TCP协议给这个请求加上**TCP头部**(包含源端口、目的端口:80),形成一个**段**。 +3. **网络层**:IP协议加上**IP头部**(包含你的IP和网站服务器的IP),形成一个**数据包**。 +4. **数据链路层**:以太网协议加上**MAC头部**(包含你电脑网卡的MAC地址和下一跳路由器的MAC地址),形成一个**帧**。 +5. **物理层**:将帧里的二进制数据变成电信号,通过网线发送出去。 + +接收方收到数据后,从下往上一层一层地“拆包”,最终读到原始的网页内容。 + +- **TCP/IP模型也有简化为四层的:应用层、传输层、网络层、网络接口层。** + +## **2.IP 地址与 MAC 地址** + +- **IP 地址**:网络层地址,用来**跨网络找主机**,例如 `192.168.1.10` +- **MAC 地址**:网卡硬件地址,用来在同一**局域网内找到设备** +- **端口号**:用来找到**主机上的具体进程(程序)**,例如 HTTP 默认 `80`,HTTPS 默认 `443` + +一句话: + +> IP 找机器,端口找程序,MAC 找局域网里的下一跳。 + +**IPv4地址 传统分类(有类编址)**: + +- | 类别 | 开头范围 | 网络号位数 | 主机号位数 | 默认子网掩码 | 用途 | + | :--- | :------- | :--------- | :--------- | :-------------- | :------------------- | + | A 类 | 0~127 | 8 | 24 | `255.0.0.0` | 超大型网络 | + | B 类 | 128~191 | 16 | 16 | `255.255.0.0` | 中型网络 | + | C 类 | 192~223 | 24 | 8 | `255.255.255.0` | 小型网络 | + | D 类 | 224~239 | - | - | - | 组播(不分配给主机) | + | E 类 | 240~255 | - | - | - | 实验保留 | + + > **注意**:127.0.0.1 是回环地址(代表本机),不属于任何网络类别。 + +#### 2. 无类域间路由(CIDR)—— 现代实际使用 + +- 不再死板使用 A/B/C 类,而是通过 **子网掩码可变长度** 任意划分网络。 +- 表示方法:`192.168.1.0/24` 表示前 24 位是网络号,相当于 `255.255.255.0`。 +- 常用前缀: + - `/8` → 等同 A 类 + - `/16` → 等同 B 类 + - `/24` → 等同 C 类 + - `/30` → 点对点链路(只有 2 个可用主机) + +- #### 3. 公网 IP vs 私有 IP + + - **公网 IP**:全球唯一,需向运营商或互联网注册机构申请,可直接在互联网上路由。 + - **私有 IP**:仅用于局域网内部,不能直接访问互联网,数据包必须经过 NAT 转换。 + + | 私有 IP 地址范围 | CIDR 表示 | 作用 | + | :-------------------------------- | :--------------- | :-------------------------------- | + | `10.0.0.0` ~ `10.255.255.255` | `10.0.0.0/8` | 大型内网 | + | `172.16.0.0` ~ `172.31.255.255` | `172.16.0.0/12` | 中型内网(很多人漏掉这一段) | + | `192.168.0.0` ~ `192.168.255.255` | `192.168.0.0/16` | 最常见的小型局域网(家庭/办公室) | + + - 此外还有 **APIPA**(自动私有 IP 寻址):当 DHCP 获取不到 IP 时,Windows 会自动分配 `169.254.x.x/16`,仅限同网段通信。 + - DHCP 自动为网络中的设备分配 **IP 地址、子网掩码、默认网关、DNS 服务器** 等网络参数,省去手动配置的麻烦。 + +- 端口测试: + +``` +telnet <端口> # 测试 TCP 端口是否开放 +nc -vz <端口> # netcat 更现代 +示例:`telnet www.baidu.com 80` +``` + +### 网关 + +- **网关** 是连接两个不同网络的设备(通常是路由器)。 +- 对内网设备来说,**默认网关** 就是当数据包的目标 IP 不在本子网时,发往的下一跳地址。 +- 查看网关: + - Windows:`ipconfig` + - Linux / macOS:`route -n` 或 `ip route` + +### NAT(网络地址转换) + +#### 1. 为什么需要 NAT? + +- IPv4 地址枯竭,全球公网 IP 不够用。几位?怎么换算。 +- 内网使用私有 IP,访问互联网时,路由器把私有 IP 转换成公网 IP。 + +#### 2. 常见 NAT 类型 + +- **SNAT**(源地址转换) + 你家里的多台设备(192.168.1.x)共享一个公网 IP 上网。路由器记住每个连接的端口映射,收到回复时再分发给正确的内网设备。 +- **DNAT**(目的地址转换) + 当你搭建服务器,想让互联网访问你的内网服务,可以在路由器上做端口映射: + `公网IP:8080` → `192.168.1.100:80` +- **PAT**(端口地址转换)—— 最常用的“多对一” + 内网多台设备使用同一个公网 IP,通过不同端口号区分。 + +#### 3. NAT 的局限性 + +- 外网无法主动访问内网设备(除非手动配置端口映射)。 +- 某些协议(如 FTP、IPsec)在 NAT 环境下需要特殊处理。 +- IPv6 普及后,NAT 不再是必须的。(IPv4 32位,IPv6:128位) + +#### 4. 查看你的公网 IP + +- 访问网站:`ifconfig.me` 或 `whatismyip.com` +- 命令行(Linux):`curl ifconfig.me` + +## **3.局域网、交换机、路由器** + +这是最容易混的部分。 + +- **交换机**:工作在局域网内,根据 MAC 地址转发数据帧 +- **路由器**:连接不同网络,根据 IP 地址转发数据包 +- **网关**:本机去外网时交给的“出口路由器” + +## TCP 与 UDP + +这是网络基础的重点。传输层的两大核心协议,一个重可靠,一个重速度。 + +### TCP(传输控制协议): + +- **特点**:面向连接、可靠、有序、较慢 + +- 典型场景:网页、文件传输、登录、支付 + +- ##### 1. 三次握手 —— 建立连接 + + - 客户端向服务器发送 **SYN**(请求同步) + - 服务器回复 **SYN+ACK**(同意并确认) + - 客户端再回复 **ACK**(确认) + - 之后双方才能正式传输数据 + + > 就像打电话: + > “喂?” → “在的,你听得见吗?” → “听得见,开始说吧。” + +- ##### **2.四次挥手 ——释放连接** + + **四次挥手就像两个人挂电话** + + > A:“我说完了,挂了吧?”(FIN) + > + > B:“好的,我知道了。”(ACK) —— 但 B 还有最后一句话要说 + > + > B:“我也说完了,挂吧。”(FIN) + > + > A:“好的,再见。”(ACK) 然后挂断。 + +### UDP(用户数据报协议): + +- 无连接 + +- 不保证可靠 + +- 延迟低、开销小 + +- 典型场景:直播、语音、视频会议、游戏、DNS + + > 就像寄信: + > 写信->装信封->塞信箱后,就不管了 + +对比: + +> TCP 像打电话,先建立连接,确认对方在。 +> UDP 像寄明信片,发出去就不管了。 \ No newline at end of file -- Gitee