-
我们所处的网络,是由无数个子网络 ( 局域网 ) 构成的,广播的时候,也只有同一个子网里的计算机能够收到,所以要区分 Mac地址 是否属于同一个子网,假如是同一个子网,我们就用广播的形式把数据传送给对方,如果不是同一个子网的,我们就会把数据发给网关,让网关进行转发
-
怎么判断两台计算机是否在同一个子网中呢,这就是网络层干的事情,为了解决这个问题,就有了 IP协议 的概念
-
IP协议
-
IP协议所定义的地址,就是我们常说的 IP地址 ,IP协议 有两个版本,ipv4 / ipv6,地址范围在 0.0.0.0 ~ 255.255.255.255 。
- IP地址 分为两部分,前面一部分代表网络,后面一部分代表主机,但是网络部分和主机部分所占用的二级制位数是不固定的
- 假如两台计算机的网络部分是一模一样的,我们就说这两台计算机是属于同一个子网 ( 局域网 ) 中,例如 192.168.17.1 和 192.168.17.2 , 假如这两个 IP地址 的网络部分为 24 位,主机部分为 8 位,那么他们的网络部分都为 192.168.17 , 所以我们说这两台计算机处于同一个子网中
- 为了确定网络部分占几位,主机部分又占几位,这就又引出了我们另一个关键词 子网掩码
-
子网掩码
- 子网掩码 和 IP地址 一样也是32位二进制数,但是它的网络部分规定全部为1,主机部分规定全部为0,也就是说假如上面那两个 IP地址 的网络部分为24位,主机部分为8位的话,那它们的子网掩码为11111111.11111111.11111111.00000000 ,也就是 255.255.255.0
- 把 IP地址 与它的子网掩码做一个 ( and ) 运算,然后把各自的结果进行比较就行了,如果比较的结果相同,则代表的是同一子网,否则不是同一子网
- 假设它们处在同一子网当中,计算机A要和计算机B发送数据时,我们通过是 ARP协议 来得到计算机的 MAC地址
-
ARP协议
- ARP协议 也是通过广播的形式,给同一个子网中每个电脑发送一个数据包,这个数据包会包含接收者的 IP地址,对方收到这个数据之后,会取出 IP地址 与自身的对比,相同则会把自己的 MAC地址 回复给对方,否则就丢弃这个数据包,这样计算机A就知道计算机B的 MAC地址 了
- 在询问 MAC地址 的数据包里,在对方的 MAC地址 这儿填的是一个特殊的 MAC地址 ,其他计算机看到这个特殊的 MAC地址 后,就知道广播是在询问而不是传输数据包