网络寻址过程

一、网联网

1.1、局域网与互联网

局域网
一个最简单的局域网就是家庭用的WLAN,再者你所在的公司或者学校一般也都是一个小的局域网。 
互联网

互联网(internet),又称国际网络,指的是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。给你一个简单的解释,就是将上述的大大小小的局域网连接起来,便形成了互联网。

 

互联网由大大小小的网络组合而成,路由器、交换机、网关等实现了互联网的组网和接入网方式。

二、一封情书的旅程

2.1、局域网内部寻址过程

这么一个现实的场景

你和如花小姐姐在一个城市,你很想他你搬砖之余给如花写了一封情书如上所示(有点重口味了,哈哈)

分析一下这封信,除了你对如花的爱,还能分析出什么呢?假设你办公室里两台计算机,要进行通信,你的计算机是IP1,MAC1,目标计算机是IP2,MAC2给你捋一个对应关系

致如花的一封信通信对应层级
同城市 局域网内 ---
XXOO DATA 应用层
源MAC1 数据链路层
如花 目标MAC2 数据链路层
物理层的比特流 物理层
邮寄的过程 物理层的数据传输媒介 物理层

你和如花在一个城市,所以你给他的情书,都可以十一路亲自送到如花家里。这个过程类似于局域网内部主机通信,如果两台机器互相知道其MAC地址可以直接交流,前提是互相知道彼此的MAC地址,就像你认识如花一样。如果不认识,就要通过广播找到如花家的地址然后你才能将情书送过去。

是不是很形象?

看标题为什么说是局域网内部寻址过程呢?你会发现整个过程中并没有用到IP地址(并不是真的不需要IP地址,需要局域网IP地址,不过这个地址是用来去获取目标及其的MAC地址用的),只是用到了MAC地址。局域网内部的主机互联互通只需要MAC地址,而不需要IP地址,IP地址的作用是不同局域网的互联互通。

PS:如今比较流行的组网方式是一个逻辑整体(公司,学校等)或者一个区域组一个局域网,再通过交换机接入Internet。因为在局域网
中IP只是逻辑上的划分,不信你可以在你所在的公司或者学校修改一下自己的IP(最好是最后一段),依然能够连上网络。这样的话,
每个人都可以随意修改IP,IP != 用户。所以MAC地址这个时候就有用了,只有MAC地址才能表示用户。交换机中保存了 MAC <-> IP 的
映射关系。局域网访问互联网的唯一通道就是交换机。

 

2.2、互联网寻址过程

4.1中的你写给如花的信件,始终没有说到一个重要的信息,那就是邮编。

PS: 这里将邮编等同于地址,地址和邮编作用差不多,一般的地址会比邮编的定位更加详细,邮编是地理地址数字化的结果,具体请搜索邮
编的作用,我们这里把邮编 == 地址

 

如果你跟如花不在一个城市,她在上海,你在北京,十一路不好使了,你写给如花的信件就要通过邮局才能邮寄到如花手里。邮局就像是互联网,将大家联系起来,能够实现信件互通。

同样类比两台主机的通信,你的主机IP1,MAC1,如花的主机IP2,MAC2。 再来罗列一下这个对应关系。

致如花的一封信通信对应层级
不同公司 互联网 ---
XXOO DATA 应用层
你的邮编 IP 网络层
如花的邮编 IP 网络层
源MAC1 数据链路层
如花 目标MAC2 数据链路层
物理层的比特流 物理层
邮寄的过程 物理层的数据传输媒介 物理层

你把信放到北京邮政,北京邮政将信件送到上海邮政,然后上海邮政再把信件送到如花手中。上述过程像是两台在不同网络内的计算机通信,邮编是什么?邮编就是IP地址,当两台通信的主机不在同一个局域网内,就需要使用IP地址找到对方所在的局域网,到达局域网内再通过MAC地址将数据送达具体的主机。

从上面两个章节,可以看到这封情书的旅程有点复杂。

  • 北京邮政将信件邮寄到上海邮政  
    • IP寻址:网络层的工作,通过IP一个局域网到另一个局域网
  • 上海邮政再将信件送到如花手中
    • MAC寻址:数据链路层工作,局域网内寻址
