暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

网络协议篇(九)链路层到网络层

码农的修炼之道 2019-10-26
709

     MAC层是基于二层(数据链路层)和三层(网络层)之间的,本文将通过两个例子说明静态路由和路由的过程,不扯虚的,往下看。


1、什么是MAC层,帧结构如何?

     在MAC层里面,首先是目标MAC地址,然后是源MAC地址。然后是协议类型,用来说明是IP协议。

     IP头里面包括版本号,目前主流的还是IPV4,也有IPV6。这里还有个8位的标识,用来区别下一层的协议是TCP还是UDP等。接下来就是IP层最重要的源IP地址和目的IP地址。

2、路由器工作原理?

      路由器是一台三层转发设备,简单的看就是由多个网口和网卡组成,每个网口连接的就是一个单独的局域网。

     当每个网卡或网口收到网络包的时候,路由器就会看一下需要转发给哪个网关,然后由该网口转发出去。

     可以形象的认为路由器就是多个手,当其中一只手收到网络消息,就会取出MAC和IP层,根据路由算法,然后加上IP和MAC重新从其他手里转发出去。


3、静态路由是什么?

大致有两种,静态路由和动态路由。先来聊聊静态路由,这个也比较好理解。静态路由就是在路由器上配置一条条规则,之前我还刷了一段时间的路由器规则。这些规则其实可以理解为,想访问XXX,从X号口出,下一跳IP地址是XXX.XXX.XXX.XXX。每次需要选择从哪个网口出去,就会一条条匹配规则。匹配上就按照这个规则进行转发出去。


局域网之间传递消息,一般有两种情况,假如在公网(或某一个局域网内部),没有IP冲突的时候,一般就会修改报文的MAC层,然后转发出去,参考下面的案例1还有一种情况,就是每个局域网IP有冲突,那么在传输的时候可能使用NAT协议进行IP转换,参考下面的案例2。


4、案例1,修改MAC地址,不改变IP地址。

     如下面,假如最左边的192.168.1.101需要发包给最右边的192.168.4.101地址。需要经过三次转发。

    第一次,192.168.1.101发给网关192.168.1.1,包的内容如下:

源MAC地址:服务器A的MAC地址

目标MAC地址:192.168.1.1网关的MAC地址

源IP:服务器A的地址192.168.1.101

目的IP:服务器B的地址192.168.4.101


     第二次,192.168.1.1网关转发给下一个网关,此时包的转换后内容为:

源MAC地址:网关A 192.168.56.1的MAC地址

目的MAC地址:网关B 192.168.56.2的MAC地址

源IP:服务器A的地址192.168.1.101

目的IP:服务器B的地址192.168.4.101


       第三次,由网关B转发给目标服务器B,此时包内容为:

源MAC地址:网关A 192.168.4.1的MAC地址

目的MAC地址:网关B 192.168.4.101的MAC地址

源IP:服务器A的地址192.168.1.101

目的IP:服务器B的地址192.168.4.101


      最终服务器B,发现MAC地址是自己,网卡将包收进来。从上面可以看出,每次经过一个路由器都会改变包的MAC地址,但是IP地址没变。这种情况可以对应于在某个局域网内部传输,没有IP地址的冲突,不需要NAT转换,因此只改变MAC地址即可。


5、案例2:MAC地址和IP地址都会变

      如上图所示,左边的服务器A可能在局域网LAN1,最右边的服务器B在局域网LAN2中,因此IP地址完全相同是有可能的。在服务器B上将配置为,发送给192.168.1.101的报文,IP要转换为192.168.56.2 。但是该地址和服务器A不在同一个网段,因此先发给网关A。

报文一:

源MAC地址:服务器A的MAC地址

目的MAC地址:网关A 192.168.1.1网关MAC地址

源IP:服务器A的地址 192.168.1.101

目的IP:网关B的地址192.168.56.2


      网关A收到报文,一看是发给网关B的,然后目的MAC肯定就是网关B的MAC地址了。源MAC地址肯定就是网关A了。

报文2:

源MAC地址:网关A的MAC地址

目的MAC地址:192.168.56.2网关MAC地址

源IP:网关A地址 192.168.56.1

目的IP:网关B地址192.168.56.2


     网关B收到报文,一看IP地址是自己,然后根据NAT规则将IP修改为局域网内的192.168.1.101。

报文3:

源MAC地址:网关B 192.168.1.1 的MAC地址

目的MAC地址:192.168.1.101网关MAC地址

源IP:网关A地址 192.168.56.1

目的IP:网关B地址192.168.1.101


       从上面这个过程可以看出,IP地址会变换。这个过程就是NAT转换。这种是经常使用到的,因为每家的IP地址都是私有的IP地址,在公网进行传输需要进行IP的转化。


      题外话,在面试中,也可能会问到,在应用层发送一个消息出去,可能经过怎样的传输,详细描述过程?你可以直接把这两种情况对应的MAC层和IP地址变换讲出来,他不服你就抽他个猪头 。

文章转载自码农的修炼之道,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论