为什么百度查到的ip和ipconfig查到的不一样;详解公网Ip和私网ip;详解网络分类ABC;

article/2025/9/20 23:45:33

 IP可以分为Public IP 和 Private IP,出现这种规划的原因在于IPv4所能表示的IP太少而电脑太多以至于不够用,然而只有Public IP才能直接连接上网络,所以对于那些公司,学校,政府机构等场所,就可以集中使用私有的IP进行管理,而大家可以共用一个IP去连接上公网,这样,就省下了许多宝贵的Public IP。你有没有发现,你每次使用ipconfig查到的地址,要么就是172.开头的,要么就是192.开头的,为什么?难道没有其他开头的嘛,答:基本没有。因为一个Ip分给我们一个Pc端太不划算了,一般都是很多人共享一个ip,我们用ipconfig查询到的其实只是我们的局域网Ip,172.开头的意味着我们是B类型的局域网,以192.开头的意味着你是c类的局域网。所以我们一直都没有接触到正真的ip,我们一直打交道的都是私有ip又叫private ip.

1.引出问题

        很多朋友常常听到什么真实IP,实体 IP, 虚拟 IP, 假的 IP...,其实没有那么复杂,在看linux私房菜的时候终于明白了这之间的区别。在上学的时候,学校老师也并不会涉及到这方面的内容。

 首先,引出问题,我们分别在百度搜ip查询,查询到本机的public ip (后文会介绍到这个概念)如左图,再利用ipconfig查询到自身ip如右图。我们能看到这两个地址是不同的,那么不是说,每个主机都只有一个ip地址么,为什么我们查到的两个Ip地址不一样呢。

 好的,我们通过上面这两幅图能够看到左边Ip是117.158.134.217 而右边的Ip地址是172.18.251.129 现在我们要解释的问题就是为什么这两个Ip是不同的呢。

ipconfig查出来的是你本机的IP地址,也就是内网私有地址,此类地址仅在局域网使用,不能联通外网。
百度查出来的地址是你上网的共有地址,也许并不是你主机的地址,而是电信或联通分给你的地址,用于连接互联网。

也就是我们要引出私网Ip和公网IP这两个概念,下文会有提示。

 首先我们要介绍ip的分类,因为ip常见有5种分类,而我们在实际生活中和生产中一般只会遇到A,B,C这三类地址,所以我就详细解释下这三类ip地址,我们需要知道这三种是怎么划分的。



2.IP地址分类

为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。Internet委员会定义了5种IP地址类型以适合不同容量的网络,即A类~E类。
这里写图片描述

这里写图片描述

类别默认子网掩码支持主机数
A255.0.0.02^24-2
B255.255.0.02^16-2
C255.255.255.02^8-2

   3.下面我们来介绍public ip和private ip的概念和区别:

  • Public IP : 公共 IP ,经由 INTERNIC 所统一规划的 IP,有这种 IP 才可以连上 Internet ;

  • Private IP : 私有 IP 或保留 IP,不能直接连上 Internet 的 IP ,主要用于局域网络内的主机联机规划。

早在 IPv4 规划的时候就担心 IP 会有不足的情况,而且为了应付某些企业内部的网络设定,于是就有了私有IP (Private IP) 的产生了。私有 IP 也分别在 A, B, C 三个 Class 当中各保留一段作为私有 IP 网段,那就是:

  • Class A:10.0.0.0    - 10.255.255.255
  • Class B:172.16.0.0  - 172.31.255.255
  • Class C:192.168.0.0 - 192.168.255.255

      由于这三段 Class 的 IP 是预留使用的,所以并不能直接作为Internet 上面的连接之用,不然的话,到处就都有相同的IP 啰!那怎么行!网络岂不混乱?所以啰,这三个 IP 网段就只做为内部私有网域的IP 沟通之用。一般说来,我们用Ipcofig是无法查到公网ip的,大多数时候,你使用ipconfig查到的一般就只是以172.开头的b类私有Ip,或者以192.168开头的c类私有Ip.简单的说,s私有ip有底下的几个限制:

  • 私有 IP 的路由信息不能对外散播 (只能存在内部网络);
  • 使用私有 IP 作为来源或目的地址的封包,不能透过 Internet 来转送 (不然网络会混乱);
  • 关于私有 IP 的参考纪录(如 DNS),只能限于内部网络使用 (一样的原理啦)

这个私有 IP 有什么好处呢?由于他的私有路由不能对外直接提供信息,所以,你的内部网络将不会直接被 Internet 上面的 Cracker 所攻击!但是,你也就无法以私有 IP 来『直接上网』啰!因此相当适合一些尚未具有Public IP 的企业内部用来规划其网络之设定!否则当你随便指定一些可能是Public IP 的网段来规划你企业内部的网络设定时,万一哪一天真的连上Internet 了,那么岂不是可能会造成跟 Internet 上面的 Public IP 相同了吗?

  只有公网ip是能够连接互联网的,私网IP 一般只用作局域网

