|
发表于 2007-4-20 20:35:03
|
显示全部楼层
看来parphy 是个自信的人,本来这是个讨论,不用激动,OSI七层模型是搞网络的都知道的东西.OSI 是一个国际标准,arp协议也是一个业界标准,制订标准时划为第二层,是有他理由的,并不是由你轻易怀疑的,你认为制订标准的厂商,机构,专家都是吃干饭的?
第三层的特点是要传输的是数据单元(data unit)是包(packet) ,包头是源ip地址和目的ip地址,内容是要传输的上层协议数据;
第二层的特点是要传输的是数据单元(data unit)是帧(frame) ,帧头是源mac地址和目的mac地址,内容是要传输的上层协议数据;
数据的传输在发送端是上层向下层传送,这个过程中每一层都给上一层数据加上这一层特有的数据头,在接受端反之.发送端接受端通讯时处在某层的数据的传输更关心的是对端对应层是否遵循同一约定(这个约定即协议),对于上下层如何工作对他来说是透明的,只要提供接口就可以了,当然接口也是OSI或TCP/IP的一部分,这是OSI或TCP/IP最大的优势,使开发者更多的精力关注于本身所在层......,这些是废话,但我们可以认为协议所处的层,是由协议约定的工作在那一层完成.
arp协议我们简单讲一下,当主机向子网内另一台主机或网关发起一个数据通讯如一个ping引起的icmp数据包时(当然是第三层数据包),先在本机ARP表中查是否有目的主机ip对应的mac地址,为什么?因为第三层数据包封包完成后要通过接口向下层(这里当然是指第二层)传送以完成通讯,到此工作已经交给第二层了,第二层这时要给第三层来的icmp数据包封装成帧加上源mac地址和目的mac地址的帧头(第二层工作结束后交给第一层,转化为bit,以一定方式的光信号或电/电磁波信号传输),否则无法完成通讯,这里就有一个问题,源mac地址是本机当然可以得到,目的mac地址呢?找本机ARP表!但表中没有,或表中的内容是那来的呢?这时ARP协议就出场了.
如果ARP表中没有目的ip的mac ,(如主机ip10.10.10.86 mac00 16 76 DA B8 1D 找ip为10.10.10.7的mac)那主机会先用ARP尝试获得,先封装一个数据帧,内容是
FF FF FF FF FF FF 00 16 76 DA B8 1D 08 06 00 01
08 00 06 04 00 01 00 16 76 DA B8 1D 0A 0A 0A 56
00 00 00 00 00 00 0A 0A 0A 07
格式是: 目的mac FF FF FF FF FF FF(表示对所有广播)|源MAC 00 16 76 DA B8 1D |.......|主机ip 0A 0A 0A 56 (10.10.10.86)|...|要查询的IP 0A 0A 0A 07 (10.10.10.7) ,换成普通话是,喂!大家注意,谁是10.10.10.8,是的话回一声,告诉我mac!
注意这个数据帧是arp协议直接封装成的并不是arp在第三层封装成包再交由第二层封装成帧的,然后马上就交给物理层传输了.
不要以为arp帧中有ip就有误解.
还有网卡你也绑定了ip,但他是标准的二层设备.
简单一点工作在第三层,关键是设备或协议是否能看到和处理ip以使他以包的方式寻址和路由.
21楼说的没错,但结论不对,arp本身就是ip协议集的一部分,arp 为ip存在决定arp工作在那一层吗?那网线,和光缆也是第三层吗,没他们ip也不能跑,(还有ip协议和ip协议集的关系要搞清楚.)
22楼"ARP基本上是基于3层为出发点的,但它和2层的关系有着相当密切的关系。",其实所有的下层(协议)都是为上层(协议)服务的,下层的存在就是为了乘载上层协议,他们关系紧密,但却又互相透明,互不干扰.
21楼22楼很明显想说需求来自第三层,所以......,但看上面分析arp的需求偏偏来自第二层(见红字部分!是为了第二层封装要目的mac才引进的协议!)
一点愚见,太基础的东西,也不太好说明白,不要泼我水.
[ 本帖最后由 loopylf 于 2007-4-20 20:42 编辑 ] |
|