IP地址是什么

news2024/11/16 23:38:04

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

收发数据就像收发快递

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

这个IP大概长这样。

IPv4地址

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

$ 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用了更多的字节数,因此能表示更多的地址。大概长这样。

IPv6地址

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

这就对了。

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

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

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

IP地址的分类

为了更好的管理这42亿个IP地址的用途。我们应该也在教科书上看过这样一张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台机子,很灵活,很够用。

1668126898773

这就是,所谓的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个人能上网。

相加只能让6人上网

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

相乘能让8人上网

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

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

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

公有和私有IP的概念

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

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

* 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

几幢楼共用一个公网IP

但其实只要你想,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

$ 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地址。

某里云可以同时分配公有和私有IP

也是p的图。

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

$ 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地址去访问这台云服务器。

$ 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转换,这是在哪里做的转换呢?

私有IP和公有IP在哪进行转换

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

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

相关文章

linux上git三板斧的使用

前言 现在在我们的生活当中&#xff0c;用我们程序员的一句玩笑话&#xff0c;来说就是“全球最大的同性交友网站就是githup”。 那么它具有什们功能呢&#xff0c;能让人这么吹捧&#xff0c;用通俗易懂的话来说就是&#xff0c;储存和管理代码&#xff0c;它会记录我们修改甚…

java知识总结(一)

ArrayList和LinkedList的区别1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。2. 对于随机访问ArrayList要优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问,而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,查找某个…

【开发工具 - 安装手册】BeyondCompare4 下载与安装+免费使用

1. 官网 Download Beyond Compare Free Trial 2. 下载 阿里云盘 &#xff08;不限速 - 推荐&#xff09;官网下载3. 安装&#xff08;无脑下一步&#xff09; 4.三种方法长期免费使用 方法一 修改初始化文件 C:\Users\Administrator\AppData\Roaming\BCompare\BCompare.ini…

【奇妙的数据结构世界】用图像和代码对队列的使用进行透彻学习 | C++

第十一章 队列 目录 第十一章 队列 ●前言 ●一、队列是什么&#xff1f; 1.简要介绍 2.具体情况 ●二、队列操作的关键代码段 1.类型定义 2.顺序队列的常用操作 3.链式队列的常用操作 ●总结 前言 简单来说&#xff0c;数据结构是一种辅助程序设计并且进行优化的方法论&…

介绍一款2023年新出的mysql管理工具: FlyBird Database Manager

FlyBird Database Manager 介绍 FlyBird Database Manager 是一款mysql 界面化管理工具&#xff0c; 使用go语言编写&#xff0c;天然支持Windows, MacOS, Linux等主流平台。 提供无需安装的命令行版本&#xff0c; 命令行中启动服务&#xff0c;以html支持UI界面,在浏览器中…

[Linux]进程控制

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【LINUX】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文…

1607_PC汇编语言_汇编语言简介

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 刚刚看了一个小章节&#xff0c;感觉是对8086的汇编做了一个简单的介绍。当然&#xff0c;这里面也有各种机器汇编通用的属性。 1. 等价符号关联的两个表达其实是等…

在线教育-谷粒学院学习笔记(十)

文章目录1 介绍2 登录业务流程3 JWT令牌4 阿里云短信服务5 登录功能6 注册功能7 根据token获取用户信息8 整合首页登录和注册1 介绍 登录实现流程 注册接口 整合JWT整合阿里云短信服务 登录接口 注册、登录的前端实现 2 登录业务流程 单一服务器模式 使用session对象实现 …

仿牛客论坛项目(下)

代码仓库:https://gitee.com/qiuyusy/community 仿牛客论坛项目15.kafka1.阻塞队列2.Kafka入门简介术语解释下载配置命令3.Spring整合Kafka引入依赖配置代码16.系统通知(Kafka)发送系统通知功能(点赞关注评论)1.编写Kafka消息队列事件Event实体类2.编写Kafka生产者3.编写Kafka消…

Spring 源码编绎

本示例基于 spring-framework-5.2.22.RELEASE GradleWapper jdk1.8.0_131编译# 环境准备mavenjdk8idea# 源码下载进入https://github.com/spring-projects/spring-frameworkSpring的源码是发布在github上面的下载最新版发布版源码不要太纠结版本区别&#xff0c;无需刻意保证…

BM5 合并k个已排序的链表

目录 描述 示例1 示例2 思路&#xff1a; 代码&#xff1a; 描述 合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。 示例1 输入&#xff1a;[{1,2,3},{4,5,6,7}] 返回值&#xff1a;{1,2,3,4,5,6,7} 示例2 输入&#xff1a;[{1,2},{1,4,5},{6}] 返回值…

Linux常用命令——rmmod命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) rmmod 从运行的内核中移除指定的内核模块 补充说明 rmmod命令用于从当前运行的内核中移除指定的内核模块。执行rmmod指令&#xff0c;可删除不需要的模块。Linux操作系统的核心具有模块化的特性&#xff0c;应…

Elasticsearch(六)--ES文档的操作(中)---修改文档

一、前言 上篇文章我们了解了ES的插入和批量插入文档的操作&#xff0c;分别通过ES的kibana客户端以及Java高级Rest客户端进行学习&#xff0c;那么本篇则进入到对文档的修改操作&#xff0c;同新增文档&#xff0c;也有更新单条文档和批量更新文档操作&#xff0c;但还多出一…

Day873.普通索引唯一索引的选择 -MySQL实战

普通索引&唯一索引的选择 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于普通索引&唯一索引的选择的内容。 假设你在维护一个市民系统&#xff0c;每个人都有一个唯一的身份证号&#xff0c;而且业务代码已经保证了不会写入两个重复的身份证号。 如果市民…

Java基础项目实战--大学生求职招聘信息网站系统

Java基础项目实战–大学生求职招聘信息网站系统 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

基于php的婚纱商城管理系统

摘要网络技术给生活带来了十分的便利。所以把婚纱商城管理系统与现在网络相结合。在婚纱商城发展的整个过程中&#xff0c;婚纱信息管理担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类管理系统程序也在不断改进。本课题所设计的婚纱商城管理系统&#xff0…

自动驾驶介绍、应用、前景

自动驾驶介绍、应用、前景1 介绍1.1 定义1.2 作用1.3 发展历程1.4 分类23年初竞争格局1.5 顾虑1.6 前景2 产业链现状2.1 芯片2.2 仿真3 技术路线3.1 是否交互3.1.1 单车智能3.1.2 车路协同3.2 主传感器区分3.2.1 纯视觉3.2.2 混合传感器3.3 前装还是后装3.3.1 前装3.3.2 后装4 …

基于java SSM医药住院管理系统设计和实现

基于java SSM医药住院管理系统设计和实现 博主介绍&#xff1a;5年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式 …

宇隆光电冲刺上交所上市:毛利率持续下滑,收入极其依赖京东方

近日&#xff0c;重庆宇隆光电科技股份有限公司&#xff08;下称“宇隆光电”&#xff09;预披露招股书&#xff0c;准备在上海证券交易所主板上市。 本次冲刺上市&#xff0c;宇隆光电计划募资15亿元&#xff0c;其中7亿元用于OLED控制板及液晶模组控制板和精密模切生产基地项…

Spring Cloud_服务监控hystrixDashboard

目录一、概述二、仪表盘90011.新建Module2.POM3.YML4.主函数5.Provider微服务提供类都需要监控依赖配置6.启动仪表盘三、断路器演示1.修改cloud-provider-hystrix-payment80012.监控测试代码链接 https://github.com/lidonglin-bit/cloud 一、概述 除了隔离依赖服务的调用以外…