链路层和局域网
第一部分:链路层概述
数据链路层负责将网络层数据报通过链路从一个节点传输到物理上相邻的下一个节点。
举个例子:应用层就相当于通信,假设北京的A想和厦门的B通信。门口的管家(socket)把信寄出去,邮递员说我一定送到(TCP)。邮局(网络层)通过分析A到B家的路径(网络层路径选择),然后在北京至上海路径使用飞机运(链路层的协议,交通方式就相当于链路层),上海到厦门用货轮运(不同的链路层协议)。
节点:主机、路由器、交换机、wifi接入点
链路:沿着通信路径连接相邻节点的通信信道
帧:数据链路层的分组单元
数据报在不同的链路上可能会由不同的链路层协议处理:
例如:第一段链路上由PPP处理,最后一段链路上由以太网处理,中间链路上由广域链路层协议处理
链路层提供的服务
数据链路层在物理层提供的服务的基础上向网络层提供服务,主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能 出错的物理连接改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。它一般包括 3 种基本服务:无确定的无连接服务、有确定的有连接服务、有确定的无连接服务(不存在无确定的有连接服务)。
1)无确认的无连接服务。源机器发送数据帧时不需要建立连接,目的机器收到数据帧也不需要确认。对于丢失的帧,数据链路层不负责交给上层处理。适用于实时通讯和误码率较低的通信信道,如以太网。
2)有确认的无连接服务。源机器发送数据帧时不需要建立连接,目的机器收到数据帧必须确认。源机器在规定时间内没有收到确认数据帧就重传丢失的数据帧,以提高传输地可靠性。通常用于误码率较高的通信信道,如无线通信。
3)有确认的面向连接的服务。帧传输过程分为三步:建立数据链路、传输帧、释放数据链路。目的机器对于收到的每一帧都要给出确认,源机器收到确认后才能发送下一帧,因此服务的可靠性最高。该服务适用于通信要求较高的场合。
成帧
链路层会将网络层数据报进行封装,将数据加上头部和尾部封装成数据帧。
一个帧是由一个数据字段和若干首部字段组成。网络层数据报插在数据字段中。
链路访问
共享介质的信道访问。
帧头部用MAC地址标识源和目的(不同于IP地址)。
可靠传递
链路层的可靠交付服务很少用于误码率低的链路(光纤、双绞线链路。会产生不必要的开销)用于误码率高的链路(无线链路)。
流量控制
在相邻的收发节点间限制流量。
差错检测和差错纠正
由信号衰减和电磁干扰噪声导致出错。接收方检测到错误的存在就给发送方发送信号要求重传或丢弃该数据帧。
另一种方式是接收方检测和纠正帧中的错误,不用发送方重传。
半双工和全双工
半双工时,链路两端的节点都能传输分组,但不能同时传输
链路层的实现
在设备(主机、路由器、交换机)中存在网络适配器(也叫网卡NIC),链路层的控制器就在网络适配器中。
发送方NIC:在一个帧内封装数据报,然后增加差错检测位,可靠交付和流量检测等。
接收方NIC:查找错误,可靠交付、流量控制,取出数据报交给网络层。
此处:帧的接收、发送、检错、丢弃是自主进行的,但是向上提交数据时是需要节点干预的。(得问问网络层收不收,这样链路层不会侵犯到网络层或者更高层的功能)
第二部分:差错检测模型
检错编码:通过一定的编码和解码,能够在接收端解码时检查出传输的错误,但不能纠正错误。常见的检错编码具有有奇偶校验码和循环冗余校验码(CRC).
奇偶校验码:
在信息码后面加一位校验码,分奇校验和偶校验。
奇校验:添加以为校验码之后,保持整个码字里面的 1 的个数是奇数。接收端收到数据之后就校验数据里面 1 的个数,如果检查到奇数个 1 ,那么认为传输过程中没有出错,如果检查到偶数个 1 ,则说明传输过程中数据发生了改变,要求重发。
偶校验:添加一位校验码之后,保持整个码字里面的 1 的个数是偶数。接收端收到数据之后就校验数据里面 1 的个数,如果检查到偶数个 1 ,那么认为传输过程中没有出错,如果检查到奇数个 1 ,则说明传输过程中数据发生了改变,要求重发。
当数据中有一位发生变化时,奇偶校验码能够检测出来,但是不知道是哪一位发生了错误。如果数据中有两位数据发生了编码,那么奇偶校验码检测不到数据出错。所以它的检错能力是有限的。
奇偶校验码在实际使用中又分为垂直奇偶校验、水平奇偶校验与水平垂直奇偶校验。上述内容属于水平奇偶校验。
特别注意:仅用于TCP、UDP和IPv4协议中
循环冗余校验码(CRC):
CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数(生成多项式G(x))。得到的余数作为校验数据附加到原数据后面。
检错方式:将接受到的 CRC 码与 G(x)【接收方已知】相除,如果余数为 0 ,那么数据正确。如果余数不为 0 ,那么可以判断出错的位置。
CRC码进行检错的重要特征
- 具有 r 检测位的多项式能够检测出所有小于或者等于 r 的突发错误
- 注意:
- 循环冗余码仅能做到无差错接受。
- CRC 具有纠错功能。但是在计算机网络中一般发现错误直接重传,因此在默认情况下,CRC为检错码而不是纠错码。
第三部分:多路访问链路和协议
两种链路:
1、点到点链路:单一的发送方和单一的接收方
2、广播链路(共享线路和介质):
- 多个发送方和接收方连接到相同的、单个共享广播信道
Q:任何协调这些发送方和接收节点之间对同一个广播信道的访问?
A:这就是多路访问问题,使用下面的多路访问协议。 - 当有多个节点同时传输时,传输的帧会相互碰撞导致都不能被接收。
多路访问协议(MAP)
由上面的问题可知,设计这个协议是为了解决共享信道的访问控制问题。
特别注意:有关共享信道的通信(协商)需使用信道本身。没有额外的信道来进行协调
在设计多路访问协议的时候,我们要注意:保证充分利用信道!、保证公平性!
多路访问协议分为3种类型:信道划分协议、随机接入协议、轮流协议。
信道划分协议:将信道分成小片。将片分给节点使用,防止碰撞。
随机访问协议:信道没有被分割,重点在如何从碰撞中恢复
轮流协议:节点轮流转送来避免碰撞。
信道划分协议
之前谈到的时分多路复用和频分多路复用就是两种划分信道广播宽带的技术。
TDM时分多路复用:
TDM将时间划分为时间帧,并进一步划分每个时间帧为N个时隙,然后把每个时隙分配各N个结点中的一个,无论何时有结点在有分组要发送时,他在循环的TDM帧中指派给他的时隙内传输分组比特。
简单来说:当某个节点要传输分组的时候,让它加入一个圆桌(即循环访问信道)中。圆桌按照规定的时间(时隙)让每个在桌子上的节点传输分组,时间到了就换下一个。
注意的是,圆桌的位子是确定的,每个客人上桌前就定好了,即使有客人下桌了,这个位置还是占用传输时间。如下图:
标有2的时隙就是一位“桌上的客人”的传输时间。
TDM消除了碰撞个且非常公平:每个结点在每个帧时间内得到了专用的传输速率R/Nbps的平均速率,然而它有两个主要缺陷:首先,结点被限制于R/Nbps的平均速率,即使当它是唯一有分组要发送的结点时。其次,结点必须总是等待他在传输序列中的轮次 ,即使他是唯一一个有帧要发送的结点。
总结:公平但是无法充分利用信道
FDM频分多路复用:
基本和上述的TDM差不多,当频段不用的时候,该部分信道就被闲置和浪费。FDM将R bps信道划分为不同的频段(每个频道具有R/N带宽)并把每个频率分配给N个结点中的一个。
FDM具有和TDM同样的优点和缺点:它避免了碰撞,在N个结点之间公平地划分了带宽。但是他也限制了一个结点只能使用R/N的带宽,即使当他是唯一一个有分组要发送的结点时。
总结:公平但是无法充分利用信道
CDM码分多址访问:
和TDM、FDM为不同的节点分配时间和频率不同的是,CDM为节点分配的是编码。
CDMA对每一个结点分配一种不同的编码,然后每个结点用它唯一的编码来对它发送的数据进行编码。如果精心选择这些编码,就能做到使不同的结点同时传输,并且他们各自相应的接收方仍能正确接收发送方编码的数据,而不在乎其他结点的干扰传输。
总结:公平且充分利用信道
随机访问协议
在随机接入协议中,一个传输结点总是以信道的全部速率(即R bps)进行发送。当有碰撞时,涉及碰撞的每个结点反复地重发它的帧,到该帧无碰撞地通过为止。(莽就完事了)但是当一个结点经历一次碰撞时,他不必立刻重发该帧。相反,它在重发该帧前等待一个随机时延(不然,大家又挤在一起重发,疯狂打架)。涉及碰撞的每个结点独立地选择随机时延。
【等待的随机时延是以时隙为单位的】
比较常见的随机接入协议有:ALOH协议和载波侦听多路访问协议(CSMA)
时隙ALOHA
时隙的意思就是将时间分成时隙,每个时隙传一帧,节点只在时隙开始的时候传输数据(这样才能传一帧嘛)。
节点知道什么时候时隙开始,当有碰撞的时候也会被所有节点知道。(就好像大家都知道什么时候该路口可以通行,当路口通行的时候有车祸—碰撞的时候,交通广播会告诉所有节点这里有碰撞防止更大的事故发生)
注意的是:这个和TDM是不同,这里只是划分了时间,信道没有划分,大家一起挤着用。
p为概率,在每个结点中,时隙ALOHA的操作如下所示:
其中,以概率p重传,是指某结点有效地投掷一个有偏倚的硬币,硬币正面时间对应着重传,而重传出现的概率为p。 硬币反面事件对应着“跳过这个时隙,在下个时隙再掷硬币”
Q:这样做有什么坏处吗?
A:这样做的坏处在于当有多个活跃节点的时候,效率不高,因为可能会存在时隙(大家都在随机时延中)没有节点传输帧。
时隙ALOHA的工作效率:
P(一个时隙内给定节点成功概率) = P(给定节点传送) .P(没有其它节点传送 ) = p . (1-p)N-1
任意一个节点传输成功的概率为$Np.(1-p)N-1$
选择最合适p,使任意一个节点传输成功的概率最大。当N趋于无穷时,求p.(1-p*)N-1 的极限= 1/(e) = 0.386。是纯ALOHA的2倍,因为同步机制,使得发生碰撞的可能性比纯ALOHA小。
总结:也就只有0.37的效率
ALOHA
时隙ALOHA协议要求所有的结点同步他们的传输,以在每个时隙开始时开始传输。而ALOHA协议是非时隙、完全分散的协议。在纯ALOHA中,当一帧首次到达,结点立刻将该帧完整的传输进广播信道。如果一个传输的帧在一个或多个传输经历了碰撞,这个结点将立即(在完全传输完它的碰撞帧后)以概率p传输该帧,或者以概率1-p在另一个帧时间等待。
纯ALOHA的工作效率:
在任何给定的时间,一个节点传输一帧的概率是p,假设该帧在t0时刻发送,假设时间单位是一帧的发送时间。
P(t0时刻给定节点成功概率) = P(t0时刻给定节点传送) *
P(在 [t0-1,t0]没有其它节点传送 ) *
P(在 [t0,t0+1]没有其它节点传送)
= p . (1-p)N-1 . (1-p)N-1
= p . (1-p)2(N-1)
任意一个节点传输成功的概率:Np.(1-p)2^(N-1)^
纯ALOHA协议的最大效率时隙ALOHA的一半。这就是完全分散的ALOHA协议所要付出的代价。
CSMA载波侦听多路访问协议
载波侦听:一个结点在传输前先听信道,如果来自另一个结点的帧正向信道上发送,结点则等待直到检测到一小段时间没有传输,然后开始传输(先观察,等几分钟还没人通过路口,我就发车)
1坚持CSMA:我就监听一次,如果路口持续有车占用,我就一直监听到有段时间没车的时候,我再发车。如果还是不幸,和别人撞车了,我就开回去过很长时间再重新开始监听(你的机会都用了。别人也要发车的嘛)
P坚持CSMA:当一个站点要传送数据时,首先侦听信道,看是否有其他站点正在传送。如果信道正忙,它就监听直到它侦听到信道空闲时,以概率P发送数据,而以概率(1-P)延迟一段时间τ(网络中最远的端到端的传播时延),重新监听信道。
非坚持:不能充分利用信道刚刚转入空闲期的这段时间。
1坚持:容易在上述这段时间产生冲突。
P坚持:可以在一定程度上克服这些缺点,但却很难选择一个能用于各种通信量强度的P值。所以在实际网络中常选择1坚持。
冲突仍然可能发生: 信道传播时延使得两个节点可能没有侦听到对方的传输
注意:距离和传播时延在检测碰撞时起决定性作用(这就是为什么局域网LAN强调节点间的距离不能太长的原因)
具有碰撞检测的载波侦听多路访问(CSMA/CD)
碰撞检测:当一个传输结点在传输时一直在侦听此信道,如果它检测到另一个结点正在传输干扰帧,它就停止传输,在重复“侦听-当空闲时传输”循环之前等待一段随机时间。(边开车经过路口,边收听广播,当得知前方有车祸的时候,就不传输,减少信道的浪费)
发生碰撞时使用二进制指数后退算法可使碰撞结点数量较少时,时间间隔较短,当碰撞结点数量较大时,时间间隔较长。二进制指数后退算法是指当传输一个给定帧时,在该帧经历了一连串的n次碰撞后,结点随机地从中选择一个K值。因此,一个帧经历的碰撞越多,K的时间间隔越大。(车祸发生太多,就多等等吧)
强化碰撞:当发送数据的站一旦发现发生了碰撞时,除了立即停止发送数据外,还要再继续发送若干比特的人为干扰信号(jamming signal),以便让所有用户都知道现在已经发生了碰撞。(我义务传播有车祸的消息)
CSMA/CD效率:当有大量结点,且每个结点有大量的帧要发送时,帧在信道中无碰撞地传输的那部分时间在长期运行时间中所占的份额。其中dprop表示信号能量在任意两个适配器之间传播所需的最大时间。dtrans表示传输一个最大长度的以太网帧的时间
Q:发生数据帧的节点啥时候知道自己发的数据帧没有被碰撞呢?(不知道的话,就无法再次发送)
A:2t (两倍的端到端时延)以太网的端到端时延 2t 称为争用期,或碰撞窗口。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞
轮流协议
信道划分协议
- 在重负荷时,共享信道有效、公平
- 在轻负荷时效率低:信道访问延时,即使只有一个活动节点,也只能分配到1/N的带宽
随机访问协议
- 轻负荷时效率高:只有一个节点时,能充分利用信道
- 在重负荷下: 碰撞的开销
轮流协议
- 在两个方面寻求最佳的解决方案!
多路访问协议的两个理想特性是:1.当只有一个结点活跃时,该结点具有R bps的吞吐量 2.当有M个结点活跃时,每个活跃结点的吞吐量接近R/M bps。ALOHA和CSMA只满足第一个特性。而轮流协议能够满足两个特性。轮流协议中比较重要的两个协议是轮询协议和令牌传递协议
轮询协议:
要求这些结点之一要被指定为主结点。主结点以循环的方式轮询每个结点。特别是,主结点告诉每个结点能够传输的帧的最多数量。
轮询协议消除了困扰随机接入协议的碰撞和空时隙,这使得轮询取得的效率高得多。但是他也有一些缺点,第一个缺点是引入了轮询时延,即同时一个结点“它可以传输”所需的时间(只有一个结点时使得速率小于R bps)。第二个缺点是如果主结点故障,整个信道都变得不可操作。
令牌传递协议:
一个称为令牌的小的特殊帧在结点之间以某种固定的次序传递。当一个结点收到令牌时,仅当它有一些帧要发送时,他才持有这个令牌。否则,他立即向下一个结点转发该令牌。
令牌传递是分散的,并有很高的效率,但是他也有一些问题。如果一个结点故障,则会导致整个信道崩溃。或者如果一个结点偶然网际了释放令牌,则必须调用某些恢复步骤使令牌返回到循环中来。
DOCSIS:用于HFC的链路层协议(FDM,TDM,随机接入,集中分配时隙)
通过FDM将上行和下行划分为多个信道
上行信道采用TDM:分为微时隙
第四部分:交换局域网
交换机通过链路层地址而不是IP地址来转发链路层帧。
局域网
数据链路层的概念,指二层可达的网络(也就是不需要三层设备,如路由器,也能到达的网络),通俗得讲就是小范围的网络
子网
子网是网络层的概念,和局域网没有直接的关系,是把一个ip网络划分为几个小范围的网络,但是在平时不要求精确性的时候,局域网可以对应子网,也就是说,子网也是二层可达,子网之间需要三层设备
网段
是物理层的定义,使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分
1、 使用同一物理层的设备之间必然通过相同的传输介质直接相互连接,(如交叉双绞线直接连接的两台主机),是一个网段
2、两组其传输介质并非直接相连的网络设备,如果它们的传输介质通过工作在物理层的扩展设备如中继器和集线器等转接连接,则仍然被视为同一物理层中的设备,是一个网段
3、工作在数据链路层或更高层的设备如网桥、交换机、路由器等等,由它们连接起来的两组设备仍然分别处于各自独立的物理层,是两个网段总结:
在不要求精确性的情况下,子网、局域网和网段可以理解为同一个意思,但是同一个局域网/同一个子网/同一个网段和同一个网络不是同一个概念
链路层编址和ARP
主机、路由器不但具有网络层地址还具有链路层地址。
MAC地址
并非节点(主机、路由器)具有链路层地址,而是节点的适配器(网络接口)具有链路层地址(MAC)。
MAC地址的作用是标识局域网内一个帧从哪个接口到哪个物理相连的其他接口.因此,拥有多个网络接口的主机或路由器将具有与之相关联的多个链路层地址,就像他们也具有多个IP地址一样.需要注意的是,链路层交换机没有MAC地址. (因为链路层交换机是在主机和路由器之间传递数据报的,就像快递员,我们在主机和路由器之间送数据报不需要指定具体的快递员送)
MAC地址也被称为LAN地址,物理地址. (被设计成永久的)
MAC地址长度为6个字节,,共有2^48个可能的MAC地址.
MAC地址空间由IEEE统一管理.当一个公司要生产适配器的时候,他象征性的付一点钱给IEEE,买一个2^24的地址空间.IEEE固定前24位,后24位由各个公司自己生成唯一标识.
当适配器要向别的适配器传输数据报,就会把目的MAC地址封装在数据报中,然后把帧发送到局域网上。当接收适配器收到一个帧时,会先检查这个帧的MAC地址与自己的接口MAC是否一致,如果不匹配就丢弃该帧,如果匹配向上传递.这种适配是使用硬件实现的。 (这也印证了上文中说到的适配器只有收到帧再决定要不要给网络层)
FF-FF-FF-FF-FF-FF是唯一的用来广播的MAC地址
与IP地址的比较
MAC地址是平面地址,类似于身份证号
IP地址是层次地址,类似于邮政通信地址
MAC地址在不同的网络间迁移时,不会改变
IP地址在不同的网络间迁移时,需要改变以适应新的网络配置
特别注意:无线网络中进行漫游时,如果在不同的网络间切换时,改变网络设置,会导致连接中断,为维持连接正常工作,第六章将介绍无线移动管理。
ARP:地址解析协议
Q:当源想要发送数据报的时候,它只知道IP地址,不知道MAC地址(IP地址和MAC地址都要传递给它的适配器)。它是如何获取已知的IP地址主机的MAC地址呢?
A:使用ARP协议。
ARP:将32位的IP地址转换为48位的物理地址MAC。
ARP的任务是把网络层的IP地址和链路层的MAC进行转换
在发送主机的ARP模块将取在相同局域网上的任何IP地址进行输入,然后返回相应的MAC地址
DNS和ARP很相似,但是DNS和ARP的区别是DNS为因特网上的任何主机解析主机名,而ARP只为在同一个子网上的主机和路由器接口解析IP地址.
ARP的工作原理
每台主机或者路由器在它的内存中都有一张ARP表,这张表包含了IP地址到MAC地址的映射关系.
由于IP地址是可以变化的,所以ARP表中也有一个寿命(TTL)值,它指示了从表中删除每个映射的时间,一个表项的过期时间一般是20分钟
这张表不必为该子网上的每台主机和每个路由器都包含一个表项,某些可能从没进入过表,某些可能已经过期
当主机222.222.222.220要发送一个数据报,该数据报要IP寻址到本子网上另一台主机或路由器.发送主机需要拿到MAC地址然后进行发送.如果ARP表中有这一项,那么直接取即可.如果没有,那么就会发送一个ARP分组. (ARP表中有映射关系的就直接返回MAC地址。没有的话就用广播地址问一问)
一个ARP分组有几个字段,包括发送和接收IP地址和MAC地址.ARP查询分组和ARP响应分组都具有相同格式.
222.222.222.220使用MAC广播地址FF-FF-FF-FF-FF-FF向它的接口传递一个ARP查询分组,接口在链路层帧中封装这个ARP分组,用广播地址作为帧的目的地址,并将该帧传输进子网中,子网中的每个结点的接口都能收到该帧,并都把该帧中的ARP分组向上传给ARP模块,ARP检查查询分组中的目的IP地址和自己的IP是否一样,其中匹配的那一个给查询主机送回(不是广播)一个ARP响应,然后222.222.222.220更新它的ARP表并发送IP数据报,该数据报被封装在链路层帧中,且该帧的目的MAC就是对先前ARP请求进行响应的MAC地址。
==ARP协议:工作在同一个子网(不能跨路由器)ARP请求和应答被封装在帧里==(由上述可知,要知道MAC地址就必须在同一个子网里)
发送数据报到子网以外
Q:如果我就是要传输的IP地址是另一个子网的,怎么办呢?
A:使用子网和子网之间的连接路由器。例如A发送数据报到另一个子网的B就要先发到串联他们的路由器上(可能这两个子网中间隔了很多的子网,就需要很多类似的路由器)。
TIP:
- ARP查询是广播,ARP响应是标准传输
- ARP是即插即用的,不需要管理员配置
- ARP是跨越链路层和网络层边界的协议
- 当向另一个子网中发送数据时,每次都会使用ARP找到下一跳,然后一跳一次的穿过去.不能用ARP直接解析,因根本不在一个子网中
ARP报文格式如下:
局域网—以太网
作者:石岩
链接:https://www.zhihu.com/question/51295773/answer/127644619
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。1.想象你住在一个小区里,这个小区有很多栋楼,每栋楼有很多单元,每个单元有很多层,你和你的邻居之间谁也不认识谁,不知道该怎么找到对方,你们想要互相联系,只能靠写信的方式,你把信写好后交给小区的门房大爷,并且告诉他,这封信要送到1号楼1单元101,然后门房大爷负责把信送到,这个时候,整个小区可以看成一个局域网,因为大家在这个小区里使用的都是私有地址(私有IP),这个地址只有你们小区的门房大爷知道该怎么走,换个人就找不到了。
2.如果你想要给另外一个小区的某个住户写信,因为每个小区的私有地址命名方式都不一样,假设他们小区的地址是A号楼东座302,这个时候你把信交给门房大爷,他就傻眼了,因为他不认识,所以拒绝为你送信。当然还是有解决方式的,那就是把附近小区的门房大爷全都叫到一块大家开个会,给所有门房大爷统一按照一种方式来命名,比如叫天通苑张大爷、回龙观王大爷等等,这个名字就是公有地址(公有IP),这个名字在所有门房大爷中是唯一的,一人一个不能重名,这个时候门房大爷之间就互相认识了,以后你再想给另外一个小区的住户写信,就需要告诉你们小区的门房大爷,“麻烦您把这封信交给天通苑的张大爷,再让他转交给A号楼东座302”。这个时候,附近这些小区就形成了一个广域网,广域网内包含很多个小区(局域网),小区(局域网)和小区(局域网)之间想要互相通信,就必须靠各自的门房大爷。
3.过了段时间大家觉得这样还是很不爽,干脆把全世界的门房大爷都交到一块开个会吧,以后全世界的门房大爷们都统一起一个唯一的名字,这样全世界的人就可以自由通信了,这就叫Internet/互联网。可以说Internet/互联网是最大的广域网,但并不是每个广域网都叫**Internet/互联网。
4.**一些特殊需求:你就是想要和天通苑那个A号楼东座302直接通信,不想通过门房大爷,所以你在你家和他家之间拉了条钢丝(专线),你把信写好以后吊在篮子里直接给他送了过去,这种方式效率很快,也很安全,但是成本也很高。或者你可以雇一个专职通信员(VPN),他只负责给你送信,信一直放在他身上不需要倒手,由他去向门房大爷问路,并且亲自送过去,这样安全了很多,当然成本同样很高。
**5.**再来说一下“广域网由交换机连接”和“广域网需要路由交换和分组转发”这两句话。交换机的功能可以看成是小区和小区之间的路,有些小区之间只有一条路通着,有些小区之间可能有好几条路,这些路有的远有的近。而门房大爷的功能其实就是路由器(严谨的说其实不一定,因为现在具备路由功能的设备很多,不一定是路由器),也就是负责找路,只有他知道小区和小区之间的路怎么走,哪条路最近。所以说广域网(附近多个小区)有交换机(路)连接,并且广域网(附近多个小区)需要路由(门房大爷)选择(走哪条路)和分组转发(把不同的信交个不同的人)
- 共享式以太网(共享广播链路)
- 交换式以太网(完全由交换机组建,主机直接连到交换机,链路是点对点的)
以太网Ethernet的核心的技术就是载波侦听访问协议CSMA。根据上述CSMA的分析,我们可以知道以太网上的适配器会有争用期长度。
以太网在发送数据时,若前 64 字节没有发生碰撞,则后续的数据就不会发生碰撞。(在争用期内可以发送512个bit)
同理:最短有效帧长(还是依循CSMA协议)
如果发生碰撞,就一定是在发送的前 64 字节之内。
由于一检测到碰撞就立即中止发送,这时已经发送出去的数据一定小于 64 字节。
以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。
以太网的帧结构
数据字段:46-1500字节 承载IP数据报。以太网的最大传输单元是1500字节,超过则需要将数据报分片
目的地址:6字节 包含目的适配器的MAC四肢
源地址:6字节 包含传输该帧到局域网上的适配器的MAC地址。
类型字段: 2字节 类型字段允许以太网复用多种网络层协议(即主机能够使用除了IP外的其他网络层协议)
CRC: 4字节 使得接受适配器检测帧中是否引入了差错
前同步码:8字节 前7个字节都是10101010,用来唤醒接收适配器,并将它们的时钟和发送方同步。最后一个字节是10101011,最后两位11警告目的适配器。
以太网提供的服务
以太网面向无连接,都向网络层提供不可靠服务.当使用CRC检测到帧错误后,它只是简单的丢掉,不会确认重传
- 无连接服务: 在送适配器和接收适配器之间不需要握手
- 不可靠服务: 接收适配器不发送确认帧或否认帧给发送方
Q:如果以太网因为丢掉了一个帧而产生的间隙,接收方主机会知道这个间隙吗?
A:取决于使用的运输层协议。如果是UDP的话,会。如果是TCP的话,不会。TCP协议会让发送方再发送一次。(注意,这里并不是意味着以太网会重传数据,以太网根本只会把TCP重传的数据当作新的数据来传。)
CDMA/CD在以太网中的使用
适配器收到来自网络层的数据报,创建帧
若适配器检测到信道空闲(在96bit时间内没有信号能量进入信道),则开始传输帧;若检测到信道忙,就开始等待,直到信道空闲再开始传输该帧
若适配器传输了整个帧而没有检测到其它适配器的传输,则该适配器完成该帧的传输
若适配器在传输时检测到其它适配器也在传输,则停止传输,发送一个48bit的拥塞信号
中止传输后,适配器进入指数回退阶段,在经历第n次碰撞后,适配器随机从{0,1,2,…,2m - 1}中选择K值,其中m=min{n,10}。适配器在等待 K·512比特时间后,返回第2步
指数回退算法
目的: 适配器重传时试图估计正确的负载
重载: 随机等待的时间可能会更长
第一次碰撞: 从 {0,1}中选择K; 延迟是 K· 512 比特传输时间
第二次碰撞后: 从 {0,1,2, 3}中选择K
第十次碰撞后: 从 {0,1,2,3,4,…,1023}中选择K
重要特性
使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。
每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率。
以太网的效率
链路层交换机
交换机的任务是接收入链路层帧并将它们转发到出链路。交换机自身对子网中的主机和路由器是透明的。在MAC层实现LAN互连。(默默无闻的快递员)
交换机的工作原理
不断监听各接口是否有信号
收到无差错的帧则缓存,反之将差错帧丢弃
若所收帧的目的MAC地址属另一网段,则通过站表决定向何接口转发
交换机不转发同一网段内通信的帧
交换机不修改所转发的帧的源地址和目的地址
交换机一个接口就是一个网段
交换机转发和过滤
过滤是决定一个帧应该转发到某个接口还是应当将其丢弃的交换机功能. **
转发是决定一个帧应该被导向哪个接口并且导向这个接口的功能. **
转发和过滤通过交换机表来完成
交换机表项有:
- MAC地址
- 通向该MAC地址的接口号
- 表项放在表中的时间(TTL有个设定的时间,到时间就把老的表项删除)
交换机转发的分组和路由器不一样**,交换机转发的分组基于MAC地址**
当一个目的地址发来时,交换机做这样的处理:
- 表中没有该表项时,交换机广播(除了来源接口)
- 查表得来源接口和目的接口一样,交换机丢弃分组(已经在包含目的地的局域网网段广播过了)
- 查表得有一个表项匹配,且不是来源接口,交换机转发分组过去.
流量隔离
交换机将子网分成了LAN网段
自学习、即插即用
交换机是这样自学习的:
- 交换机初始为空
- 每个入帧到达,交换机会存储1.该帧源地址2.该帧到达的接口3.当前时间
- 如果过了老化期后,交换机没有收到同一个源地址的帧,交换机就删除这个表项.(防止接口上的一台PC被另一个替换)
交换机是即插即用的;是双工的,任何交换机接口能够同时发送和接收
链路层交换机的性质
交换机在局域网内部。路由器链接局域网。在局域网内,每个主机的IP与掩码进行and算法后,地址都是一样的,这个也是对外的唯一地址。
交换机的几个优点:
- 消除碰撞:使用交换机的局域网没有因碰撞浪费的带宽.交换机缓存帧,并且同一时刻只发一个.最大聚合带宽是所有接口之和
- 异质的链路:交换机将链路彼此隔离,提高了可靠性
- 管理:交换机易于进行网络管理,流量隔离
交换机的缺点:
- 要接收和转发就增加了时延
- MAC子层没有流量控制功能,网络负荷重时,交换机缓存空间可能发生溢出,产生帧丢失现象
- 出现广播风暴。交换机只适合用户少于几百个和通信量不太大的局域网,否则有时会因传播过多广播信息而产生网络拥塞
TIP:交换机毒化
- 攻击者向交换机发送大量具有不同源MAC地址的分组,用伪造表项填满交换机表项.让正常的分组没办法传输,交换机只能广播大部分的帧,这些帧能够由嗅探器俘获到
交换机与路由器比较
两者都是存储转发设备
- 路由器:网络层设备 (检查网络层头部)
- 交换机是链路层设备
路由器维护路由表,实现路由算法。
交换机维护交换表,实现MAC地址的过滤和学习算法。
路由器 | 交换机 | |
---|---|---|
工作层次 | 网络层 | 数据链路层 |
转发依据 | IP地址 | Mac地址 |
功能 | 连接不同的网络 | 连接局域网中的电脑 |
宽带影响 | 共享宽带 | 独享宽带 |
交换机最大的好处是快速,路由器最大的好处是控制能力强。
路由器是连接不同的网段的,负责将局域网连接到广域网和互联网中,并找到网络中数据传输最合适的路径。大家通过同一个路由器上网共用一个宽带,上网要相互影响。
简单的说路由器专管入网,交换机只管配送,路由就是给你找路让你上网的,交换机只负责开门,交换机上面要没有路由你是上不了网的。
交换机的优点和缺点
优点 :
- 即插即用
- 具有相对较高的分组过滤转发速率
缺点:
- 大型交换网络要求主机和路由器上有大的ARP表,这将生成可观的ARP流量和处理量.
- 交换机对于广播风暴不提供任何保护措施,如果主机出故障不停广播帧,交换机会转发所有帧,让以太网崩溃
路由器的优点和缺点
优点:
- 路由器没有生成树限制,所以路由器允许以丰富的拓扑结构构建因特网
- 路由器对第二层的广播风暴提供了防火墙保护
缺点:
- 不是即插即用的
- 处理分组时间长
集线器和交换机的区别
交换机又称交换式集线器,它们俩很相似,都是基于MAC识别的,但是又有本质上的区别。
交换机 | 集线器 | |
---|---|---|
工作层次 | 数据链路层 | 物理层 |
宽带影响 | 独享 | 共享 |
数据传输 | 有目的发送 | 广播发送 |
传输模式 | 全双工或半双工 | 半双工 |
具体解释:
数据传输:集线器工作的时候,如果局域网中的一台电脑要发送消息,则局域网内的所有电脑都可以接收到这个消息,安全性较差,而且每一次只能有一个发送,只有这个发送完毕其他电脑才能再发送,这称为半双工模式。而交换机有“记忆功能”,它能根据相应的MAC地址直接有目的的发送到目标电脑。但是如果向一台新的电脑发送消息,那么传输方式也将是广播,只有找到这台电脑, 并记住它的MAC地址后,以后才能直接发送给它。通过交换机连接的电脑可以同时发送消息互不影响,就像我们平时打电话一样,这称为全双工模式,传输速率比集线器大大提高。
宽带占用上:通过集线器,所有的电脑都共享一个宽带,如果宽带是100M,有5台电脑,则每台电脑只有20M;如果通过交换机,则所有的电脑都是100M。
通过比较可以发现,交换机与集线器相比有很大优势,所以现在基本上都用交换机,集线器已经渐渐被淘汰了。
路由器:(Router)是连接因特网中各局域网、广域网的设备。在路由器中记录着路由表,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号。发生在网络层。
交换机:(Switch)是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路,把传输的信息送到符合要求的相应路由上。发生在数据链路层。
集线器:(Hub)是指将多条以太网双绞线或光纤集合连接在同一段物理介质下的设备。发生在物理层。
虚拟局域网VLAN
虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。
特征
1、局域网交换机是组建虚拟局域网的核心设备。
2、组成逻辑工作组的各结点不受物理位置的限制,换言之同一逻辑工作组的成员不一定要连接在同一个物理网段上。
3、当一个结点从一个逻辑工作组转移到另一个逻辑工作组时,只需要通过软件设定,而不需要改变它在网络中的物理位置。(软件告诉局域网交换机:属于你的节点在哪儿哪儿)
构建方式
基于端口的虚拟局域网: 交换机端口被分成多组(由交换机管理软件完成)以至于单个物理交换机可以被划分为多个虚拟交换机。
流量隔离: 来自1-8号端口的帧仅能发送到1-8端口
也可不基于交换机的端口来定义VLAN,而基于各端点的MAC地址定义VLAN
动态的成员管理: 端口可以在VALN之间动态分配
VLANS之间的转发: 通过路由完成转发(就像使用单独的交换机一样)
Q:那我想要跨交换机实现VLAN呢?
A:可以使用干线端口。该干线端口属于所有VLAN,发送到任何VLAN的帧经过干线链路转发到其他交换机上。
第五部分:PPP:点对点协议
PPP协议功能
(1) 简单:在同一条物理链路上进行点对点的数据传输,对数据链路层的帧不进行纠错,不需要序号,不需要流量控制。
(2) 封装成帧:加入帧界定符。
(3) 透明性:字节填充法。
(4) 多种网络层协议:在同一条物理链路上同时支持多种网络层协议(如IP和IPX等)的运行。
(5) 多种链路类型:PPP必须能够在多种类型的链路上运行,例如串行或并行链路。
(6) 差错检测:接收方收到一个帧后进行CRC检验,若正确就收下这个帧,反之则丢弃。
(7) 检测连接状态:自动检测链路是否处于正常工作状态。
PPP不要求实现
1、差错纠正
2、流量控制
3、有序
4、多点链路 (如:轮询)
错误恢复,流量控制,数据排序交给上层处理