链路层解决区域网的通信问题。由于不同的区域网使用不同的技术,导致区域网之间不能互联。于是需要网路层建立一层统一的抽象层,抹去底层差异。

假设用一台路由器连接两个区域网,它们的链路层协议不同。那么路由器需要同时支持这两种链路层协议才可以。

问题来了,

1,以上理解有没有错误?

2,如果没错,现实当中链路层的技术的多样性怎样?如果很多的话路由器岂不是要实现一堆?

3,路由器怎么知道接入的区域网是用什么技术的?


  1. 理解并没有什么错误,

2. 如果是家用的小型路由器,其实仅仅支持主流的链路层,比如标准的乙太网,WiFi,和光纤,其余的一些链路层协议可以支持,比如openwrt这样的路由,可以通过打补丁,增设硬体介面扩展支持。家用的小型路由系统是比较轻量级的。如果是商业路由的化,那么确实是包含了很多链路层的协议,不过默认都是关闭的,也就是仅仅支持(太老的也不支持了),并不是被使用状态的。

3. 要配置的呀,出现这样场景基本都是线缆已经确定好了,存在异构型,然后做一些配置,比如说路由层面,或者建隧道(tunnel)做转换之类的。当配置好之后,比如说通过路由方法的化,那么在二层数据帧中会有一个Type栏位指示上层,二层(即数据链路层)采用的是什么协议,路由器根据协议类型进行运作,这个Type栏位就叫做SAP(service access point),层与层之间的交互都是采用这个机制。

--------------------------------------------------------------------

从这个问题中感觉到,好像对于互联网这样的设计,感觉到很冗余,设计有缺陷的感觉。这里补充提到一些背景,可以去查查,可能会对网路如何是这样设计,以及其理念有一些提高(或者说以后越学越多,可能理解会更深一些)

这样设计的源头还是在网路分层概念的时候,一开始阿帕网是没有一个明确分层的,或者说分层概念也是伴随著阿帕网起来的。这个时候,有一篇paper叫做《END-TO-END ARGUMENT IN SYSTEM DESIGN》,提出了End-To-End这种思考,这种思考对于当下网路架构的形成很有影响,包含了网路分层,协议间的兼容,以及安全部分。在这样的场景下,RFC 3724实际上比较有代表性,其引导了网路中瘦腰的特性(即网路层只有IP,其余上下层都往这一层汇总),以及这样引导出了当下网路的架构。当时IP这种结合这种瘦腰的特性,把当时其他在网路层的协议都打败了。当时这种瘦腰特性有很多的好处,当然,科技进步到了今日,瘦腰特性也有一些弊端限制了当下网路的发展,所以针对于这一点有很多改进,比如说NDN之类的网路。另外其实也可以读读RFC 1958,即然思考到题主这样的问题,其实可以进一步思考下,网路分层的理念和网路协议设计的理念。


题主的理解犯了个小错误。从结果反推原因。

数据链路层和网路层,最初可并不是为了抹去差异而存在的。需知,最早的网路,局限于大学实验室,它就是很小的,这个时候就已经有了诸多的数据链路层协议,它存在的意义是——控制物理链路上的数据传输。因为物理链路上传输的是电信号光信号,一旦链路质量不稳定,就会影响上层的数据传输。

以你熟悉的路由器为例,路由器上的乙太网介面的状态有两个——物理层状态和链路层状态,只有链路层协议通知路由器,"这条链路我试过了,可以用。"路由器才会激活这个介面,数据才能转发。可以说,设计数据链路层,本质上是因为物理链路上的电信号,光信号不可控,因而需要一种方式确保数据在物理链路上正确传输,始终是工作在一条链路的两端的。

至于会有这么多不同的数据链路层标准和协议,也是因为这个东西也是在很长的时间里慢慢发展的,有很多人和很多公司曾经参与其中,网路层并不是为了屏蔽差异而出现的,这只是一个无奈的结果而已。

数据链路层工作在一条链路两端,交换机设备扩展了数据链路层的工作范围,但仍然有力所不能及的地方,数据链路层的诸多协议,标准,还是太底层了,碰到范围比较大的网路,或者多个网路互连,就不行了,比如,你根本不能想像两台主机直接通过无限扩展的数据链路层网路,跨越国家,大洋去通信,数据链路层只能照顾到物理链路两端,更远距离更大范围的网路,它无能为力。

网路层是为了更远距离的传输而出现的,先行者门最终把网路层设计为一个无状态的网路,在这之上叠加TCP/UDP来实现远距离,大范围的主机/应用之间的可靠或者快速通信

抹去底层差异,只是个结果,而不是出发点。

