谢谢您的帮助!
#1 楼
接收者必须查看以太网帧来决定其内容,这些内容可能是DECnet,Appletalk或其他很多东西-Internet协议只是在以太网之上运行的许多协议之一。当以太网在设计中,未来可能存在的协议一点也不明显,赢家通吃的效应显然没有那么大。以太网的一个主要目标是无处不在-为了便宜,它必须无处不在,因此它被设计成在内容上是完全中立的。
这也是分离以太网的基本思想。层:每一层的代码都不会在内容内部查找,它在外部具有标签,其中说明了其中包含的内容以及寻址所需的内容。例如,以太网帧可能会说“包含IP”。 IP报头在其有效载荷内部具有一个标有“包含UDP”的标签。 UDP标头显示“包含DNS”。 DNS程序负责决定如何处理。如果您不这样做,那么您至少在下层重复上层代码的至少一部分。 (或者,需要较低层的某种机制来询问较高层“此数据包是您的包吗?”。)而且,更糟糕的是,这将较低层限制为与较低层一起使用的较高层实施者知道并关心。我向您保证,以太网设计人员对IPv6并不了解,而分层是允许轻松开发新协议的原因。
那些痴迷于几个字节的人通常在原始协议上写协议以太网的顶部,本质上以我们可能使用UDP的方式使用它。大多数人肯定会后悔,后来在需要诸如端口或可靠的有序双向字节流之类的功能时转换为TCP或UDP。
评论
谢谢您的回答!很好的解释,并且在阅读您的解释后,点击了EtherType的想法。
–nvrMoar
20-4-17上午7:43
#2 楼
这是一个有很多历史的有趣问题。最初,EtherType字段指示帧的长度;不是有效载荷的类型。相关的Wikipedia文章包含了带有参考的很好的解释。MPLS是协议的示例,该协议缺少指示有效负载类型的字段。这具有重要的后果!尽管MPLS LSP两端的设备应该知道有效负载的类型-由于MPLS LSP的信令方式,传输设备或P节点却不知道。
MPLS P节点必须知道猜测某些操作(例如等价多路径路由)的有效负载类型。当该猜测是错误的时,这可能会产生后果。例如,MPLS路由器通常会将以6开头的MAC地址的以太网伪线流量误解为IPv6数据包,而不是以太网帧。这可能会导致流中的数据包意外重新排序,这对于不能很好地承受重新排序的应用程序可能会表现出真正的问题! MPLS网络可用于允许MPLS ECMP哈希,而无需显式通知有效负载类型,例如流感知传输和熵标签。
评论
简要说明一下:由于帧长度字段在构建和传输以太网帧方面是完全多余的,因此将该字段重新定义为EtherType =下一层协议(对于0x0600或更高的值),这更有意义。这一步可能是以太网成功的关键决定因素之一,因为它变得与任何之上的东西兼容!
– Zac67
20-04-17在13:54
如果您要提到MPLS,那么也许您可以提到MPLS的目标不是将数据包传递到任意地址,而是建立虚拟电路,其中任何给定“电路”中的所有流量都遵循相同的路由。相同的两个终点。原则上,虚拟电路网络设备不需要了解有关单个数据包的任何信息,只需知道其所属电路的身份即可。假定这两个端点知道为什么建立电路以及如何解释数据包。
–所罗门慢
20 Apr 17 '15:28
评论
因为网络堆栈可以为发送负载的进程进行简单的查找,而不是对负载进行复杂的解析来确定负载是否是ARP,IPv4,IPX,AppleTalk,IPv6等。确定数据包头的格式
您怎么知道数据包头包含相同的信息?