了解IP地址
本文最后更新于 445 天前,如有失效请评论区留言。

本博客由Faconhost大力赞助!如何更快地访问本站?有需要可加电报群获得更多帮助。本博客用什么VPS?创作不易,请支持苯苯!推荐购买本博客的VIP喔,10元/年即可畅享所有VIP专属内容!

前言

此文内容目前处于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:

msedge_Twy3FVu72f

在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的宽带基本上可以随便买。因此,我们在购买路由器时要小心甄别;也不要随便听信电话客服加钱提升自己的宽带,因为你家里的路由器/网线系统也可能也要跟着一起升级!

image-20230201104903706

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口设置解释一下这些概念。

Typora_qsKUDHcX2r

路由器的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-3132-6364-9596-127128-159160-191192-223224-255。在没有指定相同网关的情况下,不同子网IP(比如192.168.0.129/27192.168.0.18/27)之间不能直接通信。“掩码”的内涵就是屏蔽掉一部分内容——即令某些IP地址不可用。

网关(Gateway)是转发其他服务器通信数据的服务器,因此一个网段里必须指定一个网关地址,用于不同子网的终端通信。而广播(Boardcast)是子网内所有终端共用的“IP地址”,即数据指向该广播地址时后将被传输给该子网里的所有终端(可能这种形式有助于节省网络流量,提高性能)。一般地,子网的第1个IP地址是网关地址,最后一个IP地址是广播地址,均不可用。比如,对于第5个子网192.168.1.128-159192.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百度之,一般都可以找到不少教程。

如果本教程有什么遗漏或错误,欢迎小伙伴们在评论区指出!

扩展阅读

---------------
完结,撒花!如果您点一下广告,可以养活苯苯😍😍😍

感谢Faconhost的友情赞助 (ฅ´ω`ฅ) 本博客基于m2w创作。版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。VIP内容严禁转载!由于可能会成为AI模型(如chatGPT)的训练样本,本博客禁止将AI自动生成内容作为文章上传(特别声明时除外)。如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租请留言 | 博客VPS | 致谢渺软公益CDN |

评论

  1. 龙一
    Windows Chrome 120.0.0.0
    10 月前
    2024-1-23 14:39:16

    路由器的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 ヾ(≧∇≦*)ゝ

    • 博主
      龙一
      Windows Edge 120.0.0.0
      10 月前
      2024-1-23 18:00:56

      可以 (~ ̄▽ ̄)~

  2. Windows Edge 115.0.1901.203
    1 年前
    2023-8-22 23:49:23

    第一次理解子网掩码,解释的很清楚。(๑•̀ᄇ•́)و ✧

    • 博主
      AhFei
      Windows Edge 115.0.1901.203
      1 年前
      2023-8-23 13:05:55

      还可以,多多交流 (ฅ´ω`ฅ)

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