这里还有一个问题:为什么上海邮政能找到如花?因为如花之前在上海邮政邮寄过信件,然后上海邮政知道如花的具体地址。类比到
互联网上,从一个局域网到另一个局域网,那“另一个局域网”怎么找到目标主机的呢?其实上面已经解释了,当前主流的组网方式是
大大小小的局域网通过交换机连接到互联网,交换机就是你所在的局域网的出入口,你也可以验证一下这一点,如果你在家并且你家有
路由器的wifi,两台连接wifi的手机或电脑百度IP地址,你会发现两台设备的IP地址是一样的,get?。交换机也维护了一个ARP表,接
下来就不解释为什么交换机能找到目标主机了。你应该懂了。

 

三、正经的网络寻址过程

第四章节中详细介绍了你和如花的爱情,这个章节正经点,说说网络寻址到底是怎样一个过程。

 

 

 

如上图,现在有发送发:A,接收方:B

  • 主机A
    • 主机A将数据发送到交换机1
    • 网络层封包 IP1 --> IP2
    • 数据链路层封包:MAC1 --> MAC3
    • 物理层将数据转为比特流通过媒介发送数据
  • 交换机1
    • 交换机1将数据发送到路由器
    • 网络层封包 IP1 --> IP2
    • 数据链路层封包:MAC3 --> MAC4
    • 物理层将数据转为比特流通过媒介发送数据  
  • 路由器  
    • 路由器将数据发送到交换机2
    • 网络层封包 IP1 --> IP2
    • 数据链路层封包:MAC4 --> MAC5
    • 物理层将数据转为比特流通过媒介发送数据 
  • 交换机2  
    • 交换机2将数据发往主机B
    • 网络层封包 IP1 --> IP2
    • 数据链路层物理层封包:MAC5 --> MAC2
    • 将数据转为比特流通过媒介发送数据  

如上所示整个过程就完成了,值得注意的一点是网络层始终都是IP1-->IP2。不断变化的是数据链路层的MAC地址。

以上过程有几个前提,AB主机的IP1和IP2都是外网IP,但是外网IP是有限的,一般的局域网内主机使用的都是内网IP,只有接入互联网的网关(家庭宽带的光猫)才会给分配一个外网的IP。也就是说交换机1和交换机2才是公网IP,这样的话私有IP寻址的问题如何解决?答案是NAT技术。

看红色部分,为什么主机A能找到交换机1?交换机1能找到路由器...

看蓝色部分,为什么主机A知道交换机1的MAC地址为MAC3,交换机1知道路由器的MAC3...

如果主机AB使用的都是内网IP,他们如何找到对方?

带着这三个问题继续往下看。

 

四、ARP协议与RARP协议

ARP(Address Resolution Protocol),即地址解析协议。ARP表中维护了IP --> MAC地址的映射,另外其为了知道映射关系,需要询问网内的主机,让对方告知其MAC地址,即询问目标IP对应的MAC地址。这也是三章节中,为什么主机A知道交换机1的MAC地址的原因。



如上图所示,如果我们运行一个简单的命令,ping 192.168.1.1(IP2),整个过程大致分为两步。

  •  广播:询问IP2的mac地址。并告知对方自己的IP和MAC地址
  •  响应:IP2回复IP1自己的MAC地址

我们再来细化这个过程

  •  IP1:
    • 查找本地APR地址表
    • 首先IP1会在本地ARP地址表中查找,是否知道IP2的MAC地址。
    •  如果ARP中存在。直接读取MAC2。
    • 如果不知道
    • 发起广播:询问IP2的mac地址。并告知对方对方自己的IP和MAC。
      • 目标主机收到广播进行相应
      • 不是目标的主机收到广播,不响应
  • IP2:
    • 收到IP1的广播并记录:将广播中携带的IP1的IP和MAC地址写入IP2的本地ARP表。
    • 响应IP1。告知对方自己是IP2,MAC为MAC2
  • IP1: 
    • 收到响应,将其MAC地址写入ARP表中。

