为什么我们家里的IP都是192.168开头的?

news2025/1/10 20:23:12

为什么我们家里的IP都是192.168开头的?

本文为掘金社区首发签约文章,14天内禁止转载,14天后未获授权禁止转载,侵权必究!

是的,还是我小白,什么技术博主,老情感博主了。
来讲个故事。
资深老舔狗小张今天很兴奋,说什么也要请大家喝奶茶。
因为他说他感觉要跟喜欢的女生小吕修成正果了。
一问为什么。
他耳朵都红了,说"我觉得小吕在暗示我了,她说她喜欢看阿凡达,正好我长得就像阿凡达"。

听了让人皱眉。
他继续说:"她说她喜欢射手座,正好我就是"
我挠挠头:"行,别说了,懂了。她住上海,你也住上海,你两算是同居了"
他愣了一会,看了看我:"别说这种舔狗话,但你说的其实有点道理,上次她让我帮她修电脑,我发现她家的ip是192.168.xx.xx,巧了,我家的也是,我怀疑我们住的很近"。

很感动。

我甚至没敢告诉他,我家里的IP也是192.168开头的,我猜你家的也是,就现在正在看这篇文章的你。

但问题就来了,为什么大家的IP都是192.168.xx.xx?

我们今天来聊下这个话题。

IP地址是什么

我们知道,网络通讯的本质就是收发数据包。如果说收发数据包就跟收发快递一样。那IP地址就类似于快递上填的收件地址和发件地址一样,有了它,路由器就可以开始充当快递员的角色,在这个纷繁复杂的网络世界里找到该由谁来接收这个数据包。

由于我们现在主流的还是IPV4地址,所以默认以IPV4为例进行讲解。

这个IP大概长这样。

在控制台里执行ifconfig 就能看到。inet 边上的 192.168.31.170 就是IP地址。

 

powershell

复制代码

$ ifconfig en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=400<CHANNEL_IO> ether 88:36:3d:33:a0:15 inet6 fe70::1009:aabf:ecc6:2d10%en0 prefixlen 64 secured scopeid 0x6 inet 192.168.31.170 netmask 0xffffff00 broadcast 192.168.31.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active

说白了,它就是个特殊点的编号,用于在互联网中唯一定位到某台机子。

为了表示这个编号,IP地址一共分为4个字节,一个字节8位,共32位,能用来表示最多 2 ^32,也就是 42亿个地址。

貌似。。。有点少?

2021年全球就有78亿,今年更是突破了80亿,也就是说人均一个IP都做不到。

为此好多年前,就在说IPV4地址不够用,要耗尽了,于是才会有后来的IPV6地址。

IPv6用了更多的字节数,因此能表示更多的地址。大概长这样。

是不是很陌生,感觉没怎么见过。

这就对了。

大家有没有发现,用了这么多年,大部分人其实还在用IPV4地址,不是说要耗尽了吗?

为什么大家还一直在用IPV4?

先别急,我们再聊个前置知识点,IP地址的分类

IP地址的分类

为了更好的管理这42亿个IP地址的用途。我们应该也在教科书上看过这样一张IP分类的图。

大概的意思是32位地址里,开头为0的,那就是A类地址。开头为10的,就是B类,开头为110的,就是C类。在这之后,把剩下的字节数拆成两段,一段表示网络号,另一短表示主机号

网络号和主机号的关系,就像是某个停车场编号和停车位号的关系。一个城市里有很多停车场,而停车场里又有很多个停车位。每个停车位可以停一辆车,这里的一辆车,其实就是一台电脑(主机)。

大型停车场少,但是能停的车巨多,对应A类地址的网络号少,但是主机号多。

小型停车场到处都是,但是一般能停的车就少,对应C类地址的网络号多,但主机号少。

大佬们一开始这么划分网络,其实也是为了方便管理,比如A类地址,是给大型组织机构用的,主机地址的位数高达1600w+,C类地址是给小公司用的,主机号只有200+

这个差距就有点悬殊了,放在今天就不太合理了,我开个网吧可能都不止200台机子对吧,用C类嫌主机号少,用A类又嫌主机号太多。因此现在这套分类机制其实已经很少用了。

取而代之的是方案是,将所谓的ABC分类直接取消,只保留网络号和主机号,并且网络号的位数也不像以前限制的那么死,用一个斜杠告诉用户多少位是网络号,其余的都是主机号。比如 172.20.61.69/20,那网络号的位数就是20位,主机号的位数是32-20=12位,能放4096台机子,很灵活,很够用。

这就是,所谓的CIDR,(Classless Inter-Domain Routing, 无类别域间路由)。

IP地址不够用了吗?

但不管你怎么去分类,在32位下的限制下,你就算玩得再花,只要将A类+B类+C类+X类加起来,IP的个数也最多还是42亿个。还是不够用。

