内网穿透的原理和实现方式
一、定义
内网穿透也成NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不被NAT设备屏蔽而正确路由到内网主机。
NAT(网络地址转换)设备自动屏蔽了非内网主机主动发起的连接,也就是说从外网发往内网的数据包将被NAT设备丢弃掉。这使得位于不同NAT设备之后的主机无法交换信息。这一方面保护了内网主机免于来自外部网络的攻击,另一方面也为P2P通信带来了一定困难。外部主机要与内网主机相互通信,必须由内网主机主动发起连接,使NAT设备产生一个映射条目。
二、工作方式
通信双方一台位于NAT之后
主机A有公网IP,主机B位于NAT之后,有一个内网IP。由于主机A有公网IP,所以主机B可以直接通过TCP连接到主机A,而主机A则无法直接向主机B发起连接。这时需要一个共有服务器辅助进行内网穿透,A、B主机同时向服务器发起登录请求,并保持一个TCP或UDP连接。服务器记录其IP地址和端口后(服务器对主机B的记录是起经过NAT映射之后的IP和端口号)。当主机A想连接主机B,首先向服务器提出请求,服务器在收到请求后向主机B发出打洞命令,并将主机A的IP和端口号发给主机B。主机B根据收到的IP地址和端口号向主机A发起TCP连接或UDP数据包(打洞)。由于打了洞所以公网主机也可以访问通过这个洞越过NAT访问内网设备,接下来两个主机即可进行通信。
即使用服务器记录下要访问内网的设备的IP,然后让处于内网的设备根据IP主动发起通信连接。(因为处于内网的设备已经提前主动连接了共有服务器,所以服务器才能向器发送命令和数据)
通信双方都位于NAT之后
实现方式同理,由于两个设备都没有公网IP,所以双方任意方向的的连接请求都会被对方的NAT设备屏蔽,同样需要两个设备都同时向服务器发起登录请求并保持连接。这个时候需要设备A向服务器提出连接请求,服务器将设备A的IP和端口号发给设备B,并向B发起打洞命令。设备B收到后向设备A发送一定数目的 UDP探测包或 TCP 连接请求,在 NAT B 上打一个方向为端口号对A设备的洞,随后告知服务器打洞完成。服务器收到后让A发出请求,由于此时设备B已经留下了对应于设备A的洞,故A设备发出的请求或数据包不会被丢弃。而随着A请求设备B,自己的NAT同样出现了朝向设备B的洞,那么双方即可完成通信。
三、总结
如果A主动向B发送一条信息,则A就在自己的NAT上打了一个朝向B的洞。这样A的这条消息到达B的NAT的时候,虽然被丢掉了,但是如果B这个时候在给A发信息,到达A的NAT的时候,就可以通过A之前打的洞将消息发送给A。
简单来讲,就是如果A和B要进行通信,那么得事先A发一条信息给B,B发一条信息给A,提前在各自的NAT上打了对方的洞,这样下一次A和B之间就可以进行通信了。而想要让他们能给对方法信息就得知道对方的IP地址,这就需要通过一个实现连接好的公网服务器进行信息的传递。
而内网穿透就是说我们让自己的内网设备事先去绑定一个具有公网IP设备的端口进行通信。那么当我们请求公网设备的指定端口时内网设备便能知道请求方的IP和端口,随后主动与其通信,实现与内网设备的通信。
内网穿透的原理和实现方式相关推荐
- 内网穿透实现原理及三种实现方式
1.操作系统 Deepin - 基于Linux的开源国产操作系统(软件生态好,缺点不够流畅) 官网 Ubuntu | 全球领先的用于个人电脑.平板及手机的操作系统 我使用的版本 Ubuntu乌班图-桌 ...
- 网件R6400内网穿透最简单的实现方式
我的树莓派和ubuntu server都是放在家里的,刚开始不太懂就购买了hua sheng bang,可惜只有2条映射,由于软件多需要的端口也多,我就又购买了2个,总共6条映射.后来看了B站的视频, ...
- frp内网穿透的原理
经过一段时间的使用,概况的总结下 内网穿透 让内网的项目,也可以通过转发 被外网访问到 如果用域名穿透 frps [common] bind_addr = 0.0.0.0 #bind_port f ...
- 使用frp端口映射实现内网穿透(SSH、HTTP服务)
使用frp端口映射实现内网穿透(SSH.HTTP服务) 一.下载 通过内网穿透的原理和实现方式的学习我们已经明白了内网穿透的原理,想要实现内网穿透就需要让内网实现与具有公网IP的设备进行绑定. 我们这 ...
- 内网穿透、seaFile、NAS私人云盘(一些原理和操作视频网址)
文章目录 内网穿透的原理 实现内网穿透的方式 用seaFile搭建云盘 内网穿透的原理 [硬核]公网访问?内网穿透!零经验上手!(大约10分钟课程) [计算机网络技术-路由器工作原理,3分钟教你 ...
- ngrok内网穿透原理分析和实现
转载: ngrok内网穿透原理分析和实现 在互联网终端急剧增长的今天,公网ip已经成为稀缺资源,对于国内垄断的电信运营商来讲,更是不可能随便免费给你一个公网ip,许多家庭宽带都无法分配到 公网ip,又 ...
- 内网穿透原理,以及用花生壳实现内网穿透
在做自学项目部署nginx的时候,nginx部署在阿里云服务器上,项目在本地,阿里云的nginx无法访问到本地的ip,所以需要做一下内网穿透.记录一下 什么是内网穿透? 内网和外网的概念: 内网:即所 ...
- 什么是内网穿透技术?简单实用、永久免费内网穿透工具有哪些?
内网穿透即是内网映射,内网(IP)端口映射外网(IP或域名),以实现将内网服务器.网站.和应用发布到外网访问的目的.通常在内网网络环境搭建服务器(解决无公网IP问题),需要外网访问内网场景(如远程办公 ...
- 手把手教你,搭建内网穿透服务
我的 GitHub 仓库:? 手把手教你搭建内网穿透服务,基于 lanproxy 穿透服务,为你深度定制了开箱即用的服务端和客户端 Docker 镜像. 在很多场景下内网穿透都是我们常常遇到的需求,之 ...
最新文章
- java 数字三角形_数字三角形 Number Triangles(java的MLE解决办法)
- 总结一下遇到的各种核函数
- git 无法拉取项目,本地ping不通github的解决办法(详解)
- MFC让文档/视图结构程序支持滚动条
- 进程用户态 上下文切换需要保存哪些_漫话性能:CPU上下文切换
- 信号分解:双正交、完备性、对偶向量
- Spring-学习笔记09【JdbcTemplate的基本使用】
- 解决jquery的scrollTop()置顶的浏览器兼容
- Spring RESTful Web服务中的异常处理
- ios 图片添加阴影
- 怎样把台式机变成虚拟服务器,怎么把文件传到虚拟主机
- 工作总结-虚拟机参数
- serv-u and hway3.0
- 无损音乐刻录成cd有意义吗_无损和CD不一样?无损音乐的“玄学”知多少?
- jcr多久更新一次_JCR-2017更新 | 快来看看你的影响影子吧
- (二)什么是Reactor模式
- 原型设计Axure的基本使用
- ERROR: The executable E:\路径名称\Scripts\python2.exe is not functioning
- Python Random随机数
- android q 桌面模式,Android Q带来全新桌面模式