原文地址:https://wuter.cn/1756.html/

一、IPv4地址

IP协议是为计算机网络相互连接进行通信而设计的协议,它是能使连接到网上的所有计算机网络实现相互通信的一套规则。

这里就不详细说IP地址的发展历史、编址方式、分配、管理相关的知识了,因为暂时用不到,只简单聊聊IP地址的分类:共有地址、私有地址。

1、公有地址

这个比较容易理解,公有地址也就是平时所说的公网IP,有了公网IP,才能拥有被外网中其他设备访问的能力。

但是目前运营商是不会给你分配公网IP的,2019年11月25日,所有43亿个IPv4地址已经分配完毕,IPv4地址已经枯竭。当然运营商不给家庭用户分配公网IP已经不是近几年的事情了,随着云计算等技术发展,运营商会更多的把公网IP高价卖给云服务商或者基础设施运营商。当然这样也不是没有好处,家庭宽带躲在运营商层层NAT之下,只要不是闲的没事干,网络范围内爆发的病毒不会找到你家门口。

2、私有地址

私有地址属于非注册地址,专门为组织机构内部使用。 简单来说,内网中的IP地址就是私有地址,再用不准确的方式来说,从路由器LAN口连接出来的设备的IP地址就是私有地址。最常见的一类就是192.168.0.0-192.168.255.255;另外就是127.0.0.1,这个地址专门用来表示自己,跟windows的"localhost"差不多(两者原理并不相同,涉及要不要经过网卡,这里就不讲了)。

百分之九十九的家庭宽带都是内网,而且是层层转发下来的内网,在路由器上查到的WAN口地址是一个运营商级别的更大的内网。

这样有什么坏处呢,如果正常上网办公学习没问题,但是涉及到BT下载、做服务器、某些游戏联机等等就会受到很大的约束。

二、NAT

很早之前我们就听说了IPv4已经不够分配了,全球太多接入互联网的设备了,但是直到今日,我们依然还是在使用IPv4,哪怕IPv6已经铺开了,但是使用率非常之低。为什么IPv4还一直够用呢?因为一个技术,就是NAT。

90年代中期,NAT作为一种解决IPv4地址短缺以避免保留IP地址困难的方案而流行起来。其主要的功能就是尽量使同个区域(同一栋楼、同个小区…)的设备使用尽可能少的公网IP,一起共用公网IP,这样就能减少公网IP的消耗。

现在所说的NAT其实已经发展为NAPT了,但是为了方便仍然叫做NAT。

这里我们举个例子。

我们假设有一台路由器公网IP为30.0.0.1,公网中有一台服务器IP地址为60.0.0.1

此时路由器后面的A电脑(IP为192.168.1.2)有一个进程,对应的端口号为10999,想要访问B服务器,一个简单的连接是这样的:首先A电脑要告诉B服务器它是谁,B服务器知道访问者的路径之后再把它需要的资源按照这个地址传送回去。

A电脑认为自己是192.168.1.2:10999,但是这样显然不对,公网NAT或者路由器的后面有无数个192.168.1.2,B服务器到底要把资源传给谁呢?所以说当A电脑某个进程的发出以192.168.1.2:10999为地址的进程之后,路由器会把这个地址悄咪咪的改成30.0.0.1:xxxxx,这里的xxxxx是路由器随意分配给这个进程的一个端口号,我们假设为10100。这样由于公网地址是唯一的,A电脑就和服务器连接成功开始通讯。

B服务器收到请求后,把资源按照30.0.0.1:10100的地址返回给路由器,然后路由器把这个地址转换为192.168.1.2:10999,这样B服务器的资源成功被A电脑获取。

这就是一个简单的NAT转换的过程。

三、端口映射

讲这个之前还是看刚才那个例子。

其实当A电脑与B服务器连接结束之后,路由器分配的10100端口自动释放,当服务器再按照30.0.0.1:10100想给A电脑传输数据的时候,因为路由器认为10100是一个无效端口,所以B服务器发来的这个数据包是个无效的数据包。

这就出现了一个很有意思的事情:A电脑只能主动向B服务器发送请求,但是B服务器却不能主动向A电脑发送请求,也就是A只能向外发数据,而不能主动接收数据。

端口映射应运而生,不如就规定,路由器的10100端口永远留给A电脑的,这样一来,B服务器就可以主动根据30.0.0.1:10100这个地址找到A电脑。

这就是端口映射。

端口映射有内部端口和外部端口,内部端口就是某个进程的实际端口,比如这里提到的A电脑的10999就是内部端口,用于外网访问的10100就是外部端口。

端口映射有个小例子,比如通过合理的技术手段绕过国内域名解析到国内服务器需要备案的门槛(这句不要),后面几篇文章会进行介绍。

四、内网穿透

你以为自己通过端口映射就可供外网访问了?

下图:运营商的无限套娃

当你想跟小伙伴联机的时候,小伙伴可能也是身处大内网套中内网套小内网的环境下,P2P确实很快,但你们这不是P2P,你们这叫P2222222222P。

这时候需要引入中间商,需要一台具有公网IP的服务器,A电脑与服务器进行连接,B电脑也与服务器进行连接,每当A电脑想要访问B电脑时,服务器可以把信息转换给B电脑,这样一来就实现了A与B的通讯。

这就是内网穿透的基本概念。

这里贴一个小哥的B站视频,讲的挺好。

