我们在局域网内,只能与同一网段的电脑进行通信,现在,我需要与外界通信,那该怎么办呢?
比如,我在校园里面,我需要访问校园BBS论坛?
这个时候就需要路由器,才可以访问到这些网站。
如果没有路由器,我们也可以自己组装路由器。假设,你的电脑有两个网卡,将其中一个网卡1的网口连接到宿舍里面校园网的端口,一个网卡2的网口与交换机进行连接,这个时候,该电脑就相当于一个路由器。不过网卡1的IP配置必须与校园网络管理员分配的IP地址一样。
如果是一个家庭路由器,那么外网网口连接到校园网的端口;内网网口连接宿舍里面的电脑。
当按照第一种方式连接的话,剩下的就只需要给其他电脑进行IP分配。可以自己配置,但必须要与这台电脑的IP在一个网络断;或者通过DHCP协议进行配置。除了IP的配置外,还需要一个网关。这个网关,就是这台电脑的IP。
关于外网与内网:一般情况下,比如家庭上网:一个路由器只对应一个外网,这个外网是由运营商分配的。而自己电脑的IP是由路由器分配的,在一个局域网里面。也就是说,对于外网来说,局域网整体只是一个IP,客户端的IP外网是看不见的。
两个服务器之间要访问,肯定是通过网络包访问的,这里面比较重要的是:MAC头与IP头,如下图:
MAC头包括:源MAC地址、目标MAC地址以及协议类型。该协议类型主要说明IP层。
IP头:版本号主要是IPV4,后面标识协议是TCP/UDP。然后是源IP与目标IP。
任何一台机器上,机器A访问机器B,首先会判断机器A与机器B的IP是否在一个网络号码段,如果在的话,直接通过ARP协议获取对方的网关,不需要通过网关进行网络包的转发。如果不在一个网络号码段,这个时候,机器A首先把网络包发送到网关,也就是我们通常所说的路由器(三层设备),这个时候路由器会拆下MAC头与IP头,进行判断,下一步往哪里发送。
以上两台机器是否在一个网络断,这个时候就需要根据CIDR与子网掩码按位取和,来得到网络号码段,然后再判断二者是否在一个网络号码段。
一般我们都理解为路由器就是网关,或者网关就是路由器,事实上,二者有一定的区别,一个路由器管理者多个网关,只不过一台服务器需要将网络包发送自己的默认网关,而这个网关正好由路由器支配。但是路由器在支配着该网关的时候,它还掌握着其他局域网的网关,否则,它怎么将局域网A 的网络包发送出去呢?
路由包括静态路由与动态路由。
先说说一说静态路由:网络包经过网关A的时候,这个时候路由器A根据路由器规则,来计算从哪个端口抛出,以及下一跳的IP是哪里?这里的路由器规则都是网络管理员手动配置的。
网络包从服务器A到达服务器B,这个时候肯定涉及到IP变与不变,Mac变与不变。这个时候分为两种,是否涉及到外网,即A与B的IP是否冲突。
第一种:这种网关成为转发网关。
第一步:服务器A的地址为:192.168.1.101/24,服务器B的地址为:192.168.4.101/24。服务器A判断B的地址与自己不再一个网络号码段,这个时候,服务器A首先将网络包发送给自己配置的默认网关,报文如下:
源IP:服务器A的地址----192.168.1.101/24
目标IP:服务器B的地址----192.168.4.101/24
源MAC:服务器A的MAC地址
目标MAC:网关A的MAC地址----通过ARP协议获取
第二步:网络包到达网关A的时候,这个时候,网关A根据路由器匹配规则,网络包从端口:192.168.56.1/24发出去,下一跳为:192.168.56.2/24.报文如下:
源IP:服务器A的地址----192.168.1.101/24
目标IP:服务器B的地址----192.168.4.101/24
源MAC地址:网关A的MAC地址
目标MAC地址:网关B的MAC地址----网关A通过ARP协议获取
第三步:网络包到达网关B的时候,这时候根据路由器匹配规则,计算出从端口:192.168.4.1发送出去,没有下一跳,因为目标IP地址与该网关的IP地址一致。报文如下:
源IP:服务器A的地址----192.168.1.101/24
目标IP:服务器B的地址----192.168.4.101/24
源MAC地址:网关B的MAC地址
目标MAC地址:目标服务器B的MAC地址----通过ARP协议获取。
第二种:NAT网关
如果继续采用转发网关的发送网络包,你会发现,服务器A的地址与服务器B的地址一模一样,那肯定无法发送啊。这是因为服务器A的私有地址,对应一个公网IP;同样服务器B也对应一个公网。这就是为什么你去ping你邻居的IP的时候,为什么无法ping通。
这个时候,服务器A和服务器B配置的默认网关分别对应一个外网的IP地址。
首先网关B会记录下目标服务器B的私有地址192.168.1.101对应的外网IP地址为192.168.56.2,同样的
网关A会记录下源服务器A的私有地址192.168.1.101对应的外网的IP地址为192.168.56.1。
第一步:源服务器A发送网络包到达路由器A,网络包如下:
源IP:服务器A的地址:192.168.1.101
目标IP:服务器B对应的外网IP地址:192.168.56.2
源MAC:服务器A的MAC地址
目标MAC:网关A--192.168.1.1的MAC地址
第二步:网络包达到路由器A的时候,根据路由规则得到网络包从端口192.168.56.1发出去,由于192.168.56.2与目标IP地址是一个网络号码段的,所以就没有下一跳了。
源IP:服务器A对应的国际IP:192.168.56.1
目标IP:服务器B的对应的国际IP地址:192.168.56.2
源MAC地址:网关A--192.168.56.1的MAC地址
目标MAC地址:网关B--192.168.56.2的MAC地址
第三步,网络包到达路由B的时候,根据路由匹配规则,将网络包从192.168.1.1发送给服务器B,如下
源IP:192.168.56.1
目标IP:192.168.1.101
源MAC地址:网关192.168.1.1的MAC地址
目标MAC地址:目标服务器B的MAC地址。
本地局域网想要去访问外网,必须要经过网关。网关分为两种:
一种是转发网关,源IP与目标IP是可见的,不会发生冲突。
一种是NAT网关,源IP与目标IP需要转换为公网IP,才能进行访问。