以太网
以太网作为局域网最重要的技术,它起初是基于最简单的总线拓扑结构。
起步阶段
- 始于1970年代早期的XEROX PARC
- 第一代以太网最多可以使用最长1000米、带宽为2.94Mbps的电缆连接256
台计算机 - IEEE认可了由Xerox-Digital-Intel联盟提出的的10 Mbps以太网规范
基本部件
- 以太网网线 – 物理介质
- CSMA/CD – 对传输介质进行并发访问和碰撞控制的框架结构
- 数据以以太网数据包的形式发送,也就是我们通常说的“帧”
1.基本原则
数据包通过被称为“以太”的总线进行传输,每个数据包均被发送至所有入网计算机,但是只有目标计算机才做进一步处理。
以太网是一种共享介质的局域网技术,多个站点连接到一个共享介质上,同一时间只能有一个站点发送数据,这种共享介质的通信方式必然存在一个冲突的问题,如何检测链路是否空闲,站点能否发送数据是共享链路必须解决的问题。
这种同一链路连接多个终端,就是多路访问。多路访问控制有多种协议,如随机访问控制协议、受控访问控制协议、通道化协议。
- 随机访问控制协议
随机访问控制协议中,所有连接在共享介质上的终端,都具有平等的发送数据的概率。 - 受控访问控制协议
受控访问控制协议是一种轮询机制,通过轮询来控制哪个站点来发送数据。 - 通道化协议
通道化协议是一种复用技术,日后结合移动通信的发展详细介绍。
2.多重访问算法(CSMA/CD)
以太网采用了CSMA/CD Carrier Sense Multiple Access / Collision Detection 载波侦听多路访问/冲突检测,最为多路访问控制协议。
简单来讲,我们可以将CSMA/CD比作一次交谈,在这个交谈中每个人都有说话的权利,但同时只能有一个人说话,否则会发生混乱。
每个人在说话之前,必须先听是否有别人说话(即载波侦听),这时如果有别人说话,那么只能耐心等待,等待别人结束说话,他才可以发表意见。
另外,如果在同一时间两个人都想讲话,那么此时就会出现冲突。当两个人同时讲话时,两个人都会发现他们在同一时间讲话(即冲突检测)。
这时说话立即终止,随机等待一段时间后(回退),再开始说话。这个时候第一个人开始说话,第二个人必须等待,直到第一个人说完后才可以开始说话。
下图为站点发送数据帧的流程图,当有一个站点数据帧要开始发送时,他开始检测物理介质是否空闲,这个过程称为载波侦听。如果此时介质忙,只能耐心等待,推迟数据帧的发送。
如果载波侦听过程中发现介质空闲,则必须等待IFG (Inter Frame Gap)时间让物理信道恢复平稳,同时也让接收者对接收的帧作必要的处理。等待IFG时间后开始发送数据帧。如果这时没有其他站点要发送数据则不会发生冲突,站点可以完整的把数据帧发送完毕,重复下一次发送过程,继续发送下一个数据帧。
如果同一时间有多个站点要发送数据,那么就会发生冲突.冲突发生后,发送站点要持续发送一段时间的干扰信号(jamming),发送干扰信号的目的是为了确保共享介质上的所有站点都能够检测到这时以太网上已产生了冲突。然后发送站点终止未发送完的数据帧的发送,等待一个随机时间,这就是回退(backing off),等待的这个随机时间称为回退时间(backoff time)。
回退时间是Slotime
(SlotTime 是传送最短以太网帧所需要的时间,对于10M和100 M来说为传送512bit 所需要的时间,10M是51.2微秒,100M是5.12微秒)的整数倍,回退时间的取值范围与检测到冲突的次数有关,每次检测到冲突后,r选择一个从0到2k的随机整数0<r<2k,这里k=MIN {n,10}, n为检测到冲突的次数。回退时间为r * SlotTime。
例如开始传送数据帧后,第一次检测到冲突后需要等待0-1倍SlotTime时间,第二次检测到冲突后等待0-3中随机整数个SIotime时间,以此类推。
当检测到的冲突次数超过最大重试次数(通常为16),则表示该数据帧发送失败,停止该数据帧的发送,通知网络管理员发生销误并丢弃数据帧,或者只是简单的丢弃数据帧,然后重置回退时间为0,开始冲突检测准备发送下一个数据帧。
3.碰撞检测到底怎么算?
假设局域网两端的站A和B相距1km,用同轴电缆连接。电磁波在1km电缆的传播时延为5μs。因此,A向B发送的数据在约5μs后才能传送到B。换句话说,B若在A发送的数据到达之前发送自己的帧(因为这个时候B的载波监听检测不到A发送的信息),则必然要在某个时间和A发送的帧发生碰撞。碰撞的结果是两个帧都变得无用。
在局域网的分析中,常把总线上单程端到端传播时延记为τ。那么在A发出数据之后最迟要经过多长时间才知道自己发送的数据和其他站发送的数据有没有发生碰撞?
下面对上图进行解释说明。
1.在t=0时,A发送数据,B检测信道为空闲。
2.在t=τ-δ时(τ>δ>0),A发送的数据还未到达B时,由于B检测到信道是空闲,因此B开始发送数据。
3.经过时间δ/2后,即在t=τ-δ/2时,A发送的数据和B发送的数据发生了碰撞。但是,A和B都不知道。
4.在t=τ时,即A发送的数据达到B,B检测到了碰撞,停止发送数据。
5.在t=2τ-δ时,A也检测到发生了碰撞(B发送的数据达到了A),也停止了发送数据。
由此可见,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。因此当δ–>0时,这个时间为最大值。因此,以太网端到端往返时间称为争用期。争用期又称为碰撞窗口,在这段时间内不会发生碰撞,才能保证此次发送不会碰撞。
以太网采用截断二进制指数退避算法来解决碰撞问题。也就是在第二部分提到的回退时间部分。以太网把争用期定为51.2μs,即可以发送512bit,也就是64字节。也就意味着以太网在发送数据时,如果帧的前64字节没有发生冲突,那么后续的数据就不会发生冲突。
换句话说,如果发生冲突,就一定是在发送的前64字节内。因此以太网规定,最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常终止的无效帧,收到这种帧应当立即丢弃。