网络适配器和MAC地址
网络适配器:俗称网卡,集成了数据链路层和物理层的功能,即网络接口层
网卡与外部以太网之间的通信,一般是通过传输媒体以串行传输进行的
网卡和CPU以及存储器之间的数据传输方式是并行传输,网卡和外部以太网之间的传输方式一般是串行传输,因此主机在与网布网络通信时,网卡要根据收发数据进行串并转换和并串转换
MAC地址:
- 点对点链路无需使用MAC地址
- 当众多主机在同一广播信道上时,要想实现两个主机之间的通信,每必须使用MAC地址来区分各主机
- MAC地址存储在网卡的EEPROM中
- 同一台主机可以有多块网卡,就会有多个MAC地址,严格来说MAC地址是对网络上各接口的唯一标识,而不是对网络上各设备的唯一标识
MAC地址分类:全球单播、全球多播、本地单播、本地多播
网卡的混杂方式:被设置为混杂方式的网卡,只要收到共享媒体上传来的帧就会接收,不管MAC地址。可以用来监测和分析网络流量。
MAC地址的发送方式:字节1-8,字节内0-7,右边为0位
CSMA/CD
CSMA/CD:载波监听、多点接入、碰撞检测,共享式以太网,具有广播的挺然特性,如果对台主机同时发送数据会产生信号碰撞,导致各主机之间无法通信。CSMA/CD协议的目标就是协调总线上个主机之间争用总线
基本原理:
- MA:多点接入,多个主机连接在同一条总线上
- CS:载波监听,每个主机发送数据帧之前,先检测一下总线上是否有其他主机在发送数据帧(先听后说),如果检测到总线空闲96比特的发送时间即9.6\(us\)(也叫作最小帧间间隔),则发送该数据帧;如果检测到总线忙,则继续检测并等总线空闲9.6\(us\)后发送数据帧
- 但是检测到总线空闲时,总线不一定空闲。例如,主机A和主机B在物理链路的两端,信号从一端传输到另一端所需的时间大于\(9.6 us\),某时刻,两个主均检测到总线空闲了9.6\(us\),此时A要发送数据帧,当A刚发送数据后,信号还没来得及传递到B,此时B也要发送数据帧,此时B并不能检测到总线忙
- CD:碰撞检测,每个正在发送数据帧的主机边发送边检测(边听边说),一旦总线上出现碰撞,立即停止发送,并退避一段随机时间后再次载波监听发送。碰撞检测并不能完全避免碰撞,如上述例子。碰撞检测是边听边说,因此不可能同时进行发送和接收,也就是不可能进行全双工通信,而只能进行半双工通信。
争用期:总线上的各站点从发送帧开始,最多经过多长时间能够检测到自己发送的帧与其他站点发送的帧产生了碰撞
要考虑最长经过多久能够检测到发生了碰撞,就要考虑物理链路最长的情况,即发送数据帧的主机位于物理链路的两端,此物理链路以太网端到端传播时延\(\tau\)。还是上述2的例子主机A、B分别位于物理链路的两端,某个 \(t = 0\) 时刻,两个主机均检测到信道空闲 \(9.6us\) ,此时主机 A 发送数据帧,经过 \(\tau - \delta\) 时间后,主机 B 也要发送数据帧,但是此时主机 A 发送的数据帧信号并没有传送到主机 B,此时主机 B 仍然可以发送数据帧 ,则在 B 发送数据后经过 \(\frac{\delta}{2}\) 时间后发生的信号碰撞,在\(t = \tau\) 时刻主机 B 检测到了碰撞,而主机 A 在 \(2\tau-\delta\) 时检测到发生了碰撞。因此最长经过\(2\tau-\delta\) 时间就能检测到发生碰撞。
- 当\(\delta\rightarrow0\)时候,最长经过 \(2\tau\) 时间就可检测到信号碰撞。
- 因此以太网端到端的往返时间 \(2\tau\) 叫做争用期
- 上述案列中最早或最迟检测到碰撞的时间与两台主机发送数据帧的时刻,当 \(\delta\rightarrow0\) 时候,最长经过 \(2\tau\) 能够检测到碰撞,当 \(\delta = \tau\),即 A、B 两主机同时发送数据帧,这种情况下检测到数据帧发生碰撞所需的时间最短为\(\tau\)。
- 总线上的主机越多发生碰撞的概率越大,总线长度越长,发生碰撞的概率越大。
传统以太网 \(10Mb/s\) 争用期:
\(10Mb/s\) 的传统以太网规定争用期 \(2\tau\) 的值为 512 比特的发送时间即 \(51.2us\)
争用期 : \(2\tau = \frac{512bit}{10Mb/s}=\frac{512bit}{10\times10^6bit/s}=5.12\times10^{-5}s=51.2us\) 单程端到端传播时延: \(\tau=25.6us\) 信号在光纤中的传播速度为\(2\times10^8m/s\)
总线最长\(l\): \(l = 2\times10^8m/s\times25.6*10^{-6}s = 5120m\) 由于信号衰减等条件,共享总线以太网规定总线长度不能超过2500m
最小帧长和最大帧长
- 最小帧长64B:如果数据帧的长度太小,发送方还没有检测到信号碰撞时候就已经发送完毕,无法检测到是否发生了信号碰撞。规定帧的发送时延不能少于共享总线以太网端到端的往返时间,即一个争用期\(2\tau\)。站点接收到小于64B的帧时候就可以判定这是一个遭遇碰撞而异常的无效数据帧,直接丢弃。
- 最大帧长1518B:为了提高帧的传输效率应当尽可能提高帧的数据载荷部分的长度,但是如果帧的长度过长就会导致某台主机一直占用总线,其余主句无法发送数据帧,接收方的缓冲区要求更大。
截断二进制指数退避算法选择遇到碰撞时候的退避时间
采用CSMA/CD协议的共享总线以太网中各主机边监听边发送,检测到碰撞时候就退避一段随机时间后再发送。退避时间的选择采用截断二进制指数退避算法。
- \[t=2\tau \times r\]
\(t\) 为退避时间
\(2\tau\)为争用期
\[r = random\{0, 1, 2, ..., 2^k-1\}, \quad k=min\{retransmission\quad times, 10\}\] - 如果连续碰撞,随着重传次数的增大,减小碰撞的概率,当重传次数为16不能成功时候,表示链路不可达,放弃重传向高层报告
信道利用率:
计算极限信道利用率条件:
- 总线一旦空闲就有某个主机发送数据帧
- 各主机发送数据帧都不会发生碰撞
- 发送一帧占用时间为\(T_0+\tau\),帧的发送时间为\(T_0\)
信道极限利用率为 \(S_{max} =\frac{T_0}{T_0+\tau}=\frac{1}{1+\frac{\tau}{T_0}} = \frac{1}{1+\alpha}\) 为了提高信道利用率,参数\(\alpha\) 的值应当尽量小,即总线的长度应该当尽量小,帧的长度应当尽量大
线路型号
10 Base T 传输速率10Mb/s 基带传输 双绞线 在物理层扩展以太网,受到端到端时延限制不能无限扩大网络的覆盖范围
参考资料
文档信息
- 本文作者:wendaocsmaster
- 本文链接:https://wendaocsmaster.github.io/2023/02/08/Computer-Networks-data-link-layer-CSMA-CD/
- 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)