问题1:小编 0.0.0.0与127.0.0.1有什么区别?
其实这个问题问的很好,说明对网络有概念了,但是还是有点不够有深度,那我来补充一下:
localhost、127.0.0.1、0.0.0.0和本机地址的区别?
localhost其实是域名,对于IPv4,windows默认将localhost指向127.0.0.1,而如果是IPv6,将指向 [::1]
,但是localhost并不等于127.0.0.1,localhost指向的IP地址是可以配置的,如果大家闲得蛋疼的话,可以随意配置试试,一般在hosts文件中。
不信我们可以来试试 ping localhost
。
问题来了,那什么是127.0.0.1?好像有点绕、、、
首先我们要好好地看看上一篇文章,要先知道一个概念,凡是以127开头的IP地址,都是回环地址(Loop back address),其所在的回环接口一般可以被理解为虚拟网卡,并不是真正网卡接口。主要是用于测试本机的协议栈配置是否正常,这样子就不需要经过真正的网卡。
所谓的回环地址,通俗的讲,就是我们在主机上发送给127开头的IP地址的数据包会被发送的主机自己接收,根本传不出去,外部设备也无法通过回环地址访问到本机。
我们也可以试试,随意ping一个以127开头的地址,那都是回环地址。
ping 127.0.0.1
ping 127.0.0.2
ping 127.0.0.10
ping 127.25.52.10
ping 127.xxx.xxx.xxx
首先,0.0.0.0是不能被ping通的,0.0.0.0就是任何地址IPADDRANY,任何地址的意思,也包括环回地址,它表示本机中所有的IPv4地址。
它有什么用呢?
在服务器中,监听0.0.0.0的端口,就是监听本机中所有IP的端口。不管主机有多少个网口,多少个IP,如果监听本机的0.0.0.0上的端口,就等于监听机器上的所有IP端口。数据报的目的地址只要是机器上的一个IP地址,就能被接收到。
在路由中,0.0.0.0表示的是默认路由,即当路由表中没有找到完全匹配的路由的时候所对应的路由。作用是帮助路由器发送路由表中无法查询的包,路由表中无法查询的包都将送到全零网络的路由中去。
DHCP分配前,表示本机。
从上一篇文章我提到:
IP地址32bit全为0的地址(0.0.0.0)表示的是本网络本主机,这个IP地址在IP数据报中只能用作源IP地址,这发生在当设备启动时但又不知道自己的IP地址情况下。在使用DHCP分配IP地址的网络环境中,这样的地址是很常见的,主机为了获得一个可用的IP地址,就给DHCP服务器发送IP数据报,并用这样的地址(0.0.0.0)作为源地址,目的地址为255.255.255.255(因为主机这时还不知道DHCP服务器的IP地址),然后DHCP服务器就会知道这个主机暂时没有IP地址,那么就会分配一个IP给这个主机。
比如在LwIP中,我们使用HDCP动态获取IP地址,就是这样子实现的。
就简单提一下好了(DHCP依赖UDP协议):
IPADDRBROADCAST 就是255.255.255.255。
IP4ADDRANY 就是 0.0.0.0。
udp_sendto_if_src(dhcp_pcb, p_out, IP_ADDR_BROADCAST, LWIP_IANA_PORT_DHCP_SERVER, netif, IP4_ADDR_ANY);
总之:
综合起来可以说0.0.0.0就是任意地址.....
其实我觉得本机地址并不是一个规范的叫法,应该指的是“本机物理网卡所绑定的网络协议地址”,这是与网卡绑定的地址。
本机地址通常仅指在同一个局域网内,能同时被外部设备访问和本机访问的那些IP地址(可能不止一个)。像127.0.0.1这种一般是不被当作本机IP的。本机IP是与具体的网络接口绑定的,比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要主机正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。
问题2:A类是0-127,其中0和127不是A类的,还有126个其中3个是特殊用的,不是应该还有123个?怎么是125个?
可能是我没说清楚,A类地址是包括0和127开头的IP地址,因此A类地址有128个,但是事实上,能用的A类地址不包括0和127,所以我说0和127不是有效的A 类网络地址号,因为他们是特殊的IP地址,除此之外,还有 10 开头的IP地址也是被保留下来了,原因我也不知道,这是规定的。
类别 | 地址范围 | 网络号个数 |
---|---|---|
A类 | 10.0.0.0~10.255.255.255 | 1 |
B类 | 172.16.0.0~172.31.255.255 | 16 |
C类 | 192.168.0.0~192.169.255.255 | 256 |
上面说的这些IP地址,是专用的网络地址,那什么是专用网络?简单来说,就是你自己的网络,比如我可以在一个区域内自行组网,假设就用常见的C类IP地址,192.168.0.10,我可以在一个区域内搭建很多个以这个地址为核心的网络,比如192.168.0.11、192.168.0.12,反正就是私有的,无需验证,就是局域网。
专用网络不和其他网络共享资源:可以有独立的IP地址空间,这种地址不需要申请获得。由于接入专用网络的子网都是内部子网,因此发送端和接收端的身份无需鉴别。
但是这种网络IP地址是不允许进入外网(公网),只有合法的IP地址才能进入外网,详情见我另一篇文章。
使用 ipconfig
看看我们电脑的IP地址是什么?很明显,它是一个私有地址,可能有人又问了。那为什么我的电脑能上网,详情还是看我另一篇文章吧:TCP/IP协议栈扫盲班
所有,综上所述,A类IP地址中 0、10、127开头的地址的3个网络号在外网上是不能使用的,因此只有125个网络号。
全部0条评论
快来发表一下你的评论吧 !