写在前面
本文看下如何访问外网环境。
1:正文
我们知道,局域网环境的IP地址一般都是192.168.xx.xx这种,这里我们假定大家都商量好了,不同的局域网IP地址也不会冲突,就如下图:
比如服务器A192.168.1.101/24要访问服务器B192.168.4.101/24,过程是这样子的:
1:服务器A发现服务器B和自己不是同一个网段,所以就要发送给网关(路由器的一个网口),网关的IP地址是192.168.1.1
2:服务器A发送ARP,获取网关MAC,此时包填充信息如下
源IP:192.168.1.101
目标IP:192.168.4.101
源MAC:服务器A的MAC
目标MAC:192.168.1.1这个网口的MAC
3:接着就可以发送出去了
192.168.1.1这个网口收到请求后,匹配MAC,发现和自己一致,因此就会将包收进来,然后通过静态路由
的配置信息找到需要从192.168.56.1这个网口发送出去,且下一跳的IP的地址是192.168.56.2,此时同样会发送一个ARP来获取192.168.56.2这个网口的MAC,则,此时包信息如下:
源IP:192.168.1.101
目标IP:192.168.4.101
源MAC:192.168.56.1的MAC
目标MAC:192.168.56.2的MAC
接着包就发到了192.168.56.2,判断MAC和自己匹配,因此就将包收进来,同样通过静态路由的配置,判断需要从网口192.168.4.1这个网口出去,并且该网口和目标IP是在一个局域网中,所以是最后一跳了。同样,192.168.4.1会发送一个ARP来获取192.168.4.101的MAC,修改包如下:
源IP:192.168.1.101
目标IP:192.168.4.101
源MAC:192.168.4.1的MAC
目标MAC:192.168.4.101的MAC
目标IP192.168.4.101收到包后判断MAC和自己匹配,就收进来,这样包就成功从192.168.1.101发送到192.168.4.101了。可以看到整个过程只有mac地址在变,而源IP和目标IP是不改变的。
以上考虑的是所有的局域网环境环境IP地址都是不冲突的场景,但实际是这样字:
注意此时服务器A的地址和服务器B的地址一毛一样,都是192.168.1.101/24
。
那么此时如果是服务器A想要访问服务器B,还能直接访问吗?显然是不能了。因而此时服务器B想要能够被访问就需要有一个国际身份,而这个国际身份需要注册到其连接的路由器上,这里假定其国际身份IP地址是192.168.56.2(可以认为是外网IP)。所以服务器要访问192.168.56.2才行。既然是要访问192.168.56.2,很明显和服务器A自己不是在一个局域网中的,所以就要发送到网关192.168.1.1,所以首先要通过ARP获取192.168.1.1的MAC地址,此时包信息如下:
源IP:192.168.1.101(因为还是局域网环境内所以还是NAT前的IP地址)
目标IP:192.168.56.2(服务器B的国际身份IP)
源MAC:服务器A的MAC
目标MAC:192.168.1.1这个网口的MAC
注意目标MAC肯定是局域网环境种要发送下一个机器的MAC
。这样包就发送到192.168.1.1了。192.168.1.1通过自身的静态路由配置判断,要想发给192.168.56.2要从192.168.56.1这个网口发送出去,此时就需要获取192.168.56.2的MAC,地址,获取后,包信息如下:
源IP:192.168.56.1(这里的IP就是服务器A NAT后的IP地址了,出了局域网就要用国际身份了)
目标IP:192.168.56.2(服务器B的国际身份IP)
源MAC:路由器192.168.56.1这个网口的MAC
目标MAC:192.168.56.2的MAC
注意:源IP改变了
。
192.168.56.2收到包后,发现和自己的MAC匹配,接着,内部转换,192.168.56.2地址对应的是局域网环境的服务器B IP 192.168.1.101。并且要从192.168.1.1这个网口出去,接着只需要通过ARP获取服务器B的MAC就行了,此时包如下:
源IP:192.168.56.1(这里的IP就是NAT后的IP地址了,服务器A的对外国际身份)
目标IP:192.168.1.101(此时NAT为局域网IP了)
源MAC:192.168.1.1的MAC
目标MAC:服务器B192.168.1.101的MAC
在这个过程中IP地址发生改变就叫做NAT,network address translation。
写在后面
多指导一点
怎么算是一跳?
从路由的一个网口进来,从另一个网口出去是,需要修改源mac地址和目标MAC地址,这叫一跳。
路由器是怎么连接到不同的局域网的
路由器有很多的网口,每个网口连接一个局域网,并且该网口的IP地址属于其所连接局域网的CIDR。
国际身份是啥?
就是公网IP了,挺贵的还。