summary
type
status
date
slug
tags
category
password
icon
IPv4/IPv6搞不清,看见奇怪的地址不明白。本文帮你理清楚IP地址的历史与现状以及访问流程。
📝 IP地址/我的服务器门牌号
什么是IP地址?
想象IP地址就像是你家的邮寄地址。每当你想要收到邮件或包裹时,邮递员需要知道你家的确切地址才能送达。同样,在互联网上,当一台电脑(或其他设备)需要发送数据给另一台电脑时,它需要知道对方的IP地址。
如何查看我的IP地址?
命令行版本:
图形界面:(Mac)
(Windows的同学可以自己找一下,我用的操作系统目前是mac)
打开自己的Wi-Fi设置,点击详细信息。就能看见IP地址。比如下图这个是10.0.0.103
点击TCP/IP可以看到更详细的配置信息,也可能会看到自己的IPv6地址。(有些地方不支持IPv6,所以看不见也正常)
IPv4/IPv6简介
IPv4(Internet Protocol version 4)和IPv6(Internet Protocol version 6)是互联网使用的两个版本的互联网协议(IP)
刚刚我们分别看到了IPv4和IPv6的地址,分别是
IPv4:10.0.0.103
IPv6:fe80::ced8:43ff:fe70:8644
- IPv4: 使用32位数字,通常分为四个8位的二进制数(字节),每个字节以点分十进制形式表示。例如:192.168.1.1。
- IPv6: 使用128位数字,分为八组四位十六进制数,每组之间用冒号分隔。例如:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
这些IP地址就像我们的门牌号,有了这些地址,才能让我们和服务器互相通讯。如果你没有IP地址,服务器在返回的时候就不知道你的位置,自然就丢包了。
A: DNS请求,告诉我server的IP地址。(DNS请求是将域名转换为IP的一个过程,我们日常上网使用域名,方便记忆。但是计算机更善于理解IP地址。所以需要先得到IP地址)点击这里看DNS请求详解
A to server(比如110.242.68.66):我是192.168.1.102(不严谨,出口的时候会有NAT转换。),给我返回百度首页的数据包。
server(110.242.68.66) to A(192.168.1.102):百度首页
上面是一个超级简化的过程,展示了IP地址在与服务器通讯中的作用。
介绍剩下的部分之前,先熟悉一下历史吧(可以去看看WIKI)
1. IP的诞生(1970年代)
- 背景: 在20世纪70年代初期,为了实现网络互连,美国国防高级研究计划署(DARPA)开始开发一个名为ARPANET的网络项目。
- TCP/IP的开发: Vinton Cerf和Robert Kahn是TCP/IP协议的主要设计者,他们在1974年发表了一篇开创性的论文,首次详细描述了TCP协议,后来演变成TCP/IP。
2. TCP/IP的推广(1980年代)
- TCP/IP的成熟: 在1980年代,TCP/IP协议继续发展并逐渐成熟,被越来越多的网络采用。
- 标准化: 1983年,ARPANET正式采用TCP/IP协议,这一年被认为是互联网的诞生年。此时,IP地址和域名系统(DNS)成为网络通信的标准。
3. IPv4地址的普及(1990年代)
- 互联网的爆炸性增长: 1990年代见证了互联网的迅速扩张。随着更多的设备和网络加入,IPv4地址开始变得紧张。
4. IPv6的引入(2000年代)
- IPv6的设计: 面对IPv4地址空间的极限,IPv6被设计出来,使用128位地址,提供几乎无限的地址空间。
- 缓慢的过渡: 尽管IPv6在1998年被标准化,但由于种种原因(包括成本、复杂性和IPv4的嵌入性),其全球部署进展缓慢。
5. 当今的状况(2020年代)
- 共存和过渡: 截至2020年代,IPv4和IPv6在互联网上共存,许多网络同时支持这两种协议。
- 持续的挑战和发展: 尽管IPv6解决了地址空间问题,但全球范围内的过渡仍然面临挑战。同时,互联网技术继续发展,新的协议和网络技术不断出现。
IPv4为什么不够用了
只要是连接入互联网的设备就需要一个IP进行上网,但是IP的数量又是有限的。所以IPv4出现了不够用的情况,NAT技术/IPv6版本协议紧接出现。
来让我们计算一下IPv4和IPv6的数量
IPv4地址总数
2^{32} = 4,294,967,296
- IPv4地址使用32位二进制数。
- 每个位可以是0或1,因此每个位有2种可能的状态。
- 总的组合数是 232,因为有32个这样的位。
对于IPv4地址,这些数值的范围是:(涉及到二进制转十进制)
- 开始于:00000000.00000000.00000000.00000000(二进制),等同于0.0.0.0(点分十进制)。
- 结束于:11111111.11111111.11111111.11111111(二进制),等同于255.255.255.255(点分十进制)。
IPv6地址总数
2^{128} = ????(特别大……比沙子都多)
- IPv6地址使用128位二进制数。
- 同样地,每个位有2种可能的状态。
- 总的组合数是 2128。
对于IPv6地址,这些数值的范围是:(涉及到二进制转十六进制)
- 开始于:0000:0000:0000:0000:0000:0000:0000:0000(二进制表示,以十六进制段展示),通常简写为::(表示一个全零的地址)。
- 结束于:1111111111111111111111111111111111111111111111111111111111111111(二进制),或者ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff(十六进制表示)。
由上计算可得,IPv4的数量不是非常的充裕。所以紧接着NAT和IPv6的技术出现完善填上了这个数量不足的情况。
NAT(网络地址转换)
由于IPv4地址可能会越来越少,于是我们发明了一个方案。让多个设备共享一个IP。
IPv4地址示例
大家先稍微熟悉几个IPv4(没啥特殊含有,就是随便写了几个)
- 192.168.1.1
- 172.16.0.2
- 10.0.0.1
- 203.0.113.45
- 8.8.8.8
NAT比喻
想象一个大型办公楼里有很多办公室,但是办公楼只有一个对外的电话号码。当有人从外面打电话到这个号码时,接线员(NAT设备)需要知道这个电话应该转接给办公楼里的哪个办公室。同样的,当办公室里的人打电话出去时,外面的人看到的是整个办公楼的电话号码,而不是单独办公室的号码。
这就像是网络地址转换(NAT)在做的事情
NAT讲解
- 家庭设备:假设你有三个设备:(你现在查到的自己的IP一般就是私有IP地址)
- 笔记本电脑:私有IP地址为 192.168.1.2
- 智能手机:私有IP地址为 192.168.1.3
- 平板电脑:私有IP地址为 192.168.1.4
- 路由器:家庭路由器连接到互联网服务提供商(ISP),拥有一个公共IP地址,比如 203.0.113.5。
- 互联网服务:设备想要访问的外部网站,比如
www.example.com
。
NAT过程
- 出站通信:
- 当你的笔记本电脑尝试访问
www.example.com
时,它会发送一个数据包,源地址是它的私有IP(192.168.1.2)。 - 当这个数据包到达家庭路由器时,NAT功能会介入。路由器更改数据包的源地址,从私有IP(192.168.1.2)更改为路由器的公共IP(203.0.113.5)。
- 路由器还会在NAT表中为这个连接添加一个条目,记录这个数据包是从哪个内部设备发出的。
- 数据包到达目标:
- 改写过的数据包通过互联网发送到
www.example.com
。 - 从
www.example.com
看来,这个数据包就像是直接从公共IP(203.0.113.5)发出的。
- 返回通信:
www.example.com
对请求做出响应,发送数据回到公共IP(203.0.113.5)。- 当这些返回的数据包到达路由器时,路由器检查NAT表,确定这些数据包应该转发给哪个内部设备(在这个例子中是笔记本电脑,私有IP为192.168.1.2)。
- 路由器将数据包的目标地址从公共IP更改为笔记本电脑的私有IP,并将数据包发送到笔记本电脑。
实例:
大家学会了如何查看自己的IPv4之后,再点击下面的这个网站,可以找到自己的公网IPv4(也就是经过转换之后,与服务器通讯的IP)。
补充:俗称内网IP一般是你自己查到的自己本机的IP地址,但是由于之前说过的种种原因,给你分配的IP地址并不是你真正与服务器通讯的IP地址。是一个经过转换的IP地址。
公网IP一般指的就是你与服务器通讯的IP地址了,就是你在这个网页里看到的。通过上面的例子来讲解,也能很好的去理解为什么查到的是公网IP。而不是网页能查到你的内网IP。
极少数!极特殊情况!你的本机IP就是公网IPv4……
上图可得,我的内网IP是10.0.0.103。我的公网IP是146.56.96.109。
IPv6
与IPv4差不多,也是个地址表示。不过也有所不同。
IPv6地址示例
- 2001:0db8:85a3:0000:0000:8a2e:0370:7334
- fe80::1
- 2607:f8b0:4005:804::200e
- 2001:4860:4860::8888
- fd00::1
是不是不太一样,你或许会惊叹,咋有这么短的IPv6。
IPv6地址由于其长度,通常包含缩写,如省略前导零或使用"::"来表示一连串的零。
fe80::1
完整写法是 fe80:0000:0000:0000:0000:0000:0000:0001
。在这个地址中,
fe80
是唯一的非零段,后面跟着七组全为零的段。IPv6允许你使用::
来替代连续的零,但这种缩写在一个地址中只能使用一次。fd00::1
完整写法是 fd00:0000:0000:0000:0000:0000:0000:0001
。同样地,
fd00
是这个地址中的非零段,后面跟着的是连续的零段,可以被::
替代。IPv6在互联网上的运行逻辑
- 出站通信:
- 假设你的笔记本电脑尝试访问
www.example.com
,它会发送一个数据包。与IPv4不同,这里笔记本电脑使用的是全球唯一的IPv6地址,例如2001:db8:0:1234:0:567:8:1
。 - 数据包从笔记本电脑发送出去时,不需要经过NAT处理,因为IPv6地址是全球唯一的,可以直接在互联网上路由。
- 数据包到达目标:
- 数据包通过互联网直接发送到
www.example.com
的IPv6地址,例如2001:db8:0:5678:0:9ab:c:3
。 - 对
www.example.com
来说,数据包直接来自笔记本电脑的唯一IPv6地址。
- 返回通信:
www.example.com
对请求做出响应,发送数据包回到笔记本电脑的IPv6地址2001:db8:0:1234:0:567:8:1
。- 数据包直接通过互联网路由到笔记本电脑,不需要任何地址转换,因为IPv6地址是在整个互联网中唯一识别的。
IPv4/IPv6一些小知识
(就记住IPv4的私有IP地址段就够了,其它的基本上不常用。要用的时候上网找一下。以及fe80开头的是私有IPv6,也不难记。记住这俩有助于你一眼判断这个地址是不是内网IP,用处还是挺多的)
IPv4
1.私有IP地址
- 局域网使用:私有IP地址用于局域网(LAN)内部,不被互联网上的路由器转发。这些地址允许在多个网络中重复使用,常见于家庭和办公网络。
- (翻译成人话)你现在电脑上的IP地址就是下面几个范围之内的。这几个范围之内的都是内网IP。而路由器上的公网IP,是这些IP之外的(除开特殊IP)。做出了这些规范才可以更好的去让互联网运作。(防止地址冲突)
- 范围:
- 10.0.0.0 - 10.255.255.255
- 172.16.0.0 - 172.31.255.255
- 192.168.0.0 - 192.168.255.255
2.特殊IP地址和它们的用途(除了回环地址,剩下两个其实不需要太细去理解,了解一下就行了。有些知识后面会讲)
- 回环地址(127.0.0.0 - 127.255.255.255):用于网络软件测试。127.0.0.1(localhost)是最常用的,它用于指向本机。 本机有一些服务就经常用到这个地址,比如赛博猫咪。
- 广播地址:用于在网络上发送广播消息。IPv4中有两种类型的广播:本地广播(255.255.255.255)和网络广播(网络地址的最后一个地址,如192.168.1.255)。
- APIPA地址(169.254.0.0 - 169.254.255.255):当DHCP服务器不可用时,设备会自动分配一个APIPA地址。这些地址只用于小范围的网络通信,不能用于互联网。
IPv6
1.回环地址
- 地址:
::1
或0:0:0:0:0:0:0:1
- 用途:类似于IPv4的127.0.0.1,这个地址用于网络软件测试。它用于指向设备自身。
2.链路本地地址
- 地址范围:
FE80::/10
(起始于FE80,接着是54个0)
- 用途:用于同一物理网络链路上的设备间通信。这些地址不会被路由到局域网之外。
3. 唯一本地地址(ULA)
- 地址范围:
FC00::/7
(包括FC00::/8和FD00::/8)
- 用途:类似于IPv4中的私有地址,用于组织内部网络。它们不应被路由到公共互联网。
4.保留地址
- 地址范围:包括一些特定范围,如
2001:DB8::/32
(用于文档和示例)
- 用途:特定目的保留,如文档、测试等。
5.NAT
- IPv6也能使用NAT,让设备获得公网IP使得其暴露在公网并不一定是好事。
6.向后兼容性问题
- IPv6与IPv4不直接兼容,这需要过渡技术,如隧道、双栈系统等,以确保平稳过渡。
tips:链路本地地址和唯一本地地址的区别
链路本地地址(Link-Local Address)
- 地址范围:以
FE80::/10
开头。这意味着所有这些地址都以FE80
开始,接着是54位的零。
- 用途:
- 仅用于同一物理网络链路上的设备间通信。举例来说,如果你的设备(比如电脑、打印机)都连接到同一个路由器,它们可以使用链路本地地址彼此通信。
- 这些地址不会被路由到局域网之外,也就是说,它们不用于更广泛的网络,如整个家庭或公司网络,更不用说互联网了。
- 特点:链路本地地址通常在设备启动网络接口时自动配置,不需要额外的配置或DHCP服务器。
唯一本地地址(ULA)
- 地址范围:以
FC00::/7
开头,这包括了以FC00::/8
和FD00::/8
开始的地址。
- 用途:
- 用于组织内部网络,相当于IPv4中的私有地址。这意味着ULA可以用于更大范围的内部网络通信,如整个家庭、公司或校园网络。
- 与链路本地地址不同,ULA可以在组织内的多个网络间路由,但仍然不应该被路由到公共互联网。
- 特点:ULA通常是手动配置或通过网络管理协议分配的,提供了更稳定的内部网络地址。
补充:DNS请求(点击此处返回IPv4/IPv6简介)
DNS请求用于将域名转换为IP地址
这个过程对用户来说是透明的,一般在几毫秒内完成。DNS使得人们能够通过易于记忆的域名来访问网站,而不是需要记住复杂的数字IP地址。
想象一下,你想要给一家名叫“Best Pizza”的披萨店打电话,但你不知道它的电话号码,你只知道它的名字。在这个比喻中,“Best Pizza”就像是一个网站的域名(例如
www.bestpizza.com
),而电话号码就像是该网站的IP地址。这就是DNS请求的工作方式:
- 查询开始:你(即你的计算机或其他设备)想访问
www.bestpizza.com
,但不知道其IP地址。所以,你的设备向DNS服务器发送一个请求,就像你翻开电话簿寻找“Best Pizza”的电话号码。
- DNS服务器查找:DNS服务器检查它的记录,看看它是否知道
www.bestpizza.com
的IP地址。这就像电话簿中查找披萨店的过程。如果DNS服务器不知道这个地址,它可能会询问其他DNS服务器。
- 找到答案:一旦DNS服务器找到
www.bestpizza.com
对应的IP地址,它就会把这个信息返回给你的设备。这就好比你在电话簿中找到了“Best Pizza”的电话号码。
- 连接建立:现在你的设备知道了
www.bestpizza.com
的IP地址,就可以直接通过这个IP地址与服务器连接,就像你拨打电话号码与披萨店联系一样。
🤗 总结归纳
IP地址是互联网上设备的唯一标识符,类似于邮寄地址。它分为IPv4和IPv6两种格式,前者使用32位地址系统,后者使用128位,以应对地址耗尽问题。用户可以通过命令行工具或设备设置查看自己的IP地址“ifconfig”和ipconfig“。随着互联网的发展,NAT技术被用来让多个设备共享同一个IP地址,而DNS系统则将用户可读的域名转换为IP地址。
欢迎您在底部评论区留言,一起交流~
- Author:ByteSage
- URL:https://www.techleaf.xyz/ed7a606130394ff8b34bde6d4491600b
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!