在这之前,我们先了解以下几个概念:
-
掩码:互联网是由许多小型网络构成的,每个网络上都有许多主机,这样便构成了一个有层次的结构。IP地址在设计时就考虑到地址分配的层次特点,将每个IP地址都分割成网络号和主机号两部分,以便于IP地址的寻址操作。IP地址的网络号和主机号各是多少位呢?如果不指定,就不知道哪些位是网络号、哪些是主机号,这就需要通过 掩码来实现。掩码不能单独存在,它必须结合IP地址一起使用。掩码用于区分网络部分和主机部分,它与IP地址的表示方法相同(32位)。每个IP地址和子网掩码一起可以用来唯一的标识一个网段中的某台网络设备。掩码中的1表示网络位,0表示主机位。用CIDR表示法表示为:XXX.XXX.XXX.XXX/n,n就是掩码,表示前n位为1,后面的32-n位为0,如A类地址:xxx.xxx.xxx.xxx/8表示A类地址的前8位是网络号。
-
每类IP地址有一个缺省子网掩码。A类地址的缺省子网掩码为8位,即第一个字节表示网络位,其他三个字节表示主机位。B类地址的缺省子网掩码为16位,因此B类地址支持更多的网络,但是主机数也相应减少。C类地址的缺省子网掩码为24位,支持的网络最多,同时也限制了单个网络中主机的数量。
-
网关: 实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1 ~ 192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢?网关的IP地址是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
-
默认网关: 一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处理数据包。现在主机使用的网关,一般指的是默认网关。
重点:已知主机IP地址,如何求网络地址(该块的起始地址)和广播地址(最后地址)
将IP地址与子网掩码的二进制数地址按位做“与”运算,得到的就是网络地址;把子网掩码按位取反,再和网络地址的二进制数地址按位做“或”运算,就可以得到广播地址。
例题:
在一个地址块中,我们已知一主机的IP地址是25.34.12.56/16 ,试问该块的起始地址(网络地址)和最后地址(有限广播地址)是什么?——《数据通信与计算机网络》
第一种解法:由IP地址是25.34.12.56/16可知子网掩码为:255.255.0.0(将255.255.255.255写成二进制,由25.34.12.56/16可知,前16位为1,后面的全为0,子网掩码就是这么算的),再把IP地址25.34.12.56和子网掩码255.255.0.0的二进制数按位与运算,得到网络地址:25.34.0.0;其实这里可以直接这么做:把25.34.12.56写成二进制,前16位不动,后面的置0就得出网络地址了。
由255.255.0.0二进制按位取反得:0.0.255.255,再和网络地址25.34.0.0的二进制按位或,得到广播地址:25.34.255.255。
第二种解法:由25.34.12.56/16,写成二进制后:把后面的32-n(即16)位置0,得到25.34.00.00就是这个地址块的第一个地址也就是网络地址,把后面的16位置1得到25.34.255.255就是最后一个地址即广播地址。
相比起第一种解法,第二种更加简洁方便。
如果有错误的地方,欢迎大家在评论区指正~~
参考博文:https://www.cnblogs.com/hongdada/p/9876508.html