Friday, August 21, 2009

route table与arp table

jessinio@niolaptop ~ $ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.10.1             ether   00:23:cd:4a:1c:ec   C                     wlan0
192.168.10.105           ether   08:00:27:e9:70:63   C                     wlan0


ARP表罗列出的其实就是IP与MAC的对照表. 一看, IP还需要对照? 哪还要IP干嘛?, 其实:

在以太网中, 通信是使用MAC地址. 所以在局域网中, 知道MAC地址其实就可以机器之间通信了.

但是用户的程序都是使用基于IP的TCP或者是UDP, 所以, 单单可以数据通信没有意义(因为用户级程序无法明白和使用发来的信息)

在局域网通信中, 数据包还是和平时与广域网机器通信一样的处理过程, 只是链路级的目的地地址为IP对应的MAC, 而不是网关的地址(它也在arp表中)

这样, 信息包就被点对点地传输了.

这就是ARP表的用处: 找到IP对应的MAC, 直接发数据过去(当然还是IP包了)

那么route table有什么用处呢?
默认时(dhclient程序返回和修改的):

jessinio@niolaptop ~ $ netstat -r
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.10.0    *               255.255.255.0   U         0 0          0 wlan0
loopback        *               255.0.0.0       U         0 0          0 lo
default         192.168.10.1    0.0.0.0         UG        0 0          0 wlan0

route表主要是起到数据流向的作用

默认的作用为: 给出了对待非局域网IP的数据方式 -- 发给网关(过程也是MAC点对点传输)

使用route表强制数据流向的例子:
1. 指定某(些)目的IP的数据都流向网关, 即使可以点对点.
2. 指定某目的地的IP数据包由指定的网卡发出
3. 当使用网卡的alias作用时, 就可以解释为: 使用指定源IP与某目的地IP通信( 其实与2是一样的, 只是网卡是虚拟出来的)

通过修改route表, 可以让同台机器的N张网卡"和谐"共处

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.