点击发送,信息如何送到对方机器上???
共 1842字,需浏览 4分钟
·
2021-04-18 10:25
前言
上一篇聊到了IP层相关的知识点,包括IP首部、IP路由选择、子网寻址等信息。
今天来记录一下网关和路由相关的知识点。
比如:
网关配置之后,在跨网段访问的时候,数据包里的MAC和IP地址需不需要变?
如果需要变,那怎么进行变化?
那么下面就带着这些问题来看一下
网关和路由
一旦配置了IP地址和网关
往往就能指定目标地址进行访问了
但是在跨网关访问的时候
会牵扯到MAC地址和IP地址的变化。
在任何一台机器上,当要访问另一个IP地址时候,会先判断目标IP地址和当前IP地址是否在同一个网段。
如何判断是否处于同一网段?
需要CIDR(无类型域间选路)和子网掩码
如果根据这两个信息获取到两个IP的网络号是一样的,那么就是处于同一网段。
比如:192.168.1.1和192.168.1.2,子网掩码都是255.255.255.0
将IP和子网掩码分别转成二进制然后做与运算获取网络号
那么它的网络号都是192.168.1,也就是同一网段的。
「同一网段」
不需要用到网关,直接将源地址和目标地址放入IP头中,然后通过ARP获得MAC地址,将源MAC和目的MAC放入MAC头中,发送出去即可。
「不是同一网段」
需要发往默认网关Gateway。网关的地址一定是和源IP地址处于同一网段,往往不是第一个就是第二个,例如192.168.1.0/24这个网段,Gateway一般会是192.168.1.1/24或者192.168.1.2/24
「查看默认网关」
通过如下命令可获取网关信息
netstat -r
如何发往默认网关
由于是在同一网段,所以只需要在交换机上进行通信即可,也即是使用ARP获取MAC地址,然后封装源IP、目的IP、源MAC、目的MAC发送出去。
网关往往是一个路由器,是一个三层转发的设备。
三层设备就是把MAC和IP头取下来,根据里面的内容,看看数据包具体是往哪里发的。
路由器是一台设备,有五个网口或网卡,分别连着五个局域网,每个口的IP地址都和局域网的IP地址是相同的网段,每个口都是它握住的那个局域网的网关。
任何一个想发往其它局域网的包,都会到达其中一个口,拿进来后拿下MAC和IP头,然后根据路由算法,选择另一只口,加上IP头和MAC头,发出去。
「那么该如何选择哪个网口?」
「(1)通过静态路由」
静态路由,其实就是在路由器上,配置一条一条的规则。按照规则进行出口匹配。
每当要选择哪个出口时,就一条一条规则匹配
找到符合的规则,就按规则中设置的出口发出去,找下一跳。
IP和MAC是否需要改变
MAC地址是一个局域网内才有效的地址
所以,MAC地址只要过了网关,就一定会改变,因为已经换了局域网。
两者主要区别在于IP地址是否改变?
不改变IP地址的网关称为「转发网关」
改变IP地址的网关,称为「NAT网关」
转发网关
即在数据包发送过程中源IP地址和目标IP地址不会变动,变动的是相应的MAC地址
比如:
服务器A:192.168.1.101/24
服务器B:192.168.4.101/24
此时A和B不在同一个网段,需要通过网关进行转发
转发过程如下:(图片较大,分成两个)
在此过程中,每到一个新的局域网,MAC地址都是变化的,但是IP地址都不变,在IP头里面,不会保存任何网关的IP地址。
IP地址在三个局域网内都是可见的,所以网段不会冲突,IP头不改变。
所谓的下一跳就是某个IP要将这个IP地址转换为MAC放入MAC头。
NAT网关
IP地址在局域网内不可见,会发生IP冲突,比如局域网A的192.168.1.101发往局域网B的192.168.1.101,IP是一样的。
类似于是快递地址,比如A小区和B小区都有一个1栋404,那么快递肯定是要先到特定小区的收发点
比如:
服务器B有一个全国通用IP,定为192.168.56.2
在网关B上,192.168.56.2对应的是192.168.1.101
凡是要访问192.168.56.2的,都转成192.168.1.101
具体过程如下:(图片过大,分成两张)
往期推荐: