parphy
发表于 2007-4-19 17:23:29
说到用sniffer来证明ARP的层的问题,那我就抓一个图来做一个深入点的协议分析
1、先把图用红线分为上下两部分,红线上面的是二层,而红线下面的是三层,为什么是三层?——看一下红框里的字,清楚地标明协议类型是IP,那当然就毫无疑问属于三层啦吧?
2、说ARP属于二层的理由,无非就是因为蓝圈里画的那个个以太网类型标明了ARP,但那只是一个标签,那仅仅是为了二与三层的衔接用的,为什么仅仅只是衔接,而不是根本性的?这个问题请看下面一点
3、ARP要解决的问题如下,很好理解,就象两个人说话一样
询问的节点IP是啥,其MAC又是啥?
被询问的节点IP是啥,其MAC又是啥?
节点所发的包到底是哪个性质的,是询问的还是回答(即被询问)的?
这些问题实际上是ARP协议的本质内容,这些问题在红线以上回答了吗?答案显然是否定的,那是在红线以下解决的(见图中绿框部分)
上面说的只是一个方面,而我前面说的判断标志才是最重要的判断依据,再次请记住一个A层协议如果不能自由通往它的上一层B层,那它显然就不是A层的,仔细看前面的图吧。
并且,那些持反面意见的人不拿出足够详细的说明,而一味凭空臆断(比如空说SNIFFER却自己不拿出东西来),只是空说,我将不予回复,要糊涂你就自己糊涂吧,
热烈欢迎要真正认真讨论问题的人
parphy
发表于 2007-4-19 17:27:44
前面那个贴子图不清楚,请管理员删除,我重发
说到用sniffer来证明ARP的层的问题,那我就抓一个图来做一个深入点的协议分析
1、先把图用红线分为上下两部分,红线上面的是二层,而红线下面的是三层,为什么是三层?——看一下红框里的字,清楚地标明协议类型是IP,那当然就毫无疑问属于三层啦吧?
2、说ARP属于二层的理由,无非就是因为蓝圈里画的那个个以太网类型标明了ARP,但那只是一个标签,那仅仅是为了二与三层的衔接用的,为什么仅仅只是衔接,而不是根本性的?这个问题请看下面一点
3、ARP要解决的问题如下,很好理解,就象两个人说话一样
询问的节点IP是啥,其MAC又是啥?
被询问的节点IP是啥,其MAC又是啥?
节点所发的包到底是哪个性质的,是询问的还是回答(即被询问)的?
这些问题实际上是ARP协议的本质内容,这些问题在红线以上回答了吗?答案显然是否定的,那是在红线以下解决的(见图中绿框部分)
上面说的只是一个方面,而我前面说的判断标志才是最重要的判断依据,再次请记住一个A层协议如果不能自由通往它的上一层B层,那它显然就不是A层的,仔细看前面的图吧。
并且,那些持反面意见的人不拿出足够详细的说明,而一味凭空臆断(比如空说SNIFFER却自己不拿出东西来),只是空说,我将不予回复,要糊涂你就自己糊涂吧,
热烈欢迎要真正认真讨论问题的人
scowl
发表于 2007-4-19 19:19:08
其实,换一种说法就好理解
ARP是基于IP匹配MAC 不是基于MAC匹配IP(主次很重要)
它的工作是确定任何一个通信目标其IP对应的MAC是多少
也就是说ARP是为IP工作的而不是为MAC工作的这一点很重要
所以ARP是属于三层
Memphiss
发表于 2007-4-19 23:10:56
同意以上。
ARP基本上是基于3层为出发点的,但它和2层的关系有着相当密切的关系。
[ 本帖最后由 Memphiss 于 2007-4-19 23:13 编辑 ]
parphy
发表于 2007-4-20 07:24:22
原帖由 scowl 于 2007-4-19 19:19 发表 http://bbs.routerclub.com/images/common/back.gif
其实,换一种说法就好理解
ARP是基于IP匹配MAC 不是基于MAC匹配IP(主次很重要)
它的工作是确定任何一个通信目标其IP对应的MAC是多少
也就是说ARP是为IP工作的而不是为MAC工作的这一点很重要 ...
精辟,一语中的!
[ 本帖最后由 parphy 于 2007-4-20 07:30 编辑 ]
naboo
发表于 2007-4-20 09:06:52
parphy严谨的态度值得我们学习~~:)
loopylf
发表于 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 编辑 ]
lulinjan
发表于 2007-4-21 00:47:17
与mac有关的是联路层的
parphy
发表于 2007-4-21 11:25:24
原帖由 lulinjan 于 2007-4-21 00:47 发表 http://bbs.routerclub.com/images/common/back.gif
与mac有关的是联路层的
你的话不够精确,应该在前面加上“大部分”这三个字才够严密
parphy
发表于 2007-4-21 11:26:43
原帖由 loopylf 于 2007-4-20 20:35 发表
......
数据的传输在发送端是上层向下层传送,这个过程中每一层都给上一层数据加上这一层特有的数据头,在接受端反之.发送端接受端通讯时处在某层的数据的传输更关心的是对端对应层是否遵循同一约定(这个约定即协议),对于上下层如何工作对他来说是透明的,只要提供接口就可以了,当然接口也是OSI或TCP/IP的一部分,这是OSI或TCP/IP最大的优势,使开发者更多的精力关注于本身所在层......,这些是废话,但我们可以认为协议所处的层,是由协议约定的工作在那一层完成.
这是你的原话,请注意透明两个大的红字,把ARP放到二层就完全破坏了你所说的透明(对TCPIP本身没有影响,但对其它三层协议就根本不透明),这就是我前面的论述里多次提到层与层之间自由性,看来你既没有真正理解我的话,甚至也都没有理解你自己说的话!
起初我不想拿权威来唬人或压,但既然阁下说到了权威的东西,那我提供几个有据可查的
这里有几个出处:
出处1:
印第安娜大学UNIX支持小组对OSI模型(含ARP)的解释下面是链接
http://www.ussg.iu.edu/usail/network/nfs/network_layers.html
以下是全文,只有这一个比较长,其他我出处就省略了,但肯定是有出处可查的
ISO/OSI Network Model
The standard model for networking protocols and distributed applications is the International Standard Organization's Open System Interconnect (ISO/OSI) model. It defines seven network layers.
Layer 1 - Physical
Physical layer defines the cable or physical medium itself, e.g., thinnet, thicknet, unshielded twisted pairs (UTP). All media are functionally equivalent. The main difference is in convenience and cost of installation and maintenance. Converters from one media to another operate at this level.
Layer 2 - Data Link
Data Link layer defines the format of data on the network. A network data frame, aka packet, includes checksum, source and destination address, and data. The largest packet that can be sent through a data link layer defines the Maximum Transmission Unit (MTU). The data link layer handles the physical and logical connections to the packet's destination, using a network interface. A host connected to an Ethernet would have an Ethernet interface to handle connections to the outside world, and a loopback interface to send packets to itself.
Ethernet addresses a host using a unique, 48-bit address called its Ethernet address or Media Access Control (MAC) address. MAC addresses are usually represented as six colon-separated pairs of hex digits, e.g., 8:0:20:11:ac:85. This number is unique and is associated with a particular Ethernet device. Hosts with multiple network interfaces should use the same MAC address on each. The data link layer's protocol-specific header specifies the MAC address of the packet's source and destination. When a packet is sent to all hosts (broadcast), a special MAC address (ff:ff:ff:ff:ff:ff) is used.
Layer 3 - Network
NFS uses Internetwork Protocol (IP) as its network layer interface. IP is responsible for routing, directing datagrams from one network to another. The network layer may have to break large datagrams, larger than MTU, into smaller packets and host receiving the packet will have to reassemble the fragmented datagram. The Internetwork Protocol identifies each host with a 32-bit IP address. IP addresses are written as four dot-separated decimal numbers between 0 and 255, e.g., 129.79.16.40. The leading 1-3 bytes of the IP identify the network and the remaining bytes identifies the host on that network. The network portion of the IP is assigned by InterNIC Registration Services, under the contract to the National Science Foundation, and the host portion of the IP is assigned by the local network administrators, locally by noc@indiana.edu. For large sites, usually subnetted like ours, the first two bytes represents the network portion of the IP, and the third and fourth bytes identify the subnet and host respectively.
Even though IP packets are addressed using IP addresses, hardware addresses must be used to actually transport data from one host to another. The Address Resolution Protocol (ARP) is used to map the IP address to it hardware address.
Layer 4 - Transport
Transport layer subdivides user-buffer into network-buffer sized datagrams and enforces desired transmission control. Two transport protocols, Transmission Control Protocol (TCP) and User Datagram Protocol (UDP), sits at the transport layer. Reliability and speed are the primary difference between these two protocols. TCP establishes connections between two hosts on the network through 'sockets' which are determined by the IP address and port number. TCP keeps track of the packet delivery order and the packets that must be resent. Maintaining this information for each connection makes TCP a stateful protocol. UDP on the other hand provides a low overhead transmission service, but with less error checking. NFS is built on top of UDP because of its speed and statelessness. Statelessness simplifies the crash recovery.
Layer 5 - Session
The session protocol defines the format of the data sent over the connections. The NFS uses the Remote Procedure Call (RPC) for its session protocol. RPC may be built on either TCP or UDP. Login sessions uses TCP whereas NFS and broadcast use UDP.
Layer 6 - Presentation
External Data Representation (XDR) sits at the presentation level. It converts local representation of data to its canonical form and vice versa. The canonical uses a standard byte ordering and structure packing convention, independent of the host.
Layer 7 - Application
Provides network services to the end-users. Mail, ftp, telnet, DNS, NIS, NFS are examples of network applications.
TCP/IP Network Model
Although the OSI model is widely used and often cited as the standard, TCP/IP protocol has been used by most Unix workstation vendors. TCP/IP is designed around a simple four-layer scheme. It does omit some features found under the OSI model. Also it combines the features of some adjacent OSI layers and splits other layers apart. The four network layers defined by TCP/IP model are as follows.
Layer 1 - Link
This layer defines the network hardware and device drivers.
Layer 2 - Network
This layer is used for basic communication, addressing and routing. TCP/IP uses IP and ICMP protocols at the network layer.
Layer 3 - Transport
Handles communication among programs on a network. TCP and UDP falls within this layer.
Layer 4 - Application
End-user applications reside at this layer. Commonly used applications include NFS, DNS, arp, rlogin, talk, ftp, ntp and traceroute.
########################################
(中文是我自己的解释,这个地方有点夸张地认为ARP干脆到了TCP/IP(不是OSI)的第四层了,我想它是把ARP当成一个应用程序的角度看的了,主要还要看前面的说明是网络层的。)
出处2:
CISCO英文原版教材对ARP的相关解释,书名是:Cisco Press - Cisco Certified Network Associate Basics V
相关截图是cisco.jpg
截图cisco2.jpg里也写得够清楚了,TCP/IP里的INTERNET LAYER对应了OSI里的NETWORK LAYER,并且它包含了IP协议(狭义的IP协议)、ICMP协议、ARP协议、RARP协议
出处3、4
著名的O'RELLY公司的权威书籍《深入理解LINUX网络内幕(影印版)》的目录截图LINUX.JPG,(书我送人了,图是网上粘的)
请注意用词,这个图充分说明了ARP的封装模式是阁下所说的属于第三层的packet而不是第二层的frame
同样的Behrouz A·Forouzan著的TCP/IP 协议簇也用的是ARP packet这个词,该书,好象清华大学有出版
出处5
这是微软MSDN上OSI参考模型的相关介绍,原文粘贴:
The Network Layer is essentially handled by the IP layer in a TCP/IP stack. IPX/SPX would be handling the network layer and transport layer in an Novell IPX world. The network layer deals with routing issues, forwarding issues and making sure that the packets are within the maximum packet size (MTU) and fragmenting them if not. It also deals with reassembling them at the point of entry. The Network Layer also has the essence of IP which is IPv4 addressing. The Network Layer also deals with things such as ICMP, ARP and RARP as well as the issues mentioned above.
########################################
其他出处
华为、中兴、北电这些我接触过的国内、外权威厂家的培训资料,无不把ARP放到第三层,我就不再一一列举了,因为我不想把这个事情搞成考古
但,我请阁下出示一下你的观点的权威出处不算过分吧?(当然,需要有据可查)
[ 本帖最后由 parphy 于 2007-4-21 16:08 编辑 ]
lulinjan
发表于 2007-4-21 15:25:17
想知道最终的解决方法.
parphy
发表于 2007-4-21 16:18:31
再补充一段广为人知的TCP/IP历史:
虽然,NETWORK INTERFACE(该层对应了OSI模型的第一和二层)是TCP/IP模型中必不可少的一部分,但,TCP/IP协议簇从来都没有对该层提出过任何细节性的要求和修改
loopylf
发表于 2007-4-21 19:31:21
原帖由 parphy 于 2007-4-21 16:18 发表 http://bbs.routerclub.com/images/common/back.gif
再补充一段广为人知的TCP/IP历史:
虽然,NETWORK INTERFACE(该层对应了OSI模型的第一和二层)是TCP/IP模型中必不可少的一部分,但,TCP/IP协议簇从来都没有对该层提出过任何细节性的要求和修改
这里前几句你说的很清楚,但要搞清问题的焦点在那里.既然你说arp 是第三层,显然你是指在作为ISO制定的OSI模型的第三层,那问题应该在OSI模型中讨论.而TCP/IP协议族是OSI模型的一个具体实现,而OSI模型是一个理论模型,TCP/IP协议族非ISO制定.TCP/IP协议族和OSI两者体系并非完全一致,在TCP/IP协议族中arp归于TCP/IP协议族概念层4层的网际层这是组建他体系的需要,显然TCP/IP概念层的网际层与OSI模型参考模型的网络层在两者对比中把他们对应是促使你认为arp是OSI模型第三层的理由.举个例子中校相当于营长,这是一个参照对比一样.
你说大家讨论,那你要自己分析,不要拿大段的洋文,资料吓人,资料要看如何用,中学教科书中就有的东西你何必呢?
我前面的帖子重点不是你画的地方.我的分析是基于OSI模型讨论的.你的困惑来自讨论这个问题站在TCP/IP模型的角度,来判断他在OSI模型的归属.其实两个模型的对应本身仅是一个参考,方便理解.就象冯-诺伊曼机是现代计算机的理论指导一样,虽然我们可以把现代计算机都称作冯-诺伊曼机,但两者组成的对应关系仅是一个参考.
[ 本帖最后由 loopylf 于 2007-4-21 19:43 编辑 ]
zooyo
发表于 2007-4-21 21:43:54
我个人偏向于ARP属于网络层,大家再讨论。
vAnA
发表于 2007-4-21 22:05:02
:L 强,精华贴,学习了