本文部分图片来自:

http://wiki.deliberant.com/faq/wireless-bridge-routing-arpnat/

https://wiki.openwrt.org/doc/howto/clientmode

MAT的原理

MAT(MAC Address Translation)也叫做ARP-NAT,和IP网络中的NAT原理是差不多的。下面简称MAT。

NAT的存在就是为了让内网的多台机器共享一个公网的IP地址。类似的,MAT可以让Ethernet中多台机器共享一个MAC地址。但是这个共享是一个结果,而不是目的。

为什么要使用MAT

这是WiFi网络中仅有的现象。WiFi网络最常见的AP的设计就是为了透传Ethernet。它在Ethernet的(DA,SA)基础上加入了WiFi专用的MAC地址,也就是WiFi的MAC地址包裹在Ethernet地址之外。

对于AP来说,包裹了AP的MAC地址BSSID,也就是在无线网络中的AP收发的802.11包是(DA,SA,BSSID)的形式。

对于WDS来说,包裹了两个WDS设备的MAC地址(TA,RA),也就是形成了(DA,SA,TA,RA)的形式。

那么对于WiFi网络中STA的包,只是加入了BSSID而已,并没有加入它自身的WiFi设备地址,最终结果来看它并没有WiFi的MAC地址,而是将自己的Ethernet地址拿来使用做为WiFi的地址了。

所以为了透传Ethernet,在仅有链路层工作的情况下(不使用NAT),下面的组网方式就行不通了,而需要MAT的帮助。

MAT的原理

MAT的基本原理:

l  不影响IP层,也就是数据包的IP地址不会变化

l  MAT对于内部设备在MAC层上的通讯是透明的。也就是是否有MAT设备存在,内部设备所收发的数据包的地址没有什么不同。

l  MAT对于外部设备来说,屏蔽了所有内部设备,以它自身来替代。也就是内部设备发出的包的源MAC会被替代成MAT设备的MAC。随之而来的,就是MAT收到的数据包的目标MAC会被替换成对应内部设备的MAC。

MAT的主要问题:

l  ARP-NAT缓存可能超时,这样会导致网络连接立刻被中断

l  ARP-NAT缓存可能会溢出,这样会导致网络连接出现问题

l  其他未知问题

MAT的工作流程

如图设备A作为STA,连接到AP,电脑连接到设备A。设备A内部对STA接口Ethernet接口做驱动级别的处理转发。实际上如果设备A再放出一个WiFi AP,电脑的无线网卡连上它,原理也是一样的。

DHCP流程

电脑发出DHCP discover,设备A更改SA,AP返回offer包之后,设备A更改DA返回给电脑。这里MAT可能要在DHCP包出去之前将broadcast flag给置上,不然AP可能会根据帧体的MAC地址直接单播数据包给电脑,这样会行不通,因为电脑没有和AP连接。所以这里AP回复的是广播的DHCP offer,MAT只要转发广播,没有必要修改DA。

因为DHCP流程中电脑还没有IP地址,所以在设备A端的MAT依据是DHCP包内部的MAC地址信息来转发。MAT不会修改DHCP包帧体里面的数据。

DHCP结束之后,MAT的驱动应该已经记住了IP-MAC的对应关系。

ARP流程

ARP的包体里面会携带IP地址和MAC地址,MAT除了在发送的时候改变SA,接收的时候改变DA之外,

它同时会在发送的时候改变ARP帧体的SA,接收的时候改变ARP帧体的DA。对于MAT设备来说,根据ARP帧体的IP地址来判断哪个设备就可以了。

另外抓包发现电脑还会广播“免费”ARP,告诉别人自己的MAC地址和IP地址的对应关系。MAT也毫不犹豫地将它的SA和帧体的SA替换成自己的MAC地址。

所以这最终的效果就是MAT设备拥有多个IP地址,虽然这不是真的。

数据包流程

数据包的流程很简单,就是MAT设备修改电脑数据包包的SA发出去给AP,AP回来的发修改DA再转发给电脑。

基本流程如下图所示,其中MAT将SA替换成SA1,将DA替换回DA1.