类别IP范围私有地址范围保留地址
A1.0.0.0~126.255.255.25510.0.0.0~10.255.255.255127.0.0.0~127.255.255.255
B128.0.0.0~191.255.255.255172.16.0.0~172.31.255.255169.254.0.0~169.254.255.255
C192.0.0.0~223.255.255.255192.168.0.0~192.168.255.255

总结:

 我们能够上网靠的是isp组织分给我们的Ip地址,但是这个ip地址一般不是给个人的,一般都是给一个单位,一个区域的,也就是说我们实际上能接触到的一般都是私有地址,即我们用ipconig查到的都是私有地址,也就相当于局域网内的ip地址,当我们真正联网时,会先把数据发送到路由,然后再由路由进行处理实现真正的联网操作,路由的地址才是真正联网的Ip地址,也就是pubilc ip,而我们在自己电脑上查到的都是私有ip

 举个例子,我们在学校或者查到的Ip一般都是172.开头的,比如上图我的地址,那就是在学校里检测到的ip地址,通常是b类地址,而我们在家里一般用的都是c类地址。也就是一般是192.168开头的地址。这个大家可以自行去验证一下。如果看完所有的你还有疑问,可以去参考知乎上有关该问题的回答,下面是网址:

知乎解答该问题的帖子

整理上网流程:

 我们重新整理一下我们上网的路线,看下图,移动公司分给我们的ip是117.158.134.217,这是我们这一栋楼能连上网的公网Ip,那么如何让这一个ip使学校里面的所有人都能使用呢,我们开始重新划分局域网。上文中,我们知B类私有地址范围是:172.16.0.0~172.31.255.255,我们学校采取的就是这种划分方法,所以我的私网ip地址就是172.18.251.129.那么怎么连上网的呢,我们通过私网ip然后把我们的需求和要发送的数据发给路由器,然后路由器对接网络,再把数据发送给Internet.然后internet发送数据到我们学校的路由,然后路由在通过我的私网ip发送给我,这就是我们真实上网的流程。


遗留问题:

 大家可能也注意到了一个问题,就是我们在百度查到的ip是117开头的,也就是说其实是a类,但是我们这边私网Ip却是172开头的,是b类的私有ip地址,那么问题来了?117开头的IP地址是如何转换成172开头的私有ip的呢?他们之间一定有一个转换关系,构成了一个公网和私网之间的一个映射。这个关系是什么呢???

自问自答:

 在查阅了多方资料之后,这个问题其实就是私网Ip和公网Ip的转换这个问题,其实利用到了nat转换技术,将172.16.xxx.xxx~172.31.xxx.xxx转换到公网ip,也就是我图中所示的那个郑州的117开头的ip。我们的私网ip是自成体系的,在合理的建设完私网ip后,我们只需利用nat技术将公网ip和私网ip做一个转换即可。大概就跟下图所示一样,二楼使用的是172.16.xx.xx开头的网址,三楼是172.17.xx.xx,四楼是172.18.xx.xx,从图中可以有一个很清晰地认识

后记:

 随着学校换地方,我们的Ip也发生了一些微妙的变化。我们搬到了一个新的环境,还没搭建起服务器。当我使用Ipconfig命令来查询自己的ip地址的时候,我们发现了一个奇怪的事情,我们获取到的ip地址是一个以169开头的ip地址,上文已经提到过我们正常情况下获到的地址应该是一个以172.16~172.31这之间开头的,那么为什么会出现169开头的呢?

 169开头的是一个保留地址,是本地连接受限时系统自动分配的ip没有什么实际的意义,出现这种情况可能是服务器还没搭建好。果然,等我们重新搭建好了代理服务器之后,我们的网址又变回了现在的172.18开头的网址。


http://chatgpt.dhexx.cn/article/pny2hlhg.shtml

相关文章

挑战华为社招:掌握数据库其实很容易

前言 我的一个朋友,开发四年了,没跳过槽,四年时间也不过是从最开始的10K涨到了15K,经常和我吐槽工资低。去年8月份左右开始了他“骑驴找马”的行动,从各种地方找学习资料、刷面试题。值得庆幸的是,他出去找工作时疫情还不严重,异常顺利的面进了蚂蚁,薪资更是翻了几倍。…

javaspringboot面试,挑战华为社招

前言 redis简单来说 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以存写速度非常快,因此 redis 被广泛应用于缓存方向。另外,redis 也经常用来做分布式锁。redis 提供了多种数据类型来支持不同的业务…

挑战华为社招:不止面试题,笔记源码统统都有,最强技术实现

