标签:
局域网
NAT技术
NAT技术的使命是完成内网IP和外网IP之间的转换,外网IP指的就是网关IP。它实现的核心其实是类似于路由器转发表的NAT转换表。
局域网的核心是交换机,它只能识别MAC地址。但集成了NAT功能的交换机就不仅仅是普通的交换机了,比如家用的路由器,它包括至少三个功能:交换机,DHCP服务器,NAT。家用路由器不仅要完成交换机的功能,还要负责内网IP的分配,另外NAT功能也是必不可少的。所以,在这个设备上我们可以看到网络设备日渐模糊的界限,到底是谁集成了谁?
所以,在第二种局域网中,处于核心的“多功能交换机”,首先要给内网的机器分配内网IP,这需要用到DHCP功能。
现在,若有台机器得到的IP是192.168.122.105,它要跟外界通信,目的IP是123.25.36.10。该分组经过“交换机”时,源主机IP会被替换成网关IP108.122.31.25,并且会在NAT转换表中留下一条记录:
| ——-源 ——— | —–目的—- |
|192.168.122.105 | 123.25.36.10 |
然后,当“交换机”接收到一个分组时,会识别其源主机IP,若它匹配123.25.36.10,那么就发给内网IP为192.168.122.105 的机器。
我们应该知道,网络通信基本都是一问一答,问和答所使用的分组,其源主机IP与目的地IP正好是相反的。
上面这个过程用到了NAT功能,显然这个模块可以识别IP且修改它。这不是普通交换机可以完成的任务。
ARP协议
前面说过路由器有一张表可以把IP映射到MAC上。这个映射实际上是通过ARP协议完成的。
很多书上都说ARP协议仅限于局域网内使用,我个人觉得不是这样的。前面说过,路由器内部也有ARP协议,但是路由器不属于局域网,它是公网上的一个节点。我的理解是:如果一台设备支持ARP协议,那么ARP只能解析与该设备直接相连的那些机器的IP;如果一个IP不能被解析,那么相应的分组会被发给该设备的上级路由器或网关路由器。
在每台安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表(维基百科)
我认为ARP协议的核心就是是这张表,存放IP和MAC地址的映射。ARP协议的工作包含两部分,一是动态生成这张表;二是根据表的内容完成对IP的解析,得出MAC地址。
比如,局域网中的主机A向B发送消息,当消息从IP数据报封装成MAC帧前,会从A的表中查找B的IP对应的MAC地址,然后把这个地址封装到MAC帧中再发送出去。这里需要了解的是,这个MAC帧将会被所有局域网中的机器接收,类似于“广播”,所有机器都会检查这个帧中的MAC地址,如果和自己的MAC地址一致,将继续解封;否则,直接丢弃这个帧。
如果A的表中没有与B的IP对应的MAC地址,那么A就向局域网中的所有主机发送一条ARP请求,这个请求包含B的IP地址,且MAC地址是FF-FF-FF-FF-FF-FF,于是所有与交换机相连接的主机(包括路由器)都会收到这个请求,但是只有B会回应,因为只有B的IP与请求中的IP一致。这样,A就可以更新自己的表,填入B的IP与MAC的对应。
但是,如果请求的IP不在这个局域网中,那么路由器会对请求做出回应,将自己的MAC地址发给A,当然是那个与该局域网相连的接口的MAC,因为一台路由可能同时连接了好几个局域网。
但是这里有个问题:路由器如何知道请求的IP在不在这个局域网?呃,好吧,纠结了半天终于想通了;路由器会查询自己的转发表,最后它肯定能知道有哪些IP是和这个接口绑定在一起的。当路由器接收到一个ARP请求后,读取它的请求IP:
当主机A知道了路由器的MAC地址后,剩下的事情就简单了:更新自己的缓存表;将MAC帧发送给路由器;路由器提取目的IP,利用ARP找到对应的MAC地址,再发送到相应的接口,完事。
完。
标签:
原文地址:http://blog.csdn.net/u012668018/article/details/46492231