arp -a然你看看自己真实的ARP缓存表

 

 

4.1、ARP欺骗

ARP协议的基本功能是以广播的形式通过目标主机的IP地址查询目标主机MAC地址。网络内的主机都可以进行ARP应答,如果黑客将自己的主机侵入到你所在的网络内,当一台主机A发起ARP广播,黑客机器进行ARP应答,这样就导致A主机会将接下来的数据发送到黑客机器。
这就是ARP欺骗。

由上可知ARP欺骗的主要原因在于发起广播的主机无法验证应答主机的真伪。

看到了上述的原因,如何解决呢?
ARP欺骗的防范方法:

  • 网关定时发送IP/MAC映射
  • 静态ARP
  • DHCP snooping

4.2、RARP协议

RARP协议是通过MAC地址获取IP的协议,和ARP协议刚好相反。

 

五、路由表

如上图所示,路由表最主要的作用就是决定下一跳的目标地址是哪里。这也就解释了第三章中蓝色部分的问题,主机A怎么知道下一跳的目标是交换机1。

 路由转发过程:先确定最短路径,然后再通过所选路径上的网络传输数据。
  一个分组到达路由器之后,先于本地路由表中的对应的子网掩码做按位与运算,然后再在本地的路由表中查询,如果与本地IP相同,则已经到达目的端,由当前路由解析数据;如果计算出不是本地IP地址,则此IP为下一跳的路由IP,继续进行路由转发;若在当前路由器中查询不到下一跳地址,即转向默认的下一跳IP。转发分组不可能在一个路由停下,这样会给当前路由的性能造成负担,且每个转发分组的IP数据包的报头中都有一个8位的生存时间TTL,这个生存时间并不是以时间单位计数,而是计算当前已经转发过的路由次数,在源端,设置好最大转发次数值,即生存时间(time to live),每经过一个路由,数值减一,直到最终路由器检查到生存时间为0。则丢弃该分组。[推荐阅读]

 

六、NAT技术

NAT(Network Address Translation)即:网络地址转换。NAT技术致力于将一个局域网络通过一个外网IP接入外网中。

 

 

  如图所示,在一个局域网中,虽然两台主机使用的是内网IP,但是可以通过交换机1处的网关统一提供的外网IP来接入互联网。
  如果一台主机B要访问内网中的主机A,主机B如何找到主机A呢?主机B在互谅网中只能找到124.65.126.45的交换机1,NAT技术就作用在这里,NAT技术可以将到达交换机1的请求,映射到主机A上。
为什么需要NAT技术呢?你想想IP地址一共42亿+个,在物联网飞速发展的今天早已经不够用。所以要想办法找到一种方式来节省IP。
另外NAT并不是真的作用在交换机1上,而是其接入网方式决定的。但是可以肯定的是作用在局域网对外的网关上。网关,不陌生吧。

  NAT如何进行内外网IP的转换的呢?如果让你设计NAT实现,怎么设计?是不是要有一个方法要给主机A做一个标记,让NAT知道访问主机A的请求是访问主机A的,而不是主机B。绕吗?这个作为不同服务器的标记就是传输层的端口。
如果是传输层的端口的话,是不是就意味着,一个局域网内对外提供8080端口的主机只有一台?是的,也不是,因为可以有平衡负载。
如果一个局域网内多台机器都提供8080端口的服务,NAT会对其进行平衡负载。

PS:不要惊讶于这种设计方式,思考下,在你公司或者学校里面,你的电脑会对外网提供服务吗?不会的,因为我
们作为互联网的使用者,我们的需求只是访问互联网,获取我们需要的呃信息即可。什么样的局域网需要对外提供服务?
嗯,如果你是一个程序员,你可能已经明白了就是服务端。各大网站、APP的服务端。所以说,这种用端口来区分内部
主机的方式是没问题的。

 

 

如上如图表所示,局域网内 出 & 入 的IP转换。

 

posted @ 2020-10-23 10:09  超级小小黑  阅读(5608)  评论(3编辑  收藏  举报