点击发送,信息如何送到对方机器上???

上古伪神

共 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

具体过程如下:(图片过大,分成两张)

往期推荐:

CV工程师用不到的链路层知识点

星巴克气氛组电脑是如何获取IP的

浏览器发起HTTP请求后经历了什么?

推荐一个生产环境问题排查利器

MySQL系列文章

k8s全系列文章汇总

浏览 52
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报