背景
计算机间要实现网络通信,就必须要有一个合法的IP地址。
定义
IP地址是因特网上的某个设备的一个编号,IP地址一般由网络号、和主机号来组成。简写为:IP地址=网络地址+主机地址。
如IP地址192.168.100.102,它的构成如下:
网络地址:192.168.100.0
主机地址:0.0.0.102
IP地址=网络地址+主机地址=192.168.100.1
广播地址:192.168.100.255
一般内网的IP地址是以192.168开头的,公网可以是以100.110.开头。而内网的IP地址是私有地址,是不能直接在internet网络中应用的,需要转为公有地址。
使用
用网线直接连接的计算机或通过HUB(集线器)或普通交换机间接连接的计算机之间要想相互通讯,它们必须要在同一个网络,也就是说他们的网络地址必须相同,且主机地址必须不一样。
计算网络地址就是判断网络中的计算机在不在同一个网络,在就能通,不在就不能通。
子网掩码
IP地址是要搭配子网掩码来使用的。
子网掩码是用来判断任意两台计算机的ip地址是否属于同一子网络的根据。最为简单的理解就是两台计算机各自的ip地址与子网掩码进行and运算后,得出的结果是相同的,则说明这两台计算机是处于同一个子网络上的,可以进行直接的通讯。
子网掩码的长度和IP地址一样也是一串32位的二进制数字,只不过为人类的可读性和记忆性的方便,通常使用十进制数字来表示。二进制给机器看,十进制给人看。
子网掩码就是用来遮掩IP地址并划分网段的工具,根据遮掩的位数不同来划分不同的网段。
子网掩码还需要满足一个条件才可以使用:把子网掩码转换为二进制,它的二进制中1和0必须是连续的。
同一个IP地址根据不同子网掩码,会划分出不同的网络号和机器号。
计算网络地址
计算过程:将IP地址和子网掩码都换算成二进制,然后进行与运算,得到的结果就是网络地址。
如:IP地址:202.99.160.50 子网掩码是255.255.255.0
1)将IP地址和子网掩码分别换算成二进制
202.99.160.50换算成二进制为:11001010 01100011 10100000 00110010
255.255.255.0换算成二进制为:11111111 11111111 11111111 00000000
2)将二者进行与运算,得到结果为:11001010 01100011 10100000 00000000
3)将运算结果换算成十进制,就是网络地址:202.99.160.0
也就是说,从200.99.160.0到200.99.160.255都是同一个子网网段(网络号),里面的0-255号可以分配给不同的机器,0-255号都是机器的号码。
扩展
实际使用过程中,我们需要用ping命令来确定两台计算机是否可以通,如果ping不同,如何让ip不在同一个网段的计算机相互访问呢?
方法如下:
1.如果是同处于一个内部网络环境的,就是一个大的局域网。比bai如192.168.0.1/24和192.168.1.1/24,他们并不在一个网段内所以无法直接ping通。这时候可以把2台计算机接入路由器设置静态或者动态路由,计算机网关指向路由,这样icmp包就可以相互到达,双方ping通。
2.有一种情况是有一台机器是属于内网的ip如192.168.10.1,另外一台计算机是公网IP,如202.100.1.17,如果这2台要ping通的话,内网IP的那台机器只要能联网就能ping的通公网IP的计算机,而公网的计算机要访问内网计算机,需要通过VPN或者端口映射来完成访问。
3.如果2台计算机同时处于公网内,只要能联网肯定是可以ping通的。要ping通,必须B能回应消息,故B也会发查找网关的MAC arp请求,明显能通。假设B设置网关为另一个不存在的ip,那么B会一直arp请求,也是ping不通,若B没有设置网关,不会转发arp请求的,也ping不通。
参考:
https://blog.youkuaiyun.com/weixin_42724467/article/details/90293151
https://www.zhihu.com/question/56895036/answer/150953183
https://zhidao.baidu.com/question/552912715.html
http://www.eepw.com.cn/article/284131.htm
https://zhuanlan.zhihu.com/p/71534299
https://hsk.oray.com/news/5946.html