【计算机网络】链路层和LAN

计算机网络:自顶向下方法(第五版&第七版)学习笔记,第五章链路层和LAN

概述

  • 运行链路层协议的设备称节点(node),通信信道称链路(link),信息称链路层帧(frame)
  • 服务
    • 成帧(framing):封装网络层数据报
    • 链路接入(link access):媒体访问控制MAC(Medium Access Control)协议规定帧在链路上的传输规则
    • 可靠交付(Reliable delivery):有线一般不提供,高差错线路如无线提供纠错
    • 差错检测和纠正(Error Detection & Correction):硬件实现,接收方检测并纠错
    • 流量控制:类似运输层的
    • 双全工、半全工
  • 在网络适配器(network adapter),又称网络接口卡NIC(Network Interface Card),实现,接入主机总线
  • 链路类型
    • 点对点链路(point-to-point link),单接收方单发送方,如点对点协议PPP(point-to-point protocol)、高级数据链路控制HDLC(high-level data link control)
    • 广播链路(broadcast link),多发送方多接收方,共享相同单一的广播信道

差错检测和纠正

  • 使用差错检测和纠正比特EDC(Error Detection and Correction bits)来增强数据

奇偶校验(Parity Checking)

  • 奇偶校验位(parity bit):加校验比特使得1的个数是偶数(偶校验),检验时如果是奇数个就叫出现了奇数个比特差错(odd number of bit errors)
  • 二维奇偶校验:行+列

检验和(checksum)

只在运输层用

循环冗余CRC(Cyclic Redundancy Check)

已知dd 比特数据DD ,协商过的r+1r+1 比特生成多项式(generator)GG ,构造rr 比特附加数据RR 使得:

&G\mid (D<<r \wedge R)\\ \Rightarrow & (D<<r) \equiv R\mod G

(这里混用了计算机的记法和数学的记法)

在竖式计算过程中,乘除法规则不变,加减法变为异或运算

多路访问协议(multiple access protocol)

  • 多个信息同时到达接收方会碰撞(collide)

  • 希望达到:

    • 一个节点发送时有全部吞吐量
    • 多个节点发送时具有平均的传输速率
    • 协议分散,系统更稳定不会崩溃
    • 协议简单
  • 分为三种类型的协议

信道划分协议(Channel Partitioning Protocol)

  • 时分多路复用(TDM)将时间划分时间帧,进一步时间帧划分时隙(slot)给每个节点,因此在一个时间帧内节点轮流发送
  • 频分多路复用同理
  • 码分多址CDMA(Code Division Multiple Access):在上述两种复用基础上,给节点编码,编码选择

随机接入协议(Random Access Protocol)

  • 节点全速传输
  • 碰撞时,节点等待一个随机时延后重发

时隙(slotted)ALOHA

  • 时间划分成传输一帧的时隙
  • 节点同步,在时隙开始时发送,时隙结束前检测碰撞
  • 碰撞后该节点以概率pp 在每个时隙重传直到发走
  • 优点:一个节点发送时有全部吞吐量,高度分散,简单
  • 缺点:碰撞及重发都浪费
  • 最大效率1e\frac{1}{e}

ALOHA

  • 不同步
  • 最大效率2e\frac{2}{e}

载波侦听多路访问(CSMA/CD)

  • 载波侦听(carrier sensing):发送前先听信道
  • 碰撞检测CD(collision detection):传输时监听,发现有别人正在传输(收到其他适配器的信号能量)后停止并等待一个随机时间
  • 以太网采取二进制指数后退(binary exponential backoff)(见后面)

轮流协议(Taking-Turns Protocol)

轮询协议(polling protocol)

  • 蓝牙、计算机外设
  • 主节点(master node)观察并逐一询问
  • 有轮询时延、询问非活跃节点的时延、不分散

令牌传递协议(token-passing protocol)

  • 一个特殊帧:令牌(token),收到令牌有则发送,无则把令牌发给其他节点
  • 节点故障/忘记释放令牌可能会导致问题

链路层寻址

  • 网络适配器有链路层地址,MAC地址最常用,也叫LAN地址、物理地址,6个字节,十六进制标识

  • IEEE管理,MAC地址均不相同,且是永久的

  • MAC广播地址:FF-FF-FF-FF-FF-FF

  • 地址解析协议ARP(Address Resolution Protocol)

    • 发送主机给适配器提供IP和MAC,ARP用于从IP获得MAC
    • 类比DNS,但ARP只为同一子网的主机和路由器接口解析IP地址
    • ARP表:IP、MAC、TTL
    • 主机向适配器发送ARP查询分组,指示适配器用广播地址发送,每个适配器都向上传送检查IP是否匹配,匹配的发送响应分组
    • 往子网外发MAC是解析第一条路由器IP的MAC,最后一条路由器也通过ARP找目的地的MAC
    • 协议跨链路层和网络层

以太网(Ethernet)

  • 星形拓扑,古董:集线器(hub),现在:交换机(switch)(仅运行在第二层)
  • 第一个广泛部署的高速局域网
  • 帧结构
    • 前同步码(8字节)(preamble):7个字节的10101010,最后一个字节10101011,用于唤醒接收适配器和完成适配器的时钟同步
    • 源、目的地址(6+6字节):MAC,目的地址不匹配LAN里的会被丢弃
    • type(2字节):上层协议
    • 数据字段(46-1500字节):如果小于46会被填充,网络层通过长度字段去除链路层的填充
    • CRC(4字节)
  • 以太网采取CSMA/CD,采用二进制指数后退(binary exponential backoff)算法
    • 为了适应当前的流量
    • 一个经历了nn 次碰撞的帧,等待512bits512 bits 进入以太网所需时间的KK 倍,其中K[0,2n1]K\in [0,2^n-1] ,即对于速度为vbpsv\quad bps 的以太网,等待K512bitsvbps(s)\frac{K\cdot512 \quad bits}{v\quad bps}(s) 后发送
    • 注意(老师ppt给的习题,但书上没找到更多说法,可能是书版本问题):同时发送,传播时延的时间能检测到碰撞,然后发送拥塞信号(花了48),检测到碰撞后至少有个帧间最小间隔时间(习题里是96?)才能发送
    • Tprop T_{\text {prop }} 为LAN中两个适配器间传播的最大时间,ttrans t_{\text {trans }} 为传输一个最大长度的以太网帧的时间,则有:

 efficiency =11+5tprop /ttrans \text { efficiency }=\frac{1}{1+5 t_{\text {prop }} / t_{\text {trans }}}

链路层交换机

  • 过滤(filtering):决定帧转发还是丢弃
  • 转发(forwarding):决定帧被导向哪个接口并移动
  • 交换机表:包含MAC、交换机接口、表项放入时间,MAC没有广播找MAC,MAC与来的方向一致就过滤掉
  • 对主机和路由器透明:它们不知道会经过交换机
  • 自学习:来一个入帧就存储,老化期(aging time)后清除
  • 即插即用
  • 比广播链路高效(不会碰撞)
  • 链路可以不同
  • 能够管理,比如适配器发送jabbering时断开这个异常适配器