前言
此文内容目前处于BETA版本
在互联网时代,IP地址的相关知识是很有用的,我们在配置家庭网络、设置静态IP登陆防蹭网等场景均可用上。我在NAS中玩虚拟机的时候,需要配置网桥、网卡之类的东西,也需要对IP地址有一定的了解。由于我的NAS系列教程即将推出,因此我希望借助这篇小文章完善IP地址这一重要基础知识储备。当然,我不会介绍一些非常专业的知识(超出能力范围),只会结合自身实践,介绍一些比较实用的知识框架和技能。如果想要彻底了解IP地址,Google或者专业书籍才是最适合的学习方式 ヾ(≧∇≦*)ゝ
简介
在互联网中,最简单的关系就是两台设备之间的单向数据传输。可以记为:A→B
。那么,互联网里面设备如此之多,A
怎么知道谁是B
呢?
因特网协议(Internet Protocol,IP)地址是接入互联网的设备(比如电脑、手机、智能电视等)的“身份证号”。就像我们平时坐高铁/飞机、上医院看病一样,对方看到你的身份证就知道你是谁;设备有了IP地址,才可以被互联网的其它设备所识别,从而建立通信。
当然,现实情况要稍微复杂一些。绝大多数的IPv4地址都是公有地址(即常说的公网IP),这需要服务商向国际互联网信息中心申请注册。在家用场景中常见的192.168.1.5
等地址实际上属于IPv4地址中的C类地址,属于私有地址,外界无法直接访问。在中国大陆的家用环境里,拥有公网IP的一般是电信运营商或者是光猫开启桥接模式的用户(这种情况获得的IP一般被称为动态公网IP,需要依赖DDNS服务才可以实现基于域名的稳定访问)。依靠网络地址转换(Network Address Translation,NAT)等技术(一般是路由器负责),局域网内设备才得以与互联网的其它设备互通数据。
之所以采取这种“曲线”连网的方式,是因为互联网在研发之初只是一个军用项目,其在民用市场大放异彩则是后话。最初设计IP规则的科学家们多少有点低估未来接入互联网设备的数量了。其实这种事在信息技术行业也是数见不鲜,比如设计操作系统的时候,刚开始时大家也是搞32位,后来硬件性能和数据量剧增才逐渐转向64位(至少在商用市场中是这样)。总之,IPv4是个历史遗留问题。
值得一提的是,目前约定的IPv4私有地址网段其实也是挺多的:
- A类地址:10.0.0.0–10.255.255.255
- B类地址:172.16.0.0–172.31.255.255
- C类地址:192.168.0.0–192.168.255.255
为什么大多数人比较喜欢用C类(192.168.X.X)地址呢?其实更多是家用路由器开发商和网管们的一种约定习惯,也没啥特别道理的 (ฅ´ω`ฅ) 这种约定俗成的事在互联网的世界里很多(比如计算机时间的第一天默认为1970-01-01,这牵涉到32操作系统、UNIX时间戳等多个方面)。
为了应对IPv4地址数量稀少(IPv4地址的总数为232=4,294,967,296个,40亿+)的问题,人们提出了IPv6。与IPv4的32位相比,IPv6有128位,这个数量(2128)足以让地球每平方米面积分配约1025个IP地址[ref]。自2017年IPv6成为互联网标准后,目前(2023)中国的三大运营商(电信、移动、联通)在全国大多数地区已经支持IPv6了。你可以在浏览器里打开网址https://test-ipv6.com/测试一下自己的网络是否支持IPv6:
在IPv4和IPv6之间还有IPv5,但IPv5仍存在32位限制,比下不多,比上不足,故较为鸡肋,从未成为标准的互联网协议,故不为大众所熟知。
联网
我们家里上网时,互联网的数据是如何传输的呢?上网的过程可能涉及到很多通信协议,因此我们需要一个路由器(router)来负责路由(routing)。“路由”指将数据从源地址传输到目的地址的活动。
路由器一般至少会有1个广域网(Wide Area Network,WAN)口和1个局域网(Local Area Network,LAN)口。我们在WAN口设置好上网协议(中国大陆地区的拔号上网一般是PPPoE协议),输入正确的帐号和密码后,运营商通过光猫给我们的WAN口分配一个公网IP,此时我们的路由器则成为一台接入互联网的设备。
基于NAT防火墙,路由器可以作为公网和局域网的网络代理。一般地,路由器使用一个叫动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)的局域网网络协议,它使用UDP协议工作,可以为局域网内其它设备(比如我们的手机或电脑)自动分配局域网IP地址(当然它还有其它功能,比如租约)。DHCP实际上代表了解决IPv4地址短缺的核心思想,即所谓的“公私分离”。
如下图,数据经“运营商——光猫——WAN——路由——LAN——电脑/手机等设备”路径不断上传/下载,我们就可以“上网”了。当然,这只是一个粗略的示意图 ,所描述的过程可能不太真实 (ฅ´ω`ฅ)
值得注意的是,处理路由活动时,数据吞吐量的上限和路由器的CPU性能关系较为密切。如果你家里使用的是千兆宽带(下行1000M),一般需要软路由的CPU或者某些特制芯片才可以完全发挥你的宽带性能;100M的宽带基本上可以随便买。因此,我们在购买路由器时要小心甄别;也不要随便听信电话客服加钱提升自己的宽带,因为你家里的路由器/网线系统也可能也要跟着一起升级!
IPv4公网IP
在中国,一般家用宽带是没有公网IP的。大多数光猫在安装时,如果没有特别要求,电信师傅采用的都是路由模式,即光猫包含了路由器的功能。这种方式的好处就是不需要设置拔号等,这样对网络毫无理解的人都可以马上使用网络;但对于高级用户,一般都是使用软路由等性能和拓展性较强的硬件进行拔号和路由,此时光猫需要改为桥接模式。
不过,不是所有的地区和运营商都可以开启桥接模式的。就算可以开启,阳奉阴违者多。电信成功的概率比较大,其它两家运营商不太解,据说不太行。有经验的小伙伴可以评论区留言!最近还听说有些地区(比如深圳)的公网IPv4地址资源比较紧张,普通用户的宽带要经工信部审批后才可以使用(不知道是不是要加钱)。太难了!
尽管开启了桥接模式,我们获得的公网IP是一个动态IP,一般48h变化一次,或者重启路由器的时候也会触发更新机制。这种情况下,往往需要搭配DDNS-GO等可以进行动态域名解析(DDNS)的软件来使用。
公网IP没啥好说的。你可以直接通过http://ip:端口号
或者利用Nginx或其衍生应用(比如Nginx Proxy Manager,又称NPM)通过https://<域名:><NPM443端口>
远程访问本地服务。
IPv4局域网IP
可能有些地方理解不准确,日后会慢慢修正 (ฅ´ω`ฅ)
IPv4技术是一个比较复杂的体系,很多技术细节我也不甚了解。不过,普通用户只要掌握一些简单的知识即可正常使用——比如,局域网中的地址、子网掩码、网关、广播。下面我用Openwrt(一个软路由系统)的LAN口设置解释一下这些概念。
路由器的IPv4地址是192.168.0.129
,其中192.168.0
是网络地址,129
是主机地址。对于IP地址192.168.0.X
,主机地址X的取值范围是0-255
(为二进制数00000000-11111111
的十进制形式)。转换方法如下:比如,二进制数11111111
=1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20=28-1=十进制数255;二进制数11100000
=1×27+1×26+1×25+0×24+0×23+0×22+0×21+0×20=十进制数224;等等。其实,对于IP地址的其它3个位置——192
/168
/1
——取值范围也是0-255
。
子网掩码的二进制形式由连续的1和0组成。连续的1表示网络地址,连续的0表示主机地址。子网掩码255.255.255.224
是二进制地址11111111.11111111.11111111.11100000
的十进制写法。由于255.255.255.224
的二进制形式有27个1,因此也常记为27。比如在本例中,路由器的地址可记为192.168.0.129/27
,这种记法就比较简洁一些。这种写法在Unix类系统里十分常见。
通过子网掩码的0的个数可以计算出子网容量。在本例中,一共有5个0,因此子网容量为25=32个。那么,对于192.168.1.0-255
这个网段来说,可以分为256/32=8个子网;这些子网的主机号范围分别是:0-31
,32-63
,64-95
,96-127
,128-159
,160-191
,192-223
和224-255
。在没有指定相同网关的情况下,不同子网IP(比如192.168.0.129/27
与192.168.0.18/27
)之间不能直接通信。“掩码”的内涵就是屏蔽掉一部分内容——即令某些IP地址不可用。
网关(Gateway)是转发其他服务器通信数据的服务器,因此一个网段里必须指定一个网关地址,用于不同子网的终端通信。而广播(Boardcast)是子网内所有终端共用的“IP地址”,即数据指向该广播地址时后将被传输给该子网里的所有终端(可能这种形式有助于节省网络流量,提高性能)。一般地,子网的第1个IP地址是网关地址,最后一个IP地址是广播地址,均不可用。比如,对于第5个子网192.168.1.128-159
,192.168.1.128
是网段地址,用于和其它子网的设备进行通信;192.168.1.159
是广播地址,用于传输第5子网所有IP地址的共享数据。最终,只有192.168.1.129-158
这30个地址可被普通的终端使用。另外,我指定了192.168.1.129
作为路由器地址,因此只有192.168.1.130-158
这29个地址可以被手机/平板/电脑等设备使用。正常上网时,路由器地址192.168.1.129
就是手机/平板/电脑等终端的网关(在IOS等设备里则直接被称为“路由器”)。
路由器的DHCP服务器会自动将192.168.1.130-158
这29个地址中的部分地址分配给接入局域网的设备。如果你关闭了DHCP,尽管WIFI帐户和密码是正确的,终端仍需要自定义IP地址、子网掩码和默认网关/路由器。这种方法一般被称之为“静态IP上网”。很久以前,安卓手机有一些WIFI密码破解软件可以盗用别人的WIFI帐户和密码,“静态IP法”则是WIFI防蹭网技巧之一——因为非法访客不太可能知道你正在使用的网段和网关地址 (ฅ´ω`ฅ) 其它防蹭网技巧还包括设置MAC地址白名单等。不过,时过境迁,上网成本也逐渐变低,估计蹭网行为已经没有特别明显了(有这种技术的极客应该也不需要蹭网吧),我就没有怎么关注防蹭网技巧,故也不甚了解。
练习
路由器的IPv4地址为192.168.1.1/24
,请按上面的思路,在评论区写出路由器所在网段的子网掩码10进制形式、子网容量/个数、网关/广播默认地址、可分配给普通终端的IP地址范围/个数。这个题目实际上是绝大多数家庭里路由器的使用情况 (ฅ´ω`ฅ)
有不懂的可以在评论区留言!
小结
IP地址的相关知识是非常重要的。只有彻底了解它们,特别是IP地址的二/十进制转换,才能在各种奇怪的网络配置中正确设置。玩虚拟机的时候会接触到稍复杂的网络结构,比如网桥、交换机这类东西;但学习完本章后它们的大致作用也并不难理解。
当然,企业级别的局域网设置会比家用设置要复杂得多,甚至会为某种特定功能设计硬件,我所知也不多。另外,IPv6我平时很少使用,以后有一些特别需要的时候会更新此教程,目前暂不讨论。
如果有什么疑问,Google百度之,一般都可以找到不少教程。
如果本教程有什么遗漏或错误,欢迎小伙伴们在评论区指出!
扩展阅读
- 关于IPv6的一篇不错的入门教程:IPv6 介绍](https://docs.oracle.com/cd/E19253-01/819-7058/ipv6-overview-7/index.html);IPv6原理、应用与实践 – 知乎;【硬件科普】IP地址是什么东西?IPV6和IPV4有什么区别?公网IP和私有IP又是什么?_哔哩哔哩_bilibili;家庭组网之如何开启IPv6? – YouTube
- 【进阶•DNS泄露篇】竟能提速降延迟!再也不用担心DNS污染了!90%以上的人都存在DNS泄露!会有什么安全问题?如何解决代理中的DNS泄露问题?以及WebRTC绕过代理泄露本机真实IP,看完就知道了 – YouTube:关于DNS泄露的原理科普,可以看看!
- 闲置安卓手机代替光猫,全家共享网络并实现全局科学上网,宽带都不用拉!使用移动蜂窝网络代替光纤宽带的三种方法,搭配免流教程白嫖手机流量,省下每月上百元的宽带费用 – YouTube:似乎挺好用的
- 7X24小时在线直播分享免费节点,高速稳定,只需扫一扫,永久免费FREE VPN,V2RAY,Shadowsocks,Clash,QR code scanning,24/7 Live stream – YouTube:没有节点的小伙伴可以自己试试看
- 【进阶•代理模式篇】看懂就能解决99%的代理问题,详解系统代理、TUN/TAP代理、真VPN代理,clash/v2ray/singbox 虚拟网卡怎么接管系统全局流量?什么是真正的VPN?看完就知道了 – YouTube:挺详细的科普视频。
- 家庭组网之如何开启IPv6?-哔哩哔哩-bilibili:IPv6的简单介绍。
- 每家每户都有的ipv6,你会用吗?下载加速?校园网免流?内网穿透了?【好玩的网络-ipv6专题1】:关于IPv6的简单介绍。
- IPv4分配耗尽?人人都有的公网IP,IPv6新手入门,电脑路由器配置IPv6地址,IPv6通信流程,IPv4的NAT网络地址转换存在的问题,IPv6-PD前缀委托下发无限公网IPv6地址 – YouTube
- 旋律果子的个人空间-哔哩哔哩-bilibili:网络相关的科普。
- IP address – Wikipedia:可以详细地了解IP的发展。
- Dynamic Host Configuration Protocol – Wikipedia:了解动态主机配置协议,即DHCP
- DHCP是什么?DHCP服务器是什么意思? – 知乎 (zhihu.com)
- IP地址、子网掩码、默认网关、网络地址、广播地址都是什么意思? – 知乎 (zhihu.com)
- 子网掩码 – 简书 (jianshu.com)
- 网络编程——计算机网络基本常识之子网掩码小结- CSDN
- Domain Name System – Wikipedia:了解DNS
- IPv4 与 IPv6 的比较 – IBM 文档
- 为什么局域网的IP普遍是192.168开头? – 知乎
- IP地址、子网掩码、网段、网关的关系 – CSDN
- Bitcoin私钥,IPv6地址,地球和宇宙原子的数量对比 – 知乎 (zhihu.com)
- 【网络干货】IPV4基本原理技术详解 – 知乎 (zhihu.com)
- nat(网络地址转换)_百度百科 (baidu.com)
- openwrt IPV6设置 – 上官飞鸿 – 博客园 (cnblogs.com):对IPv6感兴趣的小伙伴可以看看。
- 路由 – 維基百科,自由的百科全書 (wikipedia.org)
---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍
路由器的IPv4地址为192.168.1.1/24,子网掩码10进制形式255.255.255.0、子网容量/个数 255/1、网关/广播默认地址 192.168.1.0/192.168.1.255、可分配给普通终端的IP地址范围/个数 192.168.1.2-192.168.1.254/253 ヾ(≧∇≦*)ゝ
可以 (~ ̄▽ ̄)~
第一次理解子网掩码,解释的很清楚。(๑•̀ᄇ•́)و ✧
还可以,多多交流 (ฅ´ω`ฅ)