IP 地址,是一个大家都耳熟能详的名词。以生活举例,IP 在互联网中的作用就像是寄件时的收件人地址和寄件人地址,收件人地址让信件可以被正确送达,寄件人地址则让收到信的人可以回信。

IP 地址作为每一个互联网设备都拥有的,独一无二的地址,其本质是 TCP/IP 协议族中网络层的协议,也是 TCP/IP 协议族的核心协议。自 1981 年 Jon Postel 在 RFC791 中定义了第一次定义了 IP,到现在 IP 已经是现今互联网技术的基础。目前的全球互联网所采用的协议族是 TCP/IP 协议族。而 IPv4 是互联网协议(Internet Protocol,IP)的第四版。

IP 地址的表示方式

IPv4 地址(下文统称 IP 地址)是一个 32 位的二进制数表示的地址。因此,除了全 0 地址用来表示一个无效的,未知的,或者不可用的目标外,IPv4 一共拥有 2^32-1 个地址。它通常都是如下的样子:

01111111000000000000000000000001

显而易见,直接展示完整 32 位的 IP 地址既不直观也不好记忆。所以为了方便使用,我们把这 32 位二进制数分成八位一组,称之为八位组(octet)。每个八位组书写时用点分十进制的格式标识。每个八位组取值为00000000~11111111(二进制数),使用十进制数表示则值为 0~255。这就让 IP 地址变成了下面的样子:

01111111 00000000 00000000 00000001

而因为二进制与十进制的转化非常简单,只需要用二进制数的每一位乘以 2 的 N 次方即可,这其中的 N 是相应的位,从低位到高位以 0 次方开始,将二进制是 1 的每位结果相加得到的就是相应的十进制数。

把 32 位的二进制数的 IP 地址使用点分十进制来标识,除了全 0,这个范围是从 000.000.000.001 到 255.255.255.255。然后再进一步的优化,例如对于 000.000.000.001,每个八位组中,高位的 0 可以不用写出,即为 0.0.0.1。这一步步的最终让 IP 地址变成了现在我们最熟悉的样子,比如10.0.0.1、192.168.33.44 这类。顺带一提我们上面举例用的 IP 地址转换为点分十进制后,就是大名鼎鼎的本机回送地址,这个地址是筑基内部的 IP 地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。

127.0.0.1

IP 地址的结构

看到这里大家自然就会想到,除了本机地址,IP 还有其他地址吗?没想到吧,真的有。IP 地址可以划分为两个部分 :网络地址和主机地址。

  • 网络地址:表示主机所在的网络区域

  • 主机地址:主机在网络区域中的具体逻辑位置

如果我们把 IP 地址和电话号码做类比:电话号码 0571-81020204 中,0571 是区号,代表浙江杭州,类似于 IP 地址中的网络地址部分。81020204 是杭州市内某一个电话机的确切号码,这就类似于 IP 地址中的主机地址部分。

当 IP 数据包在网络中传递时,路由器只关心目的 IP 地址的网络地址部分,通过识别 IP 地址的网络部分,来为 IP 数据包进行路由操作。当数据包达到了目的的网段以后,才通过 IP 地址的主机部分查找具体的接收主机。

那么,对于 IP 地址来说,哪几位是网络部分,哪几位是主机部分呢?这就需要根据网络规模和实际需求来划分了。

IP 地址的分类

IP 在被设计时,将 IP 地址分成五个等级(Class A、B、C、D、E)。一般常用的是 A、B、C 这三种等级的 IP 地址,分别适用在大、中、小型网络。在申请 IP 地址时,会由负责管理 IP 地址的机构,依照申请者所需要的网络规模,赋予不同等级的 IP 地址。

A、B、C类的网络部分和主机部分的长短各不相同,网络地址越短,对应的可分配的主机地址就会越多。

在A、B、C 类地址中,有一部分被用做了私有地址。私有地址又称为私网地址或假地址,是指不在互联网上使用的,仅在企业或组织内部局域网上使用的 IP 地址。与之对应的,可以在互联网上使用的 IP 地址称为公网地址或真地址。私有地址的存在让局域网中的主机不需要全部分配互联网的可用地址,从而节约有限的 IP 地址资源。