内网穿透肯定也有一定的弊端,那就是A和B的通讯速度会严格受限于中间服务器的带宽,而国内的服务器带宽是非常非常贵的(增加1Mbps每个月费用上涨100元),如果A的家庭宽带是百兆宽带,B是千兆宽带,但是中间服务器的带宽是5M,那么A和B同时传输时理论上每条线路只有2.5M的带宽,短板效应,应该很方便理解。

今天大概更这些,之后利用frp进行内网穿透的实际操作。

NAT、端口映射、内网穿透、公网IP都是啥的更多相关文章

  1. 商务导航路由配置 2——端口映射 内网通过公网IP访问设置

  2. SSH 端口转发+内网穿透

    用最直白的语言对本文所有内容进行定义: 端口转发(-L):用A机器(内网)登录B机器(公网), 在A机器打开端口,将收到的所有请求转发到B机器的某个端口 (在代理机上执行) 内网穿透(-R):用A机器 ...

  3. VMware NAT端口映射外网访问虚拟机linux

    本文目的: 一. SSH连接 二. 访问HTTP VMware Workstation提供了两种虚拟机上网方式,一种bridge,一种NAT,bridge可以获得公网地址,而NAT只能是内网地址了. ...

  4. Tp-link路由器怎么设置端口映射 内网端口映射听语音

    https://jingyan.baidu.com/article/ca00d56c710ef9e99eebcf85.html 只有一台能上网的电脑就可以自己免费搭建服务器,本经验简单介绍家用tp-l ...

  5. hadoop hdfs 有内网、公网ip后,本地调试访问不了集群解决

    问题背景: 使用云上的虚拟环境搭建测试集群,导入一些数据,在本地idea做些debug调试,但是发现本地idea连接不上测试环境 集群内部配置hosts映射是内网映射(内网ip与主机名映射),本地只能 ...

  6. VMware NAT端口映射 外网可以访问内网虚拟机

    我想尝试的是利用本机的ip+port来访问虚拟机上的web服务器,因为这样的话,我就能够将我的web服务器部署成为一个能让外网访问的服务器了,首先说下我的环境: 主机:系统win7,ip地址172.1 ...

  7. 传输层 lcx实现本地端口映射&&内网代理

    如果目标服务器由于防火墙的限制,部分端口(例如3389)的数据无法通过防火墙,可以将目标服务器相应端口的数据透传到防火墙允许的端口(例如53),在目标主机上执行如下命令,就可以直接从远程桌面连接目标主 ...

  8. VMware NAT端口映射外网访问虚拟机linux可能会出现的错误总结

    博主因为做实验报告的缘故,尝试以NAT的方式从外网远程连接到虚拟机的linux操作系统:https://www.cnblogs.com/jluzhsai/p/3656760.html,本文主要举出在此 ...

  9. 本地Linux虚拟机内网穿透,服务器文件下载到本地磁盘

    本地Linux虚拟内网穿透 把服务器文件下载到本地磁盘 https://natapp.cn/ 1.注册账户点击免费隧道  

随机推荐

  1. C语言讲义——指针(pointer)

    指针是C语言最重要的特性之一, 也是最容易被误解的特性之一. 现代计算机把内存分割为字节(Byte), 每个字节都有唯一的地址(Address), 如果内存中有n个字节,可以把地址看做0~n-1的数. ...

  2. Maven 依赖树的解析规则

    对于 Java 开发工程师来说,Maven 是依赖管理和代码构建的标准.遵循「约定大于配置」理念.Maven 是 Java 开发工程师日常使用的工具,本篇文章简要介绍一下 Maven 的依赖树解析. ...

  3. rest-framework 解析器

    一 解析器的作用: 根据请求头 content-type 选择对应的解析器对请求体内容进行处理. 有application/json,x-www-form-urlencoded,form-data等格 ...

  4. HPSocket介绍与使用

    一.HPSocket介绍 HP-Socket是一套通用的高性能TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和Agent组件,广泛适用于各种不同应用场景的TCP/UDP/HTTP通信系 ...

  5. 使用PyQt(Python+Qt)+moviepy开发的视频截取、音视频分离、MP4转GIF动图工具免费下载分享

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在因博文素材需要将软件操作制作成动画时,发现网上相关绿色使用工具都需要 ...

  6. 第9.7节 Python使用write函数写入文件内容

    一. 语法 write(data) data为要写入的数据,可以为字符串str类型,也可以是bytes类型. 返回值为实际写入的数据数,在写入数据为str类型时,该数据为实际写入的UNIOCODE字符 ...

  7. PyQt学习随笔:Qt中Model/View中的怎么构造View匹配的Model

    老猿Python博文目录 老猿Python博客地址 在<PyQt学习随笔:Qt中Model/View相关的主要类及继承关系>介绍了Model/View架构的主要类,在实际使用时,view相 ...

  8. Mac下安装Mesa

    下载Mesa源代码: git clone https://gitlab.freedesktop.org/mesa/mesa.git 如果下载太慢,请参看 下载国外资源. 我下载后看到的Mesa版本信息 ...

  9. shell 编程 && bash 简介(shell 变量、shell操作环境、数据流重导向、管线命令、shell script)

    如何学习一门编程语言 数据类型 运算符 关键字 1 认识BASH 这个shell linux是操作系统核心,用户通过shell与核心进行沟通,达到我们想要的目的.硬件.核心.用户之间的关系: 原理:所 ...

  10. 精品软件-OfficeBox办公神器

    办公文档office处理套件,非常齐全,小巧! 官方地址:http://www.wofficebox.com/