这篇文章的主要内容来自鸟哥的《Linux私房菜 服务器架设篇》第2章 网络基本概念。其中加上了自己的一些心得体会。
在下面的这篇博文中,我介绍了ARP的概念。
http://blog.youkuaiyun.com/flagonxia/archive/2009/05/11/4167423.aspx
Internet网通过IP地址来进行连接,而实际上在硬件设备之间(如主机之间或主机与交换机、路由器之间),数据的传输是通过MAC帧。处于同一个网段的两个设备之间要实现数据传输,需要通过ARP协议将IP地址解析成MAC地址,然后才能将数据打包成MAC帧,实现传输。
然而ARP协议是工作在OSI模型的第二层,即数据链路层,它无法跨网段进行IP地址到MAC地址的转换。
如主机A的IP地址是:192.168.10.100/25,主机B的IP是:192.168.10.200/25。它们分别属于不同的网段,即主机A在192.168.10.0/25网段,主机B在192.168.10.128/25网段。它们之间有个网关主机R,它能实现如下的功能。
1)从子网192.168.10.0/25将数据包转发到子网192.168.10.128/25,它应该有两个网卡;
2)管理路由,能实现将特定目的地址的包转发到正确的子网。
现在主机A发送数据包到主机B,由于它们处于不同的子网,需要借助工作在第三层,即网络层的路由协议来帮忙。需要经历如下的步骤。
step 1:主机A需要传送数据包到主机B,主机A会查询数据包表头的目的IP地址(即发现传送目的地是主机B)。原来目的地址和自己并非处在同一子网;
step 2:主机A查询自己的路由表,很可能根据默认路由,将数据包传送到路由器“主机R”;
step 3:主机R接收到该数据包,分析表头目的IP地址,查询了路由表后发现它应该被转发到另一个子网192.168.10.128/25中。在子网192.168.10.128/25中进行数据包的传送,就要借助ARP协议,来找到主机B的MAC地址,然后将表头的源MAC地址转换成主机R在该网段的MAC地址,目的MAC地址变化成主机B的MAC地址。这样数据包就能以MAC帧为载体,传送到目的地“主机B”。