前言 说起来开始进行面试是11月倒数第二周,上午9点,我还在去公司的公交上,突然收到蚂蚁的面试电话,其实算不上真正的面试。面试官只是和我聊了下他们在做的事情(主要是做双十一这里大促的稳定性保障,偏中间…

挑战华为社招:字节跳动上千道精选面试题还不刷起来

前言 成为优秀的架构师是大部分初中级工程师的阶段性目标。优秀的架构师往往具备七种核心能力:编程能力、调试能力、编译部署能力、性能优化能力、业务架构能力、在线运维能力、项目管理能力和规划能力。 这几种能力之间的关系大概如下图。编程能力、调试能力和编…

华为社招面试

工作第三年,在某招聘软件上填写简历后接到华为HR面试邀请,面试部门为运营商路由器,网上查看岗位相关要求之后发现与自己十分不匹配,不过机会难得,所以决定抱着学习的态度去参加面试。 2018年3月3号周六前往华为北研所Q…

华为社招技术二面,总结复盘

点击上方“Java基基”,选择“设为星标” 做积极的人,而不是积极废人! 源码精品专栏 原创 | Java 2020 超神之路,很肝~中文详细注释的开源项目RPC 框架 Dubbo 源码解析网络应用框架 Netty 源码解析消息中间件 RocketMQ 源码解析数…

华为社招三面面经分享,现已拿到offer,定级D4对标17级

一面:(面试均是华为的开发,每轮面试完都有反问你想了解的) 修饰符和可见性抽象类抽象方法synchronized,volatile一些java类型相关的基础知识,比如springbuilder和springbuffer哪个线程安全为什么要使用spr…

华为社招面试(拿到offer)

前段时间华为主动联系我要不要面试,抱着试一下的心态接受了面试邀请,最后顺利拿到了offer,不过最终由于方方面面的原因还是没有去。 本文主要分享下,面试的大致过程。 1. 初步电话技术面试 主要问了下,项目C的后台开…

5年测试经验华为社招:半月3次面试,成功拿到Offer

背景经历 当时我工作近5年,明显感觉到了瓶颈期。具体来说,感觉自己用过很多测试框架和测试工具、做过一些测试开发、也有过高并发的性能测试,但是从技术深度上感觉不足,到后期时做事也没有明显挑战,完全适应了公司节奏…

华为Java社招面试经历详解【已拿到offer】

这篇文章主要介绍了华为Java社招面试经历,详细记录了华为java面试的流程、相关面试题与参考答案,需要的朋友可以参考下。 看看自己能答对多少,如果能回答70%的题目,就大胆去阿里以及各互联网公司试试身手吧。本篇建议大家收藏、备用~ 华为Java社招面试&…

js对象字符串

1. 基本包装类型 基本包装类型就是把简单数据类型包装成为复杂数据类型,这样基本数据类型就有了属性和方法。 var str andy; console.log(str.length); //代码之所以能执行,是因为js会把基本数据类型包装为复杂数据类型,过程如下&#xff…

JS对象简介

JS对象含义:拥有属性和方法的数据 对象种类:Array,Boolean,Date,Math,Number,String,RegExp,全局属性和函数; 方法:toString 把布尔值转为字符串,并返回结果,对所有对象都具备 创建对象: var…

js对象继承

继承是面向对象编程中讨论最多的话题。很多面向对象语言都支持两种继承:接口继承和实现继承。前者只继承方法签名,后者继承实际的方法。接口继承在 ECMAScript 中是不可能的,因为函数没有签名。实现继承是 ECMAScript 唯一支持的继承方式&…

JS对象与jQuery对象

JS对象大致可以分为三种,如下图: JS常用内置对象(JS自身所持有的对象,不需要创建,直接可用): String:API跟java的字符串API大致相同 两种创建对象的方式:String s1 &q…

前端之JS对象

前端之JS对象 1.对象基础对象的定义子命名空间访问内容用点表示法 和 括号表示法 设置对象成员更新数据创建新成员 "this"的含义document 对象 2.面向对象的程序(OOP)类继承多态构建函数和对象构建函数的规范写法 真正的构造函数创建对象的其他…

js对象基本知识

一:对象的声明与调用 方法1:利用对象字面量创建对象 var obj{}; 创建了一个空对象 属性和值之间用: 结尾用, :后面跟了一个匿名函数 var obj{name:"李旭亮",sex:"男",age:22,sayHi:function(){console.log(hello!);}}使用对象 调用…

JS 对象

一、对象 1、对象概念 对象(object):JavaScript里的一种数据类型可以理解为是一种无序的数据集合用来描述某个事物,例如描述一个人  人有姓名、年龄、性别等信息、还有吃饭睡觉打代码等功能  如果用多个变量保存则比较散&am…

JS对象中常见的操作方法

本文内容: 介绍对象的两种类型创建对象并添加属性访问对象属性删除对象属性作为函数参数枚举对象的属性数据类型检测Object常用的API 一、JavaScript对象有两种类型 Native:在ECMAScript标准中定义和描述,包括JavaScript内置对象(…

JS对象详解

JS对象详解 js的对象是什么?js的对象类型有哪些?具体实例是什么? 一、ECMA-262对JS对象的定义: 属性的无序集合,每个属性存放一个原始值、对象或函数; 对象是无特定顺序的值的数组; 对象是一…