随着网络的普及,我们的生活越来越方便,但是网络安全也成了很多人面临的一个问题。特别是那些有着商业数据的企业电脑,更要注意上网安全常识,不然病毒会对我们造成严重的威胁。 假设一个只有 3台电脑组成的局域网, 该局域 网由交换机连接。 其中一个电脑名叫 A, 代表攻击 方; 一台电脑叫S , 代表源主机, 即发送数据的电脑; 另一台电脑名叫 D, 代表目的主机, 即接收数据的电 脑。 这3台电脑 的 I P地址分别为 1 9 2 . 1 6 8 . 0 . 2 , 1 9 2 . 1 6 8 . 0 . 3 , 1 9 2 . 1 6 8 . 0 . 4 。 MA C地址分别为 MAC A, MAC— S, MAC— D。 现在, S电脑要给D电脑发送数据了, 在S电脑内 部, 上层的T C P和U D P的数据包已经传送到了最底层的 网络接口层, 数据包即将要发送出去, 但这时还不知道目 的主机D电脑的M A C地址 MA C _ D 。 这时候, S电脑要 先查询自身的A R P缓存表, 查看里面是否有1 9 2 . 1 6 8 . 0 . 4 这台电脑的MA C地址, 如果有, 那很好办, 就将 M A C _ D 封装在数据包的外面。 直接发送出去即可。 如果没有, 这时S电脑要向全网络发送一个 A R P广播包, 大声询 问: “ 我的I P是 1 9 2 . 1 6 8 . 0 . 3 , 硬件地址是 M A E _ S , 我想 知道 I P地址为 1 9 2 . 1 6 8 . 0 . 4的主机的硬件地址是多 少? ”这时, 全网络的电脑都收到该 A R P广播包了, 包 括A电脑和 D电脑。 A电脑一看其要查询的 I P地址 不是自己的, 就将该数据包丢弃不予理会。 而 D电脑 一 看I P地址是自己的, 则回答S电脑: “ 我的I P地址是 1 9 2 . 1 6 8 . 0 . 4 , 我的硬件地址是 M A E D” 。 需要注意的 是, 这条信息是单独回答的, 即D电脑单独向S电脑发 送的, 并非刚才的广播。 现在 S电脑已经知道目的电 脑 D的M A C地址了, 它可以将要发送的数据包上贴上 目的地址 M A C _ D, 发送出去了。 同时它还会动态更新 自身的A R P缓存表, 将 1 9 2 . 1 6 8 . 0 . 4一 MA C — D这一条 记录添加进去, 这样, 等s电脑下次再给 D电脑发送数 据的时候, 就不用大声询问发送 A R P广播包了。 这就 是正常情况下的数据包发送过程。 这样的机制看上去很完美, 似乎整个局域网也天 下太平, 相安无事。 但是, 上述数据发送机制有一个致 命的缺陷, 即它是建立在对局域网中电脑全部信任的 基础上的, 也就是说它的假设前提是: 无论局域网中那 台电脑, 其发送的A R P数据包都是正确的。 那么这样 就很危险了!因为局域网中并非所有的电脑都安3 + - z g 己, 往往有非法者的存在。 比如在上述数据发送中, 当 S电脑向全网询问“ 我想知道I P地址为1 9 2. 1 6 8. 0 . 4的 主机的硬件地址是多少? ” 后, D电脑也回应了自己的 正确 M A C地址。 但是当此时, 一向沉默寡言的A电脑 也回话了: “ 我的I P地址是 1 9 2. 1 6 8. 0 . 4 , 我的硬件地址 是M A C — A ” , 注意, 此时它竟然冒充自己是 D电脑的I P 地址, 而M A C地址竟然写成自己的!由于 A电脑不停 地发送这样的应答数据包, 本来 s电脑的A R P缓存表 中已经 |