ARP-NAT(MAC Address Translation)的原理的更多相关文章

  1. NAT(Network Address Translation)

    一.概述 NAT英文全称是“Network Address Translation”,中文意思是“网络地址转换”,它是一个IETF(Internet Engineering Task Force, I ...

  2. NAT Network Address Translation,网络地址转换

    Network Address Translation,网络地址转换

  3. ARP Poisoning Attack and Mitigation Techniques ARP欺骗 中间人攻击 Man-In-The-Middle (MITM) attack 嗅探 防范 Can one MAC address have two different IP addresses within the network?

    小结: 1. ARP缓存投毒,窃听中毒者之间的通信: 2. ARP Poisoning Attack and Mitigation Techniques - Ciscohttps://www.cisc ...

  4. Network Address Translation(转载)

    Network Address Translation  来源:http://alexanderlaw.blog.hexun.com/9791596_d.html       地址转换用来改变源/目的 ...

  5. 关于获得本机Mac Address的方法

    网络上有讲获得Mac address的方法有如下: 1. 发送ARP命令,利用返回的Mac Address缓冲区得到 2. 用NetworkInterface.GetAllNetworkInterfa ...

  6. ARP表 MAC表 路由表

    ARP表是一个动态表,存储在计算机当中,目的是做一个ip地址与mac地址的对应.假设在同一子网段,计算机A与计算机B通信计算机A的ip地址192.168.0.1 MAC地址AA-AA-AA-AA-AA ...

  7. What is Network Address Translation?---reference

    http://whatismyipaddress.com/nat What is Network Address Translation? Network Address Translation (N ...

  8. I.MX6 Ethernet MAC (ENET) MAC Address hacking

    /********************************************************************* * I.MX6 Ethernet MAC (ENET) M ...

  9. ARP攻击的发现、攻击原理、攻击方式、防护,竟然这么简单?!

    ARP协议概述 ARP协议(address resolution protocol)地址解析协议. 一台主机和另一台主机通信,要知道目标的IP地址,但是在局域网中传输数据的网卡却不能直接识别IP地址, ...

随机推荐

  1. Eclipse的变量标记开关

    例如有如下代码: int var_a = 0; int var_b = var_a + 2; 当光标在var_a变量上时,Eclipse会将代码进行如下标记: int var_a = 0; int v ...

  2. 关于下载远程文件为未知文件.txt的解决方法

    本地下载文件后缀正常,服务器下载文件后缀都为.txt的解决方法: 后缀为 未知文件.txt 的原因为前端无权限获取Content-Disposition中的文件名 response.setHeader ...

  3. F与Q查询 事务 choices参数

    F与Q查询 F查询 当我们需要将两个字段对应的数据进行比较时就需要用到F查询. select * from book where sold > stock 1.例如需要将售出部分数据和库存数据进 ...

  4. NOIP 模拟 $24\; \rm block$

    题解 \(by\;zj\varphi\) 因为它要求大于它的且放在它前的数的个数要小于它的 \(key\) 值,所以先按 \(\rm val\) 值排序,然后按 \(\rm key\) 值排序,按顺序 ...

  5. QT从入门到入土(九)——TCP/IP网络通信(以及文件传输)

    引言 TCP/IP通信(即SOCKET通信)是通过网线将服务器Server端和客户机Client端进行连接,在遵循ISO/OSI模型的四层层级构架的基础上通过TCP/IP协议建立的通讯.控制器可以设置 ...

  6. (一)响应式web设计。。。freecodecamp笔记

    HTML基础 HTML 的全称是 HyperText Markup Language(超文本标记语言),它是一种用来描述网页结构的标记语言. h1用作主标题,h2用作副标题,还有h3.h4.h5.h6 ...

  7. Sparksql 日期加减函数

    1.日期加减spark sql 日期加减,date_sub,date_addval dateDF=spark.range(10) .withColumn("today",curre ...

  8. opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)

    0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...

  9. 单片机学习(九)定时器扫描按钮和数码管与PWM的使用

    目录 一.使用定时器扫描按钮和数码管 1. 使用定时器进行扫描的缘由 2. 定时器扫描独立按钮 3. 定时器扫描数码管 二.PWM的使用 1. PWM简介 2. LED呼吸灯 实现一 实现二 3. 按 ...

  10. Windows-MacOSX-Ubuntu·不同平台文件互传文件共享

    时间:2018-11-23 整理:byzqy 标题:Mac下的virtual box 安装的Ubuntu虚拟机互传文件问题 地址:https://blog.csdn.net/qq_20044689/a ...