IP 地址的未来

我们前面提到 IPv4 一共拥有 2^32-1 个地址。这个数量乍一眼看上去是很多的,但是考虑到现在每一个手机,每一台电脑,甚至每一个冰箱都会接入网络,都需要一个 IP 地址,那这个数量一下子就不够用了。

2011 年 2 月 3 日,全球 IP 地址分配机构 IANA(Internet Assigned Numbers Authority)就宣布其地址池中的 IPv4 地址分配完毕了。2011 年 4 月 15 日,亚太互联网络信息中心(APNIC)在 2012 年 9 月 14 日为欧洲网络信息中心(RIPE NCC)分配了最后一个 IPv4 区块,在 2014 年 6 月 10 日为拉丁美洲和加勒比海(LACNIC)分配了最后一个 IPv4 区块。2015 年 9 月 24 日为北美分配 IPv4 区块,2019 年 11 月 26 日,欧洲 RIPE NCC 终于耗尽了存储。

没有了 IP 地址新的设备就无法接入互联网,为了解决这个问题我们开始拥抱 IPv6。IPv6 的地址数量是 IPv4 的 2 的 96 次方倍,不用再担心地址枯竭的问题。早在 1998 年我们就开始了对 IPv6 的相关实验研究,但有一个很严肃的问题摆在我们眼前。那就是 IPv6 和 IPv4 之间的互通需要专门的技术和设备。为了解决这个问题,加快推进部署和应用 IPv6。工信部指导基础电信企业完成了骨干网络、LTE 网络、城域网络 IPv6 升级改造,实现了全国 14 个骨干网直联点 IPv6 互联互通。

数据显示,截至 2021 年 12 月,我国 IPv6 活跃用户数已达 6.08 亿,约占中国网民的 60.11%。从流量来看,城域网 IPv6 总流量突破 44.77 Tbps,占全网总流量的 9.38%,LTE 核心网 IPv6 总流量超过 24.43 Tbps,占全网总流量的 35.15%。

又拍云也推出了快速、安全的 IPv6 加速解决方案,助力企业快速实现 IPv6 的接入,扩大企业的业务服务范围,提升用户的访问体验。又拍云 CDN 平台同时支持 IPv4 和 IPv6 用户的访问,企业无需新增域名,已有加速域名也无需特殊配置,可平滑升级支持 IPv6 用户访问。一个崭新的未来就在眼前。

推荐阅读

用户 IP,里面藏了多少秘密?

关于 IPv6 国家有大动作啦!快来瞅瞅行动计划都说了什么

一文聊透 IP 地址的那些事的更多相关文章

  1. Netty 如何高效接收网络数据?一文聊透 ByteBuffer 动态自适应扩缩容机制

    本系列Netty源码解析文章基于 4.1.56.Final版本,公众号:bin的技术小屋 前文回顾 在前边的系列文章中,我们从内核如何收发网络数据开始以一个C10K的问题作为主线详细从内核角度阐述了网 ...

  2. 一文聊透 Netty IO 事件的编排利器 pipeline | 详解所有 IO 事件的触发时机以及传播路径

    欢迎关注公众号:bin的技术小屋,本文图片加载不出来的话可查看公众号原文 本系列Netty源码解析文章基于 4.1.56.Final版本 1. 前文回顾 在前边的系列文章中,笔者为大家详细剖析了 Re ...

  3. 重磅硬核 | 一文聊透对象在 JVM 中的内存布局,以及内存对齐和压缩指针的原理及应用

    欢迎关注公众号:bin的技术小屋 大家好,我是bin,又到了每周我们见面的时刻了,我的公众号在1月10号那天发布了第一篇文章<从内核角度看IO模型的演变>,在这篇文章中我们通过图解的方式以 ...

  4. 一文聊透 Netty 核心引擎 Reactor 的运转架构

    本系列Netty源码解析文章基于 4.1.56.Final版本 本文笔者来为大家介绍下Netty的核心引擎Reactor的运转架构,希望通过本文的介绍能够让大家对Reactor是如何驱动着整个Nett ...

  5. 一文聊透Apache Hudi的索引设计与应用

    Hudi索引在数据读和写的过程中都有应用.读的过程主要是查询引擎利用MetaDataTable使用索引进行Data Skipping以提高查找速度;写的过程主要应用在upsert写上,即利用索引查找该 ...

  6. 一文看懂:网址,URL,域名,IP地址,DNS,域名解析

    一个执着于技术的公众号 前言 今天给大家梳理一篇关于网址.URL.IP地址.域名.DNS.域名解析的白话长文,并以简单的提问-解答 形式让读者更加深刻理解,希望有助于读者的学习,面试和工作! 1.一个 ...

  7. 虚拟机的静态内部 IP 地址

     这是什么? 借助最新的 PowerShell 版本,您现在能够定义和配置特定的内部 IP 地址,该地址可以静态分配给部署在虚拟网络中的 IaaS 虚拟机.使用此功能,您可以直接为虚拟机配置内部 ...

  8. 【Win 10 应用开发】获取本机的IP地址

    按照老规矩,也是朋友的建议,老周今天在吹牛之前,先讲一个小故事. 有朋友问我,老周,你现在还发短信吗,你每个月用多少电话费?唉,实话说,现在真的发短信不多了,套餐送的130条短信,每月都发不了一条.至 ...

  9. 关于是用dotnet获取本机IP地址+计算机名的方法

    印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使 ...

  10. Windows Azure Web Site (17) Azure Web Site 固定公网IP地址

    <Windows Azure Platform 系列文章目录> 在之前的文档中,笔者介绍了Azure Web Site是一个多租户的环境,每个部署单元有一个可以通过Internet访问的入 ...

