一些特殊的ip地址
在此处笔者讨论的是IPv4的地址。
IPv4的IP地址,是采用4个字节的整数来表示,4个字节能够表示发范围是0-4294967295(无符号数)。
为了书写方便,我们一般采用点分十进制的形式表示IPv4地址。从0.0.0.0到255.255.255.255分四个字节,每个字节的范围都是0-255。
然而,不是所有的IP地址都能直接用的,其中有不少特殊用途的IP地址。比较为人熟知的特殊IP地址有三个范围:
- 10.0.0.0--10.255.255.255 (A类私网地址)
- 172.16.0.0--172.31.255.255 (B类私网地址)
- 192.168.0.0--192.168.255.255 (C类私网地址)
如果你想了解更加具体的各个IP地址的用途,还是得去管理IP地址的IANA官网查看。
127.0.0.1地址
127.0.0.1代表着本地回环地址,但其实回环地址不只是一个,从127.0.0.0-127.255.255.255都是回环地址,发往这些地址的数据包都会被loop back。
如果你在本地设备上打开一个虚拟机,你一般会看见虚拟机有一个网络IP为127.0.0.1。
0.0.0.0地址
根据RFC文档,0.0.0.0/8可以表示本网络中的所有主机,0.0.0.0/32可以用作本机的源地址,0.0.0.0/8也可表示本网络上的某个特定主机。综合起来可以说,0.0.0.0表示整个网络。
严格来说,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。
在路由其中可以用0.0.0.0/0表示默认路由,作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。
255.255.255.255地址
255.255.255.255代表广播地址。如果报文的目的地址是255.255.255.255,代表这是一个广播报文,会发给局域网内的所有主机。其他主机收到广播报文之后,会进行判断这个广播报文是否是发给自己的,如果是发给自己的,则进行处理,否则就将该广播报文丢弃。
动态获取IP
在我们电脑的ip配置里,有静态配置ip地址和动态获取ip地址两种选择。其中,动态获取ip地址就用到了两个特殊的IP地址,0.0.0.0地址和255.255.255.255。
对于动态获取ip地址,如果你的电脑关机重启了之后,则它的IP地址的空的,那这个时候如果想要网上冲浪,那你就需要向DHCP获取一个IP地址。
那么,没有IP地址,我们该怎么编辑该请求IP地址的报文呢,它的源地址是什么呢?同时,就如刚出生的婴儿,你并不认识DHCP,你没有DHCP的IP地址,那目的地址又是什么呢。
既然,我们不知道要发送给谁,那么,就暴力一点,我们进行广播,发送给该局域网内的所有主机,此时目的地址就是广播地址255.255.255.255了。其他主机收到广播报文后,会进行判断,如果是发给自己的,则进行处理,否则就把这个广播报文丢弃。
此时,DHCP服务器终于收到了我的广播了。但是,DHCP怎么知道我们是来请求IP地址的呢,所有我们就需要做一个标记,告诉DHCP服务器我们是来请求IP地址的,于是,在报文里的源地址填了0.0.0.0。
当DHCP服务器看见源地址是0.0.0.0时,它就知道了,我们急需一个IP地址,就会将一个没有使用过的IP地址发送给我,并将这个IP地址标记为已使用。
此时,可能有些人会发现,嗯?我都没有IP地址,那DHCP服务器怎么发送给我报文呢。这儿就涉及到了全球唯一的Mac地址了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现