小智的疑问
小智: 大鹏哥,上节中你讲的QQ发消息的那个例子,我有个问题没太想明白,就是以太网报文头里面的目的MAC是从哪里来的啊?
源MAC好理解,源MAC是我自己电脑网卡的MAC,肯定有办法获取到,可是目的MAC从哪里获取呢?
还有目的MAC到底是谁的MAC,是目的主机的MAC吗?
大鹏: 你问得很好,从这个问题开始,我们就慢慢开始深入到通信的细节了。
首先我得说下,目的MAC其实有两种情况,如果是在“国内”通信,目的MAC是目的主机的MAC,如果要跟“国外”通信,目的MAC是源主机的网关的MAC。
小智:这,我感觉我越听越懵逼了,“国内”,“国外”,还有网关,这些我都没听说过啊,怎么会这么复杂呢?
大鹏:不要急,且听我慢慢道来。小智,你还记得第一讲时,我跟你说的MAC地址和IP地址的区别么?
小智:额,我记得当时你好像说,MAC地址就像身份证,靠MAC是出不了“国”的,如果要“出国”,得需要护照,也就是需要IP地址。
大鹏:不错啊,算你还记得。不过这里说的“国家”,可不是我们地理上说的国家,什么中国啊,美国啊这些。
我们这里其实是拿我们网络世界中的网段的概念,做了一个类比。
那什么是网段,网段又是怎么划分的呢?
谈到网段,我们就真的不得不认真学习一下IP地址的相关知识了。
IP地址基础知识
1、 IP地址格式
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。
2、 IP地址分类
最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络号和主机号。同一个物理网络上的所有主机都使用同一个网络号,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机号与其对应。IP地址根据网络号的不同,分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
①、A类地址
-
A类地址第1字节为网络地址(最高位固定是0),另外3个字节为主机地址。
-
A类地址范围:1.0.0.0 - 126.255.255.255,其中0和127作为特殊地址。
-
A类网络默认子网掩码为255.0.0.0,也可写作/8。
-
A类网络最大主机数量是256×256×256-2=166777214(减去1个主机位为0的网络地址和1个广播地址)。 在计算机网络中,主机ID全部为0的地址为网络地址,而主机ID全部为1的地址为广播地址,这2个地址是不能分配给主机用的。
②、B类地址
-
B类地址第1字节(最高位固定是10)和第2字节为网络地址,另外2个字节为主机地址。
-
B类地址范围:128.0.0.0 - 191.255.255.255。
-
B类网络默认子网掩码为255.255.0.0,也可写作/16。
-
B类网络最大主机数量256×256-2=65534。
③、C类地址
-
C类地址第1字节(最高位固定是110)、第2字节和第3个字节,另外1个字节为主机地址。
-
C类地址范围:192.0.0.0 - 223.255.255.255。
-
C类网络默认子网掩码为255.255.255.0,也可写作/24。
-
C类网络最大主机数量256-2=254。
④、D类地址
-
D类地址不分网络地址和主机地址,它的第1个字节的最高位固定是1110。
-
D类地址用于组播(也称为多播)的地址,无子网掩码。
-
D类地址范围:224.0.0.0 - 239.255.255.255。
⑤、E类地址
-
E类地址也不分网络地址和主机地址,它的第1个字节的最高位固定是11110。
-
E类地址范围:240.0.0.0 - 255.255.255.255。
-
其中240.0.0.0-255.255.255.254作为保留地址,主要用于Internet试验和开发,255.255.255.255作为广播地址。
3、 IP子网划分
IP子网划分是基于每类IP地址的网络进一步分成更小的网络。
子网划分是通过借用IP地址的若干位主机地址来充当子网地址(从左面第一位不是网络号的位开始借,而且借位必须是连续的不能跳跃),从而将原网络划分为若干子网而实现的。
划分子网时,随着子网地址借用主机位数的增多,子网的数目随之增加,而每个子网中的可用主机数逐渐减少。
我们以C类地址划分子网为例,C类地址的默认子网掩码是/24,主机号是8位,现在在主机部分再借用3位,子网掩码就是/27。
通过IP地址和子网掩码计算网络号的方法,我这里举了个栗子:
好了,IP地址相关的基础知识,我们就说完了。
最后总结一下,网段其实就是一段IP,通过IP地址和子网掩码,可以确定一个网段。在给主机配置一个IP时,必须给这个IP指定对应的子网掩码,确定IP所在的网段。
目的MAC到底是谁
把网段理解清楚了,那我们就知道目的MAC到底是谁的MAC了。
如果源主机访问的目的IP跟主机的源IP在一个网段内,那么目的MAC就是目的主机的MAC;如果目的IP跟主机的源IP不在同一个网段内,目的MAC就是目的主机网关的MAC。
网关是什么
那么问题来了,源主机的网关又是谁呢?
网关在物理上,我们可以先理解它是一种网络设备,网络通信不能只有电脑,中间还有很多像网关这样的网络设备,网关的作用是负责转发跨网段的协议报文。
那网关对于源主机,是怎么体现的呢?
源主机看到的网关,其实就是配在它上面的一个IP,这个IP跟源主机的IP必须在同一网段内。
下面是我电脑上面的IP地址、子网掩码以及网关IP:
ARP协议
小智: 大鹏哥,我还是没弄明白呢,就是我把网关IP配在源主机上了,源主机还是不知道网关的MAC啊,这怎么办呢?
大鹏: 对,这就是我们接下来要讲的另外一个问题,源主机怎么通过网关的IP获取网关的MAC呢?
答案就是通过ARP协议。
对于ARP协议,我们可以简单的理解就是,源主机在它所在的网段内,拿个大喇叭大喊一声(发一个查询报文),谁是网关IP啊,大喇叭声音很大(因为查询报文是一个广播报文),包括网关在内的同网段的主机都能收到,但是因为问的是网关的IP,所以只有网关会回复,网关IP是我(发一个应答报文),我的MAC是多少多少。
下面是我电脑的网关MAC:
通过ARP这样一文一答,源主机就知道了网关的MAC。
同样,如果目的主机跟源主机在同一网段内,那源主机就不需要知道网关MAC了,所以源主机只需要通过ARP协议查询下目的主机的MAC就行了。
小智,这下你的疑问都给你解答了吧?
小智: 嗯嗯,大鹏哥,这下我就整明白了。
总结
大鹏: 整明白就好,不过咱们学习还必须得学会总结,还是老规矩,我整了下面这张脑图,回头如果你忘了,看看这张图,立马就能想起来啦。
小智:哈哈,真好,大鹏哥真的是我的大鹏哥,想的可真周到。
喜欢这篇文章的小伙伴,别忘了点赞,关注我哦