随机推荐

  1. 《最新出炉》系列初窥篇-Python+Playwright自动化测试-30-处理日历时间控件-下篇

    1.简介 理想很丰满现实很骨感,在应用playwright实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这样的操 ...

  2. vivado生成Bitstream报错[Vivado 12-1345] Error(s) found during DRC. Bitgen not run(Vivado 2017.4)。

    写了一个很简单的程序,2-4译码器. module decoder2to4( input in1, in0, output reg [3:0]out ); always @ (*) begin if ...

  3. Python输入一行字符,分别统计出其中大小写英文字母、空格、数字和其它字符的个数。

    import string def SlowSnail(s): up = 0 low = 0 space = 0 digit = 0 others = 0 for c in s: if c.isupp ...

  4. MCU看门狗使用注意事项

    前言 最近因为项目产品硬件设计有问题,导致设计的一款产品把硬件电源开关以及硬件系统复位功能去掉了.更严重的是,这产品已经开始生产了,硬件已经无法修改,所以软件必须上看门狗,否则设备死机或是异常后就只能 ...

  5. springboot集成mybatis-plus

    集成mybatis-plus 1.添加pom.xml <!--mp逆向工程 --> <dependency> <groupId>org.projectlombok& ...

  6. list.add()语句作用

    ----该方法用于向集合列表中添加对象 示例  本示例使用List接口的实现类ArrayList初始化一个列表对象,然后调用add方法向该列表中添加数据. public static void mai ...

  7. ZooKeeper论文阅读笔记

    ZooKeeper论文传送门 介绍 ZooKeeper 是一个开源的分布式协调服务,它提供了高可用性和一致性的数据管理和协调功能.它被设计用于构建可靠的分布式系统,并提供了一组简单而强大的 wait- ...

  8. 2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号, 纸条上共有n个整数ai,其中a1表示密码里第一个字母的编号, 若i>1的

    2023-12-13:用go语言,密码是一串长度为n的小写字母,一则关于密码的线索纸条, 首先将字母a到z编号为0到25编号, 纸条上共有n个整数ai,其中a1表示密码里第一个字母的编号, 若i> ...

  9. 听懂未来:AI语音识别技术的进步与实战

    本文全面探索了语音识别技术,从其历史起源.关键技术发展到广泛的实际应用案例,揭示了这一领域的快速进步和深远影响.文章深入分析了语音识别在日常生活及各行业中的变革作用,展望了其未来发展趋势. 关注Tec ...

  10. vue3在父子组件使用v-model双向绑定

    父组件: <script setup> import InputBox from "@/compon/InputBox.vue"; import {ref} from ...