ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【计算机网络学习|内网穿透】

【计算机网络学习|内网穿透】 目录一、概念解析二、内网穿透的典型工作流程三、结论设想这样一个场景你的实验室服务器A在内网朋友C在外网想访问它。正常情况下C 直接向 A 的公网 IP 发请求但 A 并没有独立的公网 IP而是藏在路由器后面。路由器NAT只允许内网设备主动向外发起的会话通过对外部主动进来的连接请求因为找不到对应的内网设备会直接丢弃。所以“设备能上网”不等于“能被外网主动访问”尤其在校园网、宿舍网等环境中更不可能通过设置路由器端口转发来解决。一、概念解析1. 端口传输层 TCP/UDP端口是操作系统为网络程序分配的逻辑编号范围 1–65535不是硬件接口。知名端口0–1023行业约定如 SSH22、HTTP80、HTTPS443但都可以修改。注册端口1024–49151软件自定义服务如 Minecraft 服务器25565、Jupyter8888。动态/临时端口49152–65535客户端发起向外连接时系统随机分配用完即释放。区分两种端口角色服务监听端口程序在本机等待接入可配置如将 SSH 从 22 改为 2222。客户端源端口向外访问时临时随机生成每次不同。2. NAT网络层路由器功能内网设备如 192.168.x.x 或 10.x.x.x通过路由器访问公网时路由器会记录会话映射源 IP端口 → 公网 IP端口。当公网返回数据时路由器根据记录找回内网设备。但若公网主动向内网发起连接路由器没有对应会话数据包会被直接丢弃。3. 隧道Tunnel隧道是一种底层的虚拟管道技术。内网机器 A 主动向公网中转服务器 B 发起出站连接建立一条持久的长连接隧道。由于是 A 主动发起路由器 NAT 会放行并保持会话这条连接不会被阻断。注意隧道本身只是裸字节流管道连通并不代表自动就能访问 A 的所有端口。4. 内网穿透利用隧道技术将内网服务暴露给外网访问这就是内网穿透要达到的效果。二、内网穿透的典型工作流程假设有四个角色A实验室服务器内网被访问方B公网中转服务器如 SakuraFrpC朋友电脑外网客户端D服务器主的电脑管理用具体步骤如下A 主动建立隧道A 向 B 发起出站连接维持一条持久隧道A ↔ B。B 开放对外端口在 B 上配置端口映射指定 B 的某个公网端口对应 A 上的某个服务端口例如 B:10022 → A:22或 B:25565 → A:25565。C 连接 B 的端口朋友 C 访问 B 的公网 IP 和映射端口B 收到请求后将数据通过隧道转发给 A。数据回传A 的响应经隧道返回 BB 再回复给 C。这样C 和 A 就实现了“虚拟的直接连接”。补充一条 A–B 隧道连接理论上可以承载多组端口映射比如同时映射 SSH 和 Minecraft。但一些傻瓜式图形工具如SakuraFrp每条隧道会新建一条 TCP 连接这属于软件实现层面的限制并非网络原理的限制。三、结论NAT 的存在使得外网无法主动访问内网设备。内网穿透的实质是让内网设备主动出站建立隧道再利用公网中转站进行数据转发。端口映射是穿透中的关键配置它明确了“公网哪个端口”对应“内网哪个服务”。理解端口、NAT、隧道三者之间的关系就能看清内网穿透的完整原理。
返回列表