回到题主的问题上来——

第一个问题,上面回答了。

第二个问题,是的,没办法,实际上路由器就是支持很多很多的链路层协议。但实际上,随著时间的推移,市场的力量会淘汰掉大部分技术,只留下几个,比如乙太网。

第三个问题,任何链路在激活之前,链路层协议都会有控制信令交互,符合协议规定的交互过程结束之后,路由器自然就知道数据链路层是什么

最后,区域网不等于数据链路层,区域网只是个网路范围名词。


你的理解没有错。

首先我们分析下物理层,数据链路层,网路层:

物理层发送电信号或者光信号;

数据链路层是帧封装;

网路层是是包封装;

1.在数据链路层,协商不同的协议,需要不同的方式。

因为这些帧头都会有个协商沟通过程,告知对端我们是什么样的数据封装方式调制解调。如双方需要一致的速率,双工模式,才能准确同步,之后才能成功交互信息。

帧中继的帧:

PPP帧:

在互联网起初,真的是一种协议一种卡。插的满当当的,后面大家为了节能减排,统一江湖,就将这些协议整合起来了。如思科的E1介面卡,可以支持PPP,帧中继,X.25等链路协议。一卡通用,只要打个命令可以告知路由器用什么链路协议发送了。

2.如果没错,现实当中链路层的技术的多样性怎样?如果很多的话路由器岂不是要实现一堆?

链路层的多样性还是很多的,但是在常见的路由器只管IP网路层是统一的,下面的链路层协议你想用哪个就哪个。

因为OSI模型里面,数据不仅可以由下到上,也可以由上到下,比如不一定用IP方式来实现也是可以啊,只要大家遵守相应的规则协议,一样可以向上向下传输数据,相当于再做一种新的OSI方案。只是这个坑要填很久。

3.路由器怎么知道接入是什么技术?

这个问题查看路由器的运行配置就知道。像这些指定数据链路层工作的路由器,是有相应的配置的命令的。毕竟这种东西不像MAC一样可以自动协商。实在不行,可以查询它的介面卡是什么类型的就可知道。

题外话:现在的网路技术基本都是管控MAC二层和IP层,但是在工业的网路上,如can汇流排,通过IP去控制,就需要相应的协议转换。这样的协议就是IP包进来,然后将IP包payload取出来,然后将payload换成CAN数据帧,再通过物理层发送出去,这样就完成单向的协议转换。反之也是可以的。

##删除了一些错别字。


1,没有错误

2,当今链路层有乙太网,有pon网,有sdh网等等

3,路由器根据自己的硬体板卡知道自己接入了哪种网路。网路层的数据包下发到相应板卡的相应介面上,链路层就将数据包封装成自己的帧格式发送出去。


1 有错误,数据的流向是从下向上的,路由器属于三层设备,最重要的是IP的特性,只要数据链路通了,才能使用,举个例子,你用WIFI,网线,手机流量是不同的物理层,但是不影响数据链路和网路层

2、数据链路层主要有(1)Point-to-Point Protocal; PPP点到点、(2) Ethernet; 乙太网、(3) High-Level Data Link Control Protocal;HDLC高级链路控制协议 、(4) Frame Relay; 帧中继、(5) Asynchronous Transfer Mode;ATM

3、路由器是网路层设备,他的功能就是根据路由表转发数据包,通常就是RIP OSPF.


1. 理解没错,或者说我也是这么理解,哈哈

2. 链路层的多样性还是存在的,举个例子。公司里思科路由器2911和2811,机框是就两三个网口,另外就是四个板块介面。

我接的板卡,一个是八爪线(就是8根console线组成的板卡),一个是交换板块(用来接ethernet),一个是e1板卡(接普通电话机),一个是t1板块(也是接普通电话),e1/t1适用国家不一样,不过都是接普通电话的,非ip电话。

3. 如果对voice稍微了解的话,就知道电话通信技术的几个标准,pstn—isdn—voip,对应三个时代。

其中pstn、isdn物理上都是使用e1/t1口,但我可以通过命令改变它们链路层协议为pstn或者isdn。

另外路由器上那么多板卡,怎么知道使用哪种链路层协议?

比如交换板块和e1板卡,路由器既然支持,通过板卡与路由器介面交换数据是可以识别的。

就像你的电脑usb口接的是硬碟,手机,还是其他啥。


你的理解本质有错误,模型只是供我们理解而不是规定。

路由器是三层设备,交换机是二层设备那么它们怎么能相提并论呢?

三层包括二层,所以就相当于路由器本来就有二层功能所以没必要钻牛角尖。


推荐阅读:
相关文章