问题描述
arp是在太网802.3二层协议之上的,于ip协议同级,为什么盖被称之为二层协议而不是三层协议?同理icmp是基于ip的,为什么被称为三层协议而不是四层协议?
补充一下:大部分朋友没有理解问题的本质,题主的意思是基于n-1层协议首部的协议为什么不被称为n层协议,很多朋友解释的是为n+1层主协议服务的辅助协议应该被称为n层协议,问题的本质是对n层协议的定义为什么会有两种理解,哪种定义更为合理
题主更倾向于第一种通过n-1定义n的归纳法定义,这种定义比较严谨,不会产生歧义。第二种定义偏向实用主义,定义n层协议前必须对n+1层协议的主协议达成共识,实例化来说,你必须认定ip是层3主协议,才能确定arp是层2协议。这不太符合逻辑,有些因果倒置。
问题主一个问题,ARP协议可以跨网段吗?
很显然,ARP无法跨越网段的边界束缚。既然不能跨网段,那还谈什么三层协议。
如果ARP可以跨越网段,那路由器存在还要什么意义?依靠ARP可以发现互联网上任何主机的MAC地址,压根不需要IP地址就可以通信,压根也不需要TCP/IP协议。
可是TCP/IP设计就是为了将庞大的网络分割成一个小小的网段,依靠路由器将一个个小小的网段连接起来,凭借着IP地址来找到最终的目的地。
一般来说,只要不是站在IP协议之上的协议,比如ARP、PPPoE、802.1x都是二层协议。
而站在IP协议之上的协议,比如ICMP、OSPF、BGP,都可以统称为网络层协议。
如果把ICMP协议划分为应用层协议也没有问题,因为Ping程序依赖于ICMP,而Ping恰恰就是应用程序。
如果把BGP协议细分为应用层协议,同样也没有问题,因为BGP最终的目的是用来运输一种特殊的货物——路由表。
大二层网络
大二层网络之间的逻辑连接,可能跨越互联网,意味着ARP协议跨越沿着逻辑连接双向流动,ARP跨越了互联网,那么ARP还是二层协议吗?
是的,依然还是二层协议。因为ARP自始至终没有离开广播域的限制。这就好比无论孙悟空翻多少个跟头,最终也逃不了如来佛的手掌。
PPPoE over L2TP
那PPPoE可以借助L2TP的传输,可以跨越很多网段,甚至可以跨越Internet,那么PPPoE还是二层协议吗?
依然是二层协议,之所以可以跨越很多网段,是因为L2TP有了IP的支撑。
ARP之所以能够跨越很多网段,是因为VxLAN底层有了IP的支撑。
归纳一下
一个协议是否网络层以上,还是网络层以下,主要看底层是否有IP的支撑。
没有IP支撑的,属于链路层。有了IP层支撑的,至少算网络层、或以上。
五一节期间,希望朋友们好好陪伴自己的家人,过一个难忘的节日。如果没有特殊原因,五一节日期间公众号不再更新文章,过完节日之后,涛声依旧。