那既然加法不行,那我们就用乘法

啥意思?

42亿这个数字对大家来说太大了,为了方便理解,我们改成6个IP

假设将6拆成4+2,再让4乘以2,那结果8肯定大于6。

一开始,我们理解的网络世界只有一层,每人一个IP,那就只有6个人能上网。

现在我们将网络分成两层。像下面这样。

每2个人构成一个"小网络",对外共用一个IP,而内部每个人的IP都不一样,4个小网络共同构成一个"大网络"。比如小明的电脑是1号网络下的6号机子,小红的电脑是2号网络下的6号机子。这样也能做到唯一标识某台机子的效果。

像上面这样,每个2人构成的小网络,就叫做局域网,也就是所谓的内网,用的IP(上面的5,6)也叫私有IP内网IP,而上面提到的"大网络",则是广域网,用的IP则被称为公有IP公网IP

通过这种方式,原本只能让6人上网,现在却能让8人同时上网。这还是IP只有6个的情况下,如果让数字变回42亿,那就能支持远大于42亿的机子上网了。

按照这样的思路,回到上面的ABC类IP地址,大佬们也将它们分成了私有和公有两部分

rfc1918文档中定义了私有地址的范围。它们不会出现在广域网中,只会出现在局域网内。

 

powershell

复制代码

* 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.xx.xx就是这网段内的其中一个IP地址。这个范围里大概有6w+个主机号,什么家庭条件能用得完?

于是,就变成了一条街或者一个小区,又或者小区内的几幢楼共用一个公网IP,而内部就用192.168.xx.xx这样的内网IP。所以只要你在家,大概率会发现你的IP地址是C类的192.168.xx.xx

但其实只要你想,A类和B类的私有地址也是可以用在局域网里的。

你到了公司里执行下ifconfig命令,你很可能会发现你的局域网IP就不是192.168开头的了, 而是172或者10开头的。

这是因为在公司内网里,需要的IP数量会更大,172和10开头的IP能表示的主机更多,比如10开头的能表示1600w+个。

就不说别的,光A类地址,只拿了个10开头的网络号出来当内网IP就能表示1600w+个主机号,其余的100+个A类网络号都拿来当公网地址。按上面提到算法去进行个相乘,公网IP数 * 内网IP数 = (100+ * 1600w) * 1600w,你也别管我算的对不对,反正就是能提供给好多设备使用,更别说还有B类和C类的还没算呢。

而且上面只考虑了一层局域网,其实局域网内还能再分成多层,局域网内再嵌套局域网。就像下面这样,这样能用的IP数量就更多了。

所以说,IP地址虽然不多,但其实完全够用,这也是我们一直以来迟迟不切换成IPv6的原因。够用,能跑,为什么要换?

聊到这里,其实就回答了文章标题的问题,为什么大家的IP都是192.168开头的,是因为IPv4地址有限,为了有效利用这些有限的地址,我们可以将网络分为局域网和广域网,将IP分为了私有IP和公网IP,一个局域网里的N多台机器都可以共用一个广域网IP,从而达到了"做乘法"的效果,大大增加了"可用IP数量",小区里几幢楼可以共用一个公网IP,且因为设备数量不多,一般选用C类的私有地址,也就是192.168开头的地址。

但问题就来了,怎么知道我的公网IP地址是什么?

查询自己的公网IP地址

在家里的电脑上,通过ifconfig,你能拿到自己的内网IP地址,比如我的就是192.168.31.170

 

powershell

复制代码

$ ifconfig en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=400<CHANNEL_IO> ether 88:36:3d:33:a0:15 inet6 fe70::1009:aabf:ecc6:2d10%en0 prefixlen 64 secured scopeid 0x6 inet 192.168.31.170 netmask 0xffffff00 broadcast 192.168.31.255 nd6 options=201<PERFORMNUD,DAD> media: autoselect status: active

但如果你想知道你的公网IP地址的话,该怎么做呢?

有个简单的方法。你直接在baidu上搜索"我的IP地址",就能看到你的公网IP地址。

别去ping这个地址,这个图被我p过。

如果你用的是某里云的机子。你也会发现你的机子既有私有IP地址,也有一个公有IP地址。

也是p的图。

当你去ping上面的私有地址172.21.56.59时,你会发现它根本ping不通

 

powershell

复制代码

$ ping 172.21.56.59 PING 172.21.56.59 (172.21.56.59): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 ^C --- 172.21.56.59 ping statistics --- 4 packets transmitted, 0 packets received, 100.0% packet loss

而公网地址46.101.121.11却可以ping通。也就是说,在你家的局域网里,你只能通过公网IP地址去访问这台云服务器。

 

powershell

复制代码

$ ping 46.101.121.11 PING 46.101.121.11 (46.101.121.11): 56 data bytes 64 bytes from 46.101.121.11: icmp_seq=0 ttl=48 time=273.481 ms 64 bytes from 46.101.121.11: icmp_seq=1 ttl=48 time=268.018 ms 64 bytes from 46.101.121.11: icmp_seq=2 ttl=48 time=266.606 ms ^C --- 46.101.121.11 ping statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss

这时候,用过他们家服务器的人可能会有个疑问。

只要申请一台云服务,某里云就能给你一个公网IP地址,怎么做到的?

这。。。这么富的吗?

其实,某里云跟管IP的机构,租用了的一批IP地址,在你需要的时候,就能付费租给你,不用了也能回收分配给其他人。

而且公网IP地址下面,其实也可以挂多台云服务器,用上文提到的方式,让多台云服务器共用一个IP。

因此不太需要担心IP耗尽的问题。

总结

  • IP地址就像快递里填的送件和收件地址,是一串编号,用于在纷繁复杂的网络世界中标识你的位置。
  • IPv4有32位,最多能表示42亿个IP地址。为了更好的管理它们,教科书上出现过ABC这样的分类方式,并且在ABC类里还分为私有地址和公有地址。但目前流行使用CIDR的方式进行分类。
  • 为了表示更多主机,我们可以将网络分为广域网和局域网,广域网用公有地址,局域网使用私有地址。将公有地址乘上私有地址,就能表示远大于42亿台的机子。
  • 家庭网络较小,往往小区内几幢楼构成一个局域网,这几幢楼共用一个公有IP地址。局域网内选择了C类的私有地址,也就是192.168.xx开头的ip,所以你会发现我们家里的IP基本上都是192.168开头的。
  • 在baidu上搜索"我的IP地址",就能看到你的公网IP地址。

差不多了,给大家留个问题吧

上面提到,网络分为广域网和局域网,IP分为公有和私有。一个局域网内所有机子对外使用一个公有IP,对内则使用私有IP。

那么问题来了,公网里不使用私有IP,一个局域网里的私有IP想访问局域网外的公有IP,必然要做个IP转换,这是在哪里做的转换呢?

最后

我在写文章的时候,遇到个小彩蛋。

当我在baidu搜索的网页里,用F12打开浏览器的控制台时。

看到了下面这么一段话。发现是个招聘推广文,想想也是,会开控制台看的基本上都是跟程序员沾边的人,这波是精准引流了。

招聘宣传语确实写的很好。

看完我emo了,当年我毕业的时候,也想着自己有一天能靠着写代码改变世界。

多年以后,我发现,能改变自己,就已经很了不起了。。。


离开广东好长时间了,好久没人叫我靓仔了。

大家可以在评论区里,叫我一靓仔吗?

我这么善良质朴的愿望,能被满足吗?

别说了,一起在知识的海洋里呛水吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/707238.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全合规-数据安全分类分级

数据安全是指保护数据免受未经授权的访问、使用、泄露、破坏或篡改的措施。数据安全包括物理安全、网络安全、应用程序安全、数据备份和恢复等方面。 数据分级分类是指根据数据的重要性和敏感程度&#xff0c;将数据划分为不同的级别&#xff0c;并根据不同级别的数据制定不同…

enote笔记法之附录1——“语法词”(即“关联词”)(ver0.23)

enote笔记法之附录1——“语法词”&#xff08;即“关联词”&#xff09;&#xff08;ver0.23&#xff09; 最上面的是截屏的完整版&#xff0c;分割线下面的是纯文字版本&#xff1a; 作者姓名&#xff08;本人的真实姓名&#xff09;&#xff1a;胡佳吉 居住地&#xff1…

前言-----

因要参加电赛&#xff0c;接触到STC89C52RC&#xff08;A51&#xff09;单片机 STC89C52RC引脚功能 1电源: ①VCC - 芯片电源&#xff0c;接5V&#xff1b; ②VSS - 接地端&#xff1b; 2.时钟: XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 3.控制线: 控制线共…

Java 17官方编程手册都针对哪些方面做了更新?

Java 17&#xff0c;官方编程手册&#xff0c; 《International Developer》杂志称为“全世界醉著名的编程书籍创作者之一”的Herbert Schildt倾情解读 《Java官方编程手册》从1996年首次出版以来&#xff0c;已经经历了数次改版&#xff0c;每次改版都反映 了Java不断演化的进…

分享解析,2+1链动模式为何能在市场上经久不衰

​小编介绍&#xff1a;10年专注商业模式设计及软件开发&#xff0c;擅长企业生态商业模式&#xff0c;商业零售会员增长裂变模式策划、商业闭环模式设计及方案落地&#xff1b;扶持10余个电商平台做到营收过千万&#xff0c;数百个平台达到百万会员&#xff0c;欢迎咨询。 随…

服务网格:Istio 架构

什么是服务网格 服务网格(Service Mesh)这个术语通常用于描述构成这些应用程序的微服务网络以及应用之间的交互。随着规模和复杂性的增长&#xff0c;服务网格越来越难以理解和管理。 它的需求包括服务发现、负载均衡、故障恢复、指标收集和监控以及通常更加复杂的运维需求&am…

数据结构--双端队列

数据结构–双端队列 双端队列&#xff08;Double-ended Queue&#xff0c;简称Deque&#xff09;是一种具有队列和栈特性的数据结构&#xff0c;可以在队列的两端进行插入和删除操作。双端队列允许从前端和后端同时进行插入和删除操作&#xff0c;因此可以称为“两端都可以进出…

「STC8A8K64D4开发板」第2-6讲:串口通信

第2-6讲&#xff1a;串口通信 学习目的掌握USB转串口电路的原理和设计。学习STC8A8K64D4的串口通信&#xff0c;包括串口初始化、波特率计算、串口发送和接收。编写串口收发程序&#xff0c;尤其是串口接收的软件缓存处理。编写串口发送命令控制LED指示灯亮灭的程序。 硬件电路…

【电商API接口系列】店铺所有商品数据的采集

API接口允许不同应用程序之间共享数据&#xff0c;在系统之间传输、读取和更新数据。例如&#xff0c;一个电商网站可以通过API接口获取支付系统的支付状态。API接口允许开发人员使用他人开发的功能来扩展自己的应用程序。通过调用第三方API接口&#xff0c;开发人员无需重新实…

二进制部署Kubernetes

二进制部署Kubernetes v1.20 k8s集群master01&#xff1a;192.168.142.10 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02&#xff1a;192.168.142.20 k8s集群node01&#xff1a;192.168.142.30 kubelet kube-proxy docker k8s集群node…

基于Java汽车售票网站设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

VUE_网页自定义右键菜单组件

可以在uni-app或vue脚手架项目使用 引入组件会接管页面右键事件&#xff0c;所有options为空数组时&#xff0c;在页面右键将没有反应 rightMenu.vue <template><view><view v-if"show" class"contextMenu" :style"lay_style"…

Kafka:Kafka资料整理

一、官网 二、博主文章 1、kafka是什么 • Worktile社区 三、源码解读

一文了解云计算

目录 &#x1f34e;云服务 &#x1f34e;云计算类型 &#x1f352;公有云 &#x1f352;私有云 &#x1f352;混合云 &#x1f34e;云计算服务模式 &#x1f352;IaaS基础设施即服务 &#x1f352;PaaS平台即服务 &#x1f352;SaaS软件即服务 &#x1f352;三者之间区别 &…

4.springboot原理篇

原理篇 spring与springboot区别 spring是承载容器 springboot做的主要工作&#xff1a; ①简化配置&#xff08;省去了spring中配置xml&#xff0c;引入application.yml文件&#xff09; ②为我们提供了 spring-boot-starter-web 依赖&#xff0c;这个依赖包含了Tomcat和sprin…

二进制搭建Kubernetes集群(二)——部署Worker Node 组件

四.部署node节点 4.1 所有node节点部署 docker引擎 #所有 node 节点部署docker引擎#安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm2#设置阿里云镜像源yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker- ce.…

Nuget更新全局包、缓存和临时文件夹路径位置

Nuget更新缓存 1、查看默认的Nuget路径2、更改全局包路径2.1 通过环境变量来进行修改2.2通过Nuget.Config配置文件来进行修改 3、更改http-cache路径4、更改temp文件路径5、更改plugins-cache文件路径 NuGet是一个流行的软件包管理器&#xff0c;可以帮助.NET开发人员轻松地添加…

【Python】 【Pandas 】【read_csv()】Pandas库的read_csv()方法的使用,处理:None,NULL

近期&#xff0c;使用read_csv的时候&#xff0c;遇到一个问题&#xff0c;就是本地读取的csv文件中的数据有None和NaN 两种&#xff0c;如&#xff1a; 直接使用 pd.read_csv(rF:\我爱Python\预测\历史样本.csv,encodingutf-8)发现读取的数据是将None 和 NULL 直接处理成 NaN…

SpingData-JDBC(看这篇文章就够了,新手入门指引)

JdbcTemplate 的基本使用 写在前面&#xff1a; 当DDL操作时&#xff0c;一般是用execute方法&#xff0c;这也是一种规范吧&#xff0c;这个也可以运行DML但是通常来说我DML操作是需要返回值的&#xff0c;一般就是返回影响的行数。然后这篇文章主要介绍增删改查&#xff0c…

软考A计划-系统集成项目管理工程师-项目范围管理(四)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…