本地IP 127.0.0.1之间的差异,并为0.0.0.0

java网络

ip地址记法:

IP地址由四字节组成。为了便于阅读和写作,每个字节是0-255的数字表示,而字节';'。。

10.10.152.235

有时我们看到这样的IP:

10.10.152.235 / 24,

/ 24的背后是子网掩码,24表示有24个1的子网掩码255.255.255.0,相当于。

IP地址和子网掩码是逐位的,并且获得网络号(网络id)。

剩下的部分是子网中的主机号(当然是主机ID,名称很小),因为现在IP不仅仅是主机。

特殊IP地址段:

127.x.x.x

这是最常见的本地回环地址,这相当于在Windows和Linux主机。

我们习惯了用127.0.0.1,事实上,

如果在命令行中你是在平127.0.0.1-127.255.255.254任何地址,结果都是一样的,他们是等价的。

正常网络包从IP层进入链路层,然后将其发送到网络。

发送到回送地址的分组直接在ip层中短路,即发送到ip层的分组直接由ip层接收,不再发送。

专用网络地址部分:

10。10.x.x.x,192.168,XX,172.16,XX 172.31,XX,XX 169.254。

这些私有网络地址段不允许出现在Internet上,主要用于企业内部联网。

这样可以在一定程度上缓解IP地址不足的问题。

大型企业的OA网络使用10多个地址段,因为它是一个A类,包含大量IP。

小公司多使用192.168.0.x地址段。

169.254部分主要分配给DHCP服务。

保留地址段:

128,XX,191.255,XX,192.0.0。X,X 233.255.255。

这些地址是保留的,没有分配,也没有明确的用途。

其他特殊知识产权:

是一个全球性的广播地址255.255.255.255,

所有1个地址的主机号是子网广播地址,如:192.168.1.255

地址中的主机号全0的网络地址的子网,如:192.168.1.0

一个非常特殊的IP地址:0.0.0.0

这个IP是java的等效,表示当前设备的IP。

我们使用ServerSocket在java编程听网络,通常用下面的代码:

ServerSocket serversock = new ServerSocket(8888);

serversock.accept();

如果我的主机IP地址是:10.10.152.8,

使用上面的代码为听、127.0.0.1:8888或10.10.152.8:8888可以连接。

但你有没有想过,IP使用ServerSocket听

如果我们将上述代码转换为显式绑定:

ServerSocket SS = new ServerSocket();

字符串IP = 10.10.152.8prime;;

int端口= 8888;

inetsocketaddress addr =新inetsocketaddress(IP、端口);

Ss.bind(地址);

ss.accept();

你会发现127.0.0.1:8888无法访问,

如果IP改为127.0.0.1,然后10.10.152.8:8888无法访问。

事实上,背后是0.0.0.0,秘密的IP,可以代表所有机器的IP地址,

但是这个IP并不真的存在。我们不让平通过,如果IP改为0.0.0.0:

ServerSocket SS = new ServerSocket();

字符串IP = 0.0.0.0prime;;

int端口= 8888;






inetsocketaddress addr =新inetsocketaddress(IP、端口);

Ss.bind(地址);

ss.accept();

我们会发现,这是默认的行为一样,和127.0.0.1:8888或10.10.152.8:8888可以连接。