目录
一、问题一:IP地址都能唯一标识主机了,那为什么还要使用arp协议来转化为mac地址来进行查找局域网内的机器呢?直接使用ip地址寻找不可以吗?
[1. IP地址是"逻辑"的,MAC地址是"物理"的](#1. IP地址是“逻辑”的,MAC地址是“物理”的)
[2. 数据包在局域网内的最终投递靠的是MAC地址](#2. 数据包在局域网内的最终投递靠的是MAC地址)
[3. 直接使用IP地址寻找为什么不行?](#3. 直接使用IP地址寻找为什么不行?)
[1. DHCP动态分配(最常见)](#1. DHCP动态分配(最常见))
[2. 网络环境切换](#2. 网络环境切换)
[3. 手动配置变更](#3. 手动配置变更)
[4. 网络设备更换](#4. 网络设备更换)
[5. IP冲突时自动调整](#5. IP冲突时自动调整)
三、问题三:局域网内的主机怎么连接到公网上的主机或者另一个局域网的主机,然后另一个主机又怎么返回相应的数据给我这个主机呢?思考其中的流程或者过程
[1、数据链路层(Data Link Layer)](#1、数据链路层(Data Link Layer))
[1. 核心功能](#1. 核心功能)
[2. 以太网(Ethernet)](#2. 以太网(Ethernet))
[3. 以太网帧格式(简化)](#3. 以太网帧格式(简化))
[4. 关键协议](#4. 关键协议)
[2、网络层(Network Layer)](#2、网络层(Network Layer))
[1. 核心协议:IP(Internet Protocol)](#1. 核心协议:IP(Internet Protocol))
[2. IP 地址 vs MAC 地址](#2. IP 地址 vs MAC 地址)
[3. IP 地址分类与私有地址](#3. IP 地址分类与私有地址)
[4. 路由过程(跨网段通信)](#4. 路由过程(跨网段通信))
[5. NAT(网络地址转换)](#5. NAT(网络地址转换))
[6. 其他重要协议](#6. 其他重要协议)
[3、传输层(Transport Layer)](#3、传输层(Transport Layer))
[1. 端口号(Port)](#1. 端口号(Port))
[2. UDP(User Datagram Protocol)](#2. UDP(User Datagram Protocol))
[3. TCP(Transmission Control Protocol)](#3. TCP(Transmission Control Protocol))
[4. 粘包问题(TCP 特有)](#4. 粘包问题(TCP 特有))
[5. MTU 对传输层的影响](#5. MTU 对传输层的影响)
[4、应用层(Application Layer)](#4、应用层(Application Layer))
[1. 应用层协议设计](#1. 应用层协议设计)
[2. HTTP(HyperText Transfer Protocol)](#2. HTTP(HyperText Transfer Protocol))
[3. DNS(Domain Name System)](#3. DNS(Domain Name System))
[4. 其他常见协议](#4. 其他常见协议)
5、关于"内网穿透"与"端口映射"的澄清(回应开头模糊描述)
一、问题一:IP地址都能唯一标识主机了,那为什么还要使用arp协议来转化为mac地址来进行查找局域网内的机器呢?直接使用ip地址寻找不可以吗?
触及了计算机网络分层的核心思想。简单来说,IP地址用于网络层的逻辑寻址,而MAC地址用于数据链路层的物理寻址。ARP协议就是连接这两层的桥梁。
我们可以通过一个生动的比喻来理解:
1、一个寄快递的比喻
假设你要从北京(网络A) 寄一个包裹到上海某小区(网络B) 的张三(目标主机)。
-
IP地址就像"上海市浦东新区XX路XX小区X号楼XXX室 张三收"。这是一个逻辑上的、全局的、结构化的"最终地址"。快递公司(网络层)根据这个地址决定如何跨城市运输。
-
MAC地址就像"张三的身份证号码"。它是一个物理的、本地的、唯一的标识。
-
传输过程:
-
你的包裹先被送到北京的本地分拣中心(路由器)。
-
分拣中心一看地址是"上海",就知道该走哪条长途线路(IP路由)。包裹经过长途运输,最终到达上海该小区的菜鸟驿站(目标局域网的路由器)。
-
关键一步来了 :菜鸟驿站的快递员现在需要把包裹送到"X号楼XXX室"。但他手头只有"张三"这个名字(IP地址),他并不知道张三具体在哪。于是他就在小区广播站(局域网)大喊:"张三(目标IP)的包裹到了,请出示一下你的身份证(MAC地址)来领取!"
-
张三听到后,回应道:"我就是张三,我的身份证号是123456(目标MAC)!"
-
快递员核对后,将包裹(数据帧)准确交给了张三。这个"大喊一声"和"回应"的过程,就是ARP协议。
-
2、从技术层面详细解释
1. IP地址是"逻辑"的,MAC地址是"物理"的
-
IP地址 :由软件分配和管理,可以随时改变(如DHCP、手动设置)。它定义了设备在整个互联网或某个网络中的逻辑位置。路由器根据IP地址表进行跨网络寻路。
-
MAC地址 :固化在网卡的硬件中,全球唯一(理论上),通常不可改变。它定义了设备在本地物理网络(如一个以太网段) 中的唯一身份。
2. 数据包在局域网内的最终投递靠的是MAC地址
当数据包通过IP路由最终到达目标局域网后,局域网的交换机(Switch)工作在数据链路层 ,它不认识IP地址,只认识MAC地址 。交换机根据数据帧头部的目标MAC地址,查询自己的MAC地址表,将数据帧精准地从正确的端口发送出去,交给目标主机。
**没有MAC地址和ARP会发生什么?**想象数据包到了目标局域网的路由器,路由器只知道"我要把数据发给IP是192.168.1.105的设备"。但它无法直接"喊话",也不知道这个设备连接在交换机的哪个端口上。没有MAC地址,数据就无法在局域网内完成"最后一米"的精准投递。
3. 直接使用IP地址寻找为什么不行?
因为硬件通信的基础是MAC地址。以太网、Wi-Fi等底层网络技术标准在设计时,就是规定通信帧必须包含源和目标MAC地址。网络接口卡(NIC)在接收数据时,会先检查帧的目的MAC地址是否与自己的MAC地址匹配(或广播地址),如果匹配才接收并上传给上层协议(如IP协议),否则直接丢弃。这是一个硬件级别的过滤机制,效率极高。
IP协议是跑在以太网等底层协议之上的 。你可以把IP数据包想象成一封信,而以太网帧是装着这封信的信封 。你要寄信(IP数据包),必须把它装进一个信封(以太网帧)里,并在信封上写好物理地址(MAC地址),邮差(交换机)才能替你送达。ARP协议就是帮你查询"收信人物理地址"的那个过程。
3、总结对比
| 特性 | IP地址 | MAC地址 | ARP协议 |
|---|---|---|---|
| 层次 | 网络层 (第3层) | 数据链路层 (第2层) | 连接网络层与链路层 |
| 作用范围 | 全局(跨越不同网络) | 本地(同一物理网络内) | 本地网络 |
| 用途 | 逻辑寻址,实现互联网范围的路径选择和寻址 | 物理寻址,实现局域网内设备的唯一标识和帧交换 | 地址解析,将已知的IP地址解析为对应的MAC地址 |
| 可变性 | 可变(由软件配置) | 通常不可变(烧录在硬件中) | 动态维护IP与MAC的映射表 |
| 类比 | 收件人姓名和完整邮政地址 | 收件人的身份证号和门牌号 | 在小区里喊楼问:"XXX室是谁?" |
结论: IP地址解决了"数据包如何跨越千山万水找到目标网络"的问题,而MAC地址和ARP协议解决了"数据包到达目标网络后,如何准确找到那台具体设备"的最后一公里问题。两者各司其职,分层协作,共同构成了现代网络通信的基石。
二、问题二:局域网ip地址在什么情况下会改变呢?
局域网IP地址确实是会变的,而MAC地址(通常)是固定的。
1、局域网IP地址会改变的场景
1. DHCP动态分配(最常见)
-
租约到期 :大多数家庭和公司网络使用DHCP服务器自动分配IP。分配的IP有"租期"(通常几小时到几天),到期后设备需要续租,可能获得不同的IP。
-
设备重新连接:设备断开网络一段时间后重新连接(如重启路由器、电脑休眠后唤醒),可能获得新IP。
-
DHCP服务器重启或配置变更:路由器重启或DHCP地址池调整后,设备重新获取IP时可能改变。
2. 网络环境切换
-
移动设备:笔记本、手机在不同网络间切换(公司WiFi→家庭WiFi→咖啡馆WiFi),每个网络都会分配不同的局域网IP。
-
VPN连接:连接到VPN后,设备会在VPN网络中获取一个新的虚拟局域网IP。
3. 手动配置变更
-
网络管理员或用户主动修改了设备的IP地址设置。
-
网络重组或子网划分时,可能需要统一更改IP地址规划。
4. 网络设备更换
- 更换路由器时,新路由器的默认局域网网段可能不同(如从192.168.1.x改为192.168.0.x)。
5. IP冲突时自动调整
- 当网络中出现IP地址冲突时,DHCP服务器或设备自身可能自动更换IP。
2、为什么MAC地址是稳定的标识
| 特性 | MAC地址 | IP地址(局域网内) |
|---|---|---|
| 分配方式 | 制造商固化在硬件中 | 动态分配(DHCP)或手动配置 |
| 变更频率 | 基本不变(除非虚拟化或手动修改) | 经常变化 |
| 作用范围 | 全局唯一(理论) | 本地唯一(在子网内) |
| 设备身份 | 物理身份:标识"这是哪台设备" | 逻辑位置:标识"设备在网络中的位置" |
3、实际场景示例
想象一个办公室网络:
-
周一 :你的电脑开机,DHCP分配IP
192.168.1.105 -
ARP表 中记录:
192.168.1.105→MAC: AA:BB:CC:11:22:33 -
周二 :路由器重启,你的电脑重新获取IP,得到
192.168.1.112 -
但你的网卡MAC地址 还是
AA:BB:CC:11:22:33
此时,如果其他电脑想访问你的电脑:
-
它们知道你的电脑叫"张三的电脑"(逻辑标识)
-
但不知道张三今天的具体座位号(IP)是多少
-
通过ARP广播:"谁是MAC地址
AA:BB:CC:11:22:33?请告诉我你的IP" -
你的电脑回应:"我在这里,我的IP是
192.168.1.112"
4、MAC地址"不变"的例外情况
虽然MAC地址设计为不变,但也有例外:
-
虚拟化环境:虚拟机可能有虚拟MAC地址
-
网络接口卡更换:更换网卡后MAC地址改变
-
操作系统虚拟MAC:某些系统(如Windows)可能生成随机MAC地址以保护隐私(尤其在公共场所WiFi)
-
手动修改:技术上可以修改MAC地址(MAC spoofing)
5、ARP的双向作用
值得注意的是,ARP协议不仅仅是"IP→MAC"的解析,它在实际网络中还承担着发现和更新网络拓扑的功能:
-
免费ARP:设备获取新IP后,会主动广播"我是MAC=X,我的IP现在是Y",帮助其他设备更新ARP表
-
冲突检测:如果两个设备响应同一个IP,说明有IP冲突
-
MAC地址学习:交换机通过查看帧的源MAC地址来学习设备在哪个端口
6、核心要点总结
-
局域网IP易变:因为它只是临时的"网络位置编号",会因网络配置、连接状态等频繁改变
-
MAC地址相对稳定:它是设备的"硬件身份证",伴随网卡生命周期
-
分层协作:IP地址负责"跨网络路由",MAC地址负责"本地精确投递",ARP是两者间的翻译官
-
动态网络管理:这种设计让网络管理更灵活,设备可以随意移动和重新连接,而不会影响基于MAC地址的底层通信
这就是为什么即使有IP地址,局域网内通信仍然需要MAC地址和ARP协议------MAC地址提供了在IP地址频繁变化的环境下,唯一可靠地标识物理设备的方法。
三、问题三:局域网内的主机怎么连接到公网上的主机或者另一个局域网的主机,然后另一个主机又怎么返回相应的数据给我这个主机呢?思考其中的流程或者过程
这是一个非常棒的问题!它涉及到了NAT(网络地址转换) 、路由选择 、会话跟踪等核心技术。
1、详细通信流程(以访问网页为例)
第一阶段:从内网到公网(出站)
步骤1:应用层发起请求
-
你在浏览器输入
http://example.com并回车 -
电脑操作系统将域名解析为公网IP(如
203.0.113.5) -
浏览器构建HTTP请求,TCP/IP栈封装数据包
步骤2:数据包离开你的电脑
你的电脑数据包:
-
源IP: 192.168.1.105(你的内网IP)
-
源端口: 54321(随机选择的临时端口)
-
目标IP: 203.0.113.5(服务器公网IP)
-
目标端口: 80(HTTP标准端口)
-
源MAC: 你的电脑MAC
-
目标MAC: 路由器局域网端口MAC
你的电脑通过ARP查询到路由器MAC地址、数据包发送到家庭路由器
步骤3:路由器进行NAT转换(最关键的一步!)
路由器收到数据包后:
-
记录会话信息(创建NAT表项):
NAT转换表记录: 内部地址: 192.168.1.105:54321 外部地址: 113.56.78.90:62000(路由器公网IP:新端口) 目标地址: 203.0.113.5:80 协议: TCP 时间戳: 12:00:00-
路由器保留你的内网IP和端口与远程服务器的对应关系
-
分配一个新的源端口号(62000)用于唯一标识这个会话
-
-
修改数据包头部 :源MAC和目标MAC也会相应更新为公网链路的MAC地址
修改后的数据包: 源IP: 113.56.78.90(路由器公网IP) ← 替换了你的内网IP! 源端口: 62000 ← 替换了你的54321端口 目标IP: 203.0.113.5(不变) 目标端口: 80(不变) -
转发到互联网:
-
路由器根据目标IP查询路由表
-
通过ISP网络,经过多个路由器跳转,最终到达目标服务器
-
步骤4:服务器接收请求
服务器看到的数据包:
源IP: 113.56.78.90(只知道是某个路由器的公网IP)
源端口: 62000
目标IP: 203.0.113.5(服务器自己的IP)
目标端口: 80
-
服务器完全不知道 你的内网IP
192.168.1.105的存在 -
它以为请求来自IP
113.56.78.90的端口62000
第二阶段:从公网返回内网(入站)
步骤5:服务器发送响应
服务器的响应数据包:
源IP: 203.0.113.5(服务器IP)
源端口: 80
目标IP: 113.56.78.90(路由器公网IP) ← 回应给路由器,不是你!
目标端口: 62000 ← 回应到路由器分配的那个端口
- 服务器只是简单地将响应发送回请求的来源地址和端口
步骤6:路由器进行NAT反向转换
路由器收到响应数据包后:
-
查找NAT表:
-
查看数据包:目标IP是
113.56.78.90,目标端口是62000 -
在NAT表中查找匹配项:找到记录:外部地址 113.56.78.90:62000 → 内部地址 192.168.1.105:54321
-
-
反向转换数据包:目标MAC地址也会更新为你的电脑MAC地址
修改后的数据包: 源IP: 203.0.113.5(不变) 源端口: 80(不变) 目标IP: 192.168.1.105 ← 恢复为你的内网IP! 目标端口: 54321 ← 恢复为你的原始端口 -
转发到内网:
-
路由器通过ARP查找
192.168.1.105对应的MAC地址 -
将数据包发送给你的电脑
-
步骤7:你的电脑接收响应
-
你的电脑看到数据包:
源IP: 203.0.113.5(服务器) 源端口: 80 目标IP: 192.168.1.105(自己的IP) 目标端口: 54321(自己发请求时用的端口) -
TCP/IP栈根据端口号
54321找到对应的应用程序(你的浏览器) -
浏览器收到HTTP响应,渲染网页
2、跨局域网通信的特殊情况
如果目标也在另一个局域网内(如视频会议双方都在各自家庭网络后):
你的NAT (A) ↔ 互联网 ↔ 对方的NAT (B)
192.168.1.x 公网 10.0.0.x
NAT穿透的挑战
双方都躲在NAT路由器后,彼此不知道对方的真实内网地址。解决方案:
-
打洞技术(UDP Hole Punching):
-
双方先连接一个公网服务器(中继服务器)
-
服务器记录双方的公网IP和端口映射
-
交换信息,指导双方直接向对方的NAT映射地址发送数据
-
NAT设备允许外部数据进入(因为内部先发起了会话)
-
-
中继服务器:
-
所有数据通过公网服务器转发
-
效率低但可靠(如TeamViewer的早期版本)
-
-
UPnP/端口转发:
-
路由器自动或手动配置端口映射
-
将特定端口直接映射到内网设备
-
3、NAT类型及其影响
| NAT类型 | 特点 | 穿透难度 |
|---|---|---|
| 完全圆锥型 | 任何外部主机都可以通过映射端口访问内网主机 | 容易 |
| IP限制圆锥型 | 只有特定IP的外部主机可以访问 | 中等 |
| 端口限制圆锥型 | 只有特定IP和端口的外部主机可以访问 | 困难 |
| 对称型 | 不同目标使用不同外部端口映射 | 最困难 |
4、关键技术总结
-
NAT(网络地址转换):
-
解决IPv4地址不足的核心技术
-
隐藏内网结构,提供安全屏障
-
维护NAT转换表实现双向通信
-
-
端口映射:
-
一个公网IP+端口 ↔ 一个内网IP+端口
-
路由器通过端口号区分不同内网设备的会话
-
-
状态跟踪:
-
NAT路由器记录每个出站连接的详细信息
-
根据这些信息正确转发入站数据包
-
-
TCP/UDP会话管理:
-
基于传输层协议(TCP/UDP)的端口号
-
包含超时机制(无流量一段时间后删除NAT表项)
-
5、简化的生活比喻
想象一个大公司前台(路由器) 的来电系统:
-
员工(内网设备) 没有直拨外线
-
员工想打电话给客户:
-
员工用分机105(内网IP)拨前台总机
-
前台记录:分机105 → 客户号码XXX
-
前台用公司总机(公网IP)拨出电话
-
客户看到来电显示是公司总机
-
-
客户回电时:
-
客户拨打公司总机
-
前台查记录:"这个客户之前和分机105通过话"
-
前台将电话转接到分机105
-
这就是为什么成千上万的家庭可以共享有限公网IP访问互联网,而互联网上的服务器只需要知道路由器的公网IP,不需要知道内网每个设备的存在。NAT技术是现代互联网能够容纳数十亿设备的关键发明!
四、总结:计算机网络四层模型
1、数据链路层(Data Link Layer)
作用 :在同一物理网络 (如同一个局域网)内的两个相邻节点之间可靠地传输数据帧。
1. 核心功能
-
帧封装与解封装:将网络层的 IP 数据包封装成帧;
-
物理地址寻址 :使用 MAC 地址(48 位,全球唯一)标识设备;
-
差错检测 :通过 CRC(循环冗余校验)检测传输错误;
-
流量控制(部分协议支持);
-
介质访问控制(MAC):解决多设备共享信道的冲突问题(如 CSMA/CD)。
2. 以太网(Ethernet)
-
是最主流的数据链路层技术;
-
包含物理层 + 数据链路层:
-
物理层:规定线缆类型(双绞线、光纤)、拓扑(星型)、速率(10M/100M/1G);
-
数据链路层:定义帧格式、MAC 地址、CSMA/CD(已基本被交换机取代)。
-
3. 以太网帧格式(简化)
| 目的MAC (6B) | 源MAC (6B) | 类型 (2B) | 数据 (46--1500B) | FCS (4B) |
-
类型字段:
-
0x0800→ IPv4 -
0x0806→ ARP
-
-
最小帧长 64 字节(含头部和 FCS),不足则填充;
-
MTU (Maximum Transmission Unit):1500 字节(指 IP 层 payload 最大值)。
4. 关键协议
-
ARP (Address Resolution Protocol):将 IP 地址 → MAC 地址(局域网内);
-
RARP(已淘汰):MAC → IP(被 DHCP 取代)。
注意:数据链路层只关心"下一跳"设备的 MAC,不关心最终目的地 IP。
2、网络层(Network Layer)
作用 :在复杂异构网络 中,为数据包选择一条从源主机到目的主机的端到端路径(路由)。
1. 核心协议:IP(Internet Protocol)
-
无连接、不可靠:不保证送达、不保序、不重传;
-
提供逻辑地址(IP 地址):32 位(IPv4),用于跨网络寻址。
2. IP 地址 vs MAC 地址
| 特性 | IP 地址 | MAC 地址 |
|---|---|---|
| 层级 | 网络层 | 数据链路层 |
| 作用范围 | 全球(公网)或子网(私网) | 本地局域网 |
| 是否可变 | 可配置、可变 | 硬件固化(可 spoof) |
| 路由依据 | 路由器根据 IP 转发 | 交换机根据 MAC 转发 |
3. IP 地址分类与私有地址
-
公网 IP:全球唯一,由 ISP 分配;
-
私有 IP(RFC 1918):
-
10.0.0.0/8 -
172.16.0.0/12 -
192.168.0.0/16
-
-
子网划分 :通过子网掩码(如
255.255.255.0)划分子网,提高地址利用率。
4. 路由过程(跨网段通信)
-
主机 A(192.168.1.10)要发包给 B(10.0.0.20);
-
A 发现目标不在同网段 → 发给默认网关(路由器);
-
路由器查路由表,决定下一跳;
-
每一跳都通过 ARP 获取下一跳 MAC;
-
最终到达目标网络,由目标主机接收。
5. NAT(网络地址转换)
-
解决 IPv4 地址不足;
-
NAPT (Port NAT):用 IP + 端口 映射多个内网主机到一个公网 IP;
-
限制:破坏端到端通信,外部无法主动连接内网。
6. 其他重要协议
-
ICMP(Internet Control Message Protocol):
-
用于网络诊断(如
ping= ICMP Echo Request/Reply); -
报告错误(如 TTL 超时、目标不可达)。
-
-
IP 分片:
-
当 IP 包 > 下一跳 MTU 时,路由器会分片;
-
由目的主机重组;
-
IPv6 已取消中间分片,改由源端路径 MTU 发现(PMTUD)。
-
3、传输层(Transport Layer)
作用 :为两台主机上的应用程序提供端到端的通信服务。
1. 端口号(Port)
-
16 位,标识主机上的具体进程(如 22=SSH, 80=HTTP);
-
知名端口 (0--1023)、注册端口 (1024--49151)、动态端口(49152--65535)。
2. UDP(User Datagram Protocol)
-
无连接、不可靠、低开销;
-
适用于:DNS、视频流、游戏、VoIP;
-
特点:尽最大努力交付,无重传、无拥塞控制。
3. TCP(Transmission Control Protocol)
-
面向连接、可靠、有序、基于字节流;
-
核心机制:
-
三次握手(建立连接)
-
四次挥手(释放连接)
-
确认应答 + 超时重传
-
滑动窗口(提高吞吐)
-
流量控制(接收方控制发送速度)
-
拥塞控制(慢启动、拥塞避免、快重传、快恢复)
-
延迟应答 + 捎带应答(提升效率)
-
4. 粘包问题(TCP 特有)
-
原因:TCP 是字节流,无消息边界;
-
解决方案:
-
固定长度消息;
-
分隔符(如
\n); -
长度前缀(如 4 字节表示 body 长度)。
-
5. MTU 对传输层的影响
-
UDP:若 payload + IP + UDP 头 > MTU → IP 层分片 → 任一片丢失则整个包丢弃;
-
TCP:通过 MSS(Maximum Segment Size = MTU - 40)协商,避免 IP 分片。
4、应用层(Application Layer)
作用:直接为用户提供网络服务,实现具体业务逻辑。
1. 应用层协议设计
-
自定义协议需定义:
-
报文格式(Header + Body)
-
编码方式(文本/二进制)
-
错误处理、版本兼容等
-
2. HTTP(HyperText Transfer Protocol)
-
基于 TCP,请求-响应模型;
-
无状态(靠 Cookie/Session 维持状态);
-
常见方法:GET、POST、PUT、DELETE;
-
HTTPS = HTTP + TLS(加密+认证)。
3. DNS(Domain Name System)
-
作用 :将域名(如
www.baidu.com)解析为 IP 地址; -
工作流程:
-
客户端查本地 hosts;
-
查本地 DNS 缓存;
-
向本地 DNS 服务器(如 114.114.114.114)查询;
-
递归/迭代查询根域 → 顶级域(.com)→ 权威 DNS;
-
返回 IP,客户端缓存结果。
-
-
记录类型:A(IPv4)、AAAA(IPv6)、CNAME(别名)、MX(邮件)等。
4. 其他常见协议
-
SMTP/POP3/IMAP(邮件)
-
FTP(文件传输)
-
SSH(安全远程登录)
-
DHCP(自动分配 IP)
5、关于"内网穿透"与"端口映射"的澄清(回应开头模糊描述)
"把本地 ssh 22 号端口映射到 frps 的 XXX 端口比如 8885",这属于 反向代理隧道 (Reverse Proxy Tunnel),是 应用层穿透方案 ,典型工具如 frp、ngrok:
-
原理:
-
内网机器(client)主动连接公网服务器(frps);
-
建立长连接隧道;
-
外网用户访问
frps:8885→ frps 通过隧道将请求转发给内网:22;
-
-
本质 :不是 NAT 打洞 ,而是 中继转发,100% 可通,但依赖公网服务器。
总结:四层协同工作示例(访问百度)
-
应用层:浏览器发起 HTTP GET 请求;
-
传输层:封装为 TCP 段(目标端口 80);
-
网络层:封装为 IP 包(目标 IP = 百度服务器 IP);
-
数据链路层:
-
若在同一网段 → ARP 获取 MAC,发帧;
-
若跨网段 → 发给网关,网关逐跳路由;
-
-
百度服务器收到后,逐层解封装,返回 HTML;
-
浏览器渲染页面。