基本概念
以太网
是一个局域网技术,可以进行冲突检测,载波监听,以及多路访问.其中:
冲突检测: 一个节点在发送帧时会监听链路,因此可以检测出当前正在发送的帧与其他节点发送的帧发生冲突
载波监听: 所有节点都可识别链路忙或闲,也即所有节点都可以得知链路当前状态:忙/闲
多路访问: 多个节点可以共享一条链路.
10/100/1000Mbps
10Mbps以太网:通常采用多路访问模式,即多个节点共享一条链路,
100Mbps以太网或者更高:被设计成全双工的点到点的配置.此时可以会采用星型拓扑结构.
总线型拓扑结构
收发器: 是一个直接连接在以太网上的设备,另一端连接在以太网适配器(网络适配器)上,可用于:
检测链路何时空闲
发送输出信号,接受输入信号。
以太网段: 多个节点通过收发器链接在链路上,就组成了一个以太网段。如图:
中继器: 用于将多个以太网段链接在一起,同时将来自一个以太网段的数字信号转发到另一个以太网段.
总线性拓扑结构图:
星型拓扑结构
节点通过点对点链路链接到集线器上,集线器之间再互联起来
无论采用何种拓扑结构,以太网上任意一个节点传输的数据帧都可以到达所有节点。
帧格式
域 | 域的长度,单位:字节 | 备注 |
目的地址 | 6 | |
源地址 | 6 | |
类型 | 2 | 多路分解密钥(应该交付的上层协议,如IP,IPX) |
帧体 | [46,1500] | |
CRC | 4 |
以太网是一个面向比特的组帧协议,发送方在发送帧之前会首先发送64位的帧前同步码,发送帧结束之后也会发送64位的帧后同步码,接收方接受时会自动去除前同步码,后同步码
帧体最少为46字节,即数据帧最小为64位,因为帧必须足够长才可以检测到一个冲突(后续详细说明)
地址
链路层采用 MAC地址 来标识网络适配器.即每一个网络适配器都有唯一一个 MAC 地址,固化在网络适配器的ROM中,共 6 个字节.可读格式:由冒号分割的6个数(16位进制),每一个数对应于6个字节中的一个字节。如:
c4:ca:d9:2f:b6:48--对应于-->c4cad92fb648
地址分配
MAC地址固化在网络适配器中,所以网络适配器在出厂时其MAC地址就已经分配了
某个机构给每一个网络适配器设备制造商都分配一个不同的前缀。
比如AMD公司得到的前缀为0x080020;则该公司制造的第一个网络适配器的MAC地址为08:00:20:00:00:01;第2个设备的MAC地址为08:00:20:00:00:02;。。
接收方行为
接收方的行为:收到一个帧,判断是接受,还是丢弃。
广播地址:目的地址全由1构成:ff:ff:ff:ff:ff:ff
多播地址:目的地址第一位是1,并且不是广播地址
混杂模式:当网络适配器处于混杂模式时,他会将收到的所有正确的帧接受下来。
发送方行为
链路当前处于阻塞状态
等待一段时间后,重试
链路处于空闲状态
发送前同步码,数据帧,后同步码
监听链路,检测是否发生冲突
发生冲突
停止发送
发送32位干扰序列
等待一段时候后重新发送(指数退避算法)
指数退避
如下为指数退避算法,其中c一般取51.2us;
当在'等待 k*c' 后条件达成,则退出循环。
也可以对n设定一个上限值
为什么最小帧长度
考虑下面一种情况:A,B两个节点位于以太网的2端;链路的RTT为2*d;(即从A->B需要时延d)
t时刻,A节点发送一个数据帧,然后监听链路
在t+d的前一时刻,B节点看到的链路还是空闲的,于是B节点也发送数据帧。
t+d时刻,A,B节点发送的数据帧发生冲突,B节点检测到冲突,于是它发送32位干扰序列
t+2d时刻,干扰时刻到达A节点,此时A节点才可以得知其发送的数据帧产生冲突。
所以A节点要想检测出冲突,即他在[t,t+2d]时间内必须处于发送帧状态,所以这对发送帧的最小长度就有了一个要求。
根据计算...当链路长为2500米时,所需的最小帧长度为512位,64字节,所以最小帧长度46字节。