第二章、链路层和局域网

2.1介绍和链路层的服务

术语

  • datagram数据报
  • communication link链路
  • communication link链路
  • routing algorithm路由算法

链路层服务

  • Framing, link access: 帧的封装和链路的访问

    • 将数据包封装成帧,加上头部和尾部
      encapsulate datagram into frame, adding header, trailer
    • 信道访问
      channel access if shared medium
    • 链路层寻址(帧的头部使用的mac地址,用于识别源和目的)
      “MAC” addresses used in frame headers to identify source, dest
  • Reliable delivery between adjacent nodes
    相邻节点间的可靠传输

    • 至少要保证不错,很少用在低位错误链路(光纤fiber、双绞线twisted pair)
    • 第三章学习如何实现
  • Flow Control: 流量控制

    • 相邻发送节点和接受节点之间的步调
  • Error Detection: 错误检测

    • 由信号衰减、噪声引起的误差
    • 接收方检测是否存在(presence)错误
    • 信号发送方用于检查是否重新传输或丢帧
  • Error Correction: 错误修正

    • 接收方识别并纠正错误
  • Half-duplex and full-duplex全双工和半双工

    • 使用半双工,链路两端节点不可以同时传输

链路层实现位置

  • 网络边缘
    in each and every host

  • 适配器(网络接口卡网卡)和网卡
    adaptor chip

    -

  • 连接主机的系统总线

  • 硬件、软件、固件组合

2.2校验和纠正

Error detection and correction

EDC:Error Detection and Correction bits检错纠错码(为后添加的冗余数据)

不是百分之百可靠
~EDC长度越长检测效果越好

  • 检错流程(可能发生比特位发生翻转)

1.Parity checking(奇偶位校验)

  • Single Bit Parity(奇偶校验)

    • 最不实用但简单
    • 缺点:不能改错,有误报情况,只能测出一半的错误(奇位错)
  • Two Dimensional Bit Parity:二维奇偶校验

    • 优:可定位错误
    • 缺:有误报

2.Internet checksum(校验和)

  • 只能检测不能纠正,只在❗传输层使用(因为实现麻烦,需要cpu辅助)

  • 目标:检测在传输段中的错误:
    detect “errors” in transmitted segment

  • 发送端sender

    • 将段的内容视为十六位整数
      treat segment contents as sequence of 16-bit integers

    • 校验和:段内容的反码和
      addition (1’s complement sum) of segment 进位contents(最高位循环加到最后一位,不丢数据)

    • 把校验和放到udp校验和字段中

      • UDP(User Datagram Protocol)用户数据报协议
  • 接收端receiver

    • 计算接受端的校验和

    • 检查计算的校验和是否等于校验和字段值()

      • 如果不为0,则有错误
      • 为0,则正确(发送端计算为反码)

3.Checksumming: Cyclic Redundancy Check

(校验和:循环冗余校验)(CRC❗链路层使用)

-

  • D:要发送的数据,看成的二进制数

  • G:r+1位模式(生成器),一个接收方知道的数

  • 最后R加到数据末尾

  • 检测用到异或,计算方便

  • 够用就行,G位数越多检测能力越强

  • 每个CRC标准能够检测不多于r+1位的猝发错误和任意的奇数个比特错误

2.3 多路访问协议(解决共享信道的问题)

Multiple access Protocols(MAC协议)

  • 点对点point-to-point

    • 家用或路由器
    • 以太网
  • 广播broadcast
    (shared wire or medium共享电路和介质

分类法a taxonomy

  • Channel Partitioning信道划分

    • 特点

      • divide channel into smaller “pieces” (time slots, frequency, code)
      • allocate piece to node for exclusive专属 use
    • TDMA:time division multiple access

      • 每个站在每轮中获得固定长度的插槽(长度= pkt传输时间)
    • 利用率低 FDMA

      • 因为没有使用的信道都是空闲的
  • Random Access随机访问

    • channel not divided, allow collisions

    • “recover” from collisions冲突

    • 处理的问题

      • 如何检测碰撞

        • “碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。结果就是两个帧都变得无用
      • 如何从冲突中恢复(例如,通过延迟转播)

    • 分类

      • slotted ALOHA(有时隙的)

        • 假设,所有帧都等长,时间等分时隙(slot),一个时隙恰好发送一个数据帧,只能从开始的地方发送,节点间同步,两个节点冲突,所有节点都可以检测到

        • 操作:当节点获得新帧时,它会在下一个插槽中传输
          如果没有冲突,节点可以在下一个槽中发送新帧
          如果发生冲突,节点在每个后续插槽中用 prob. p 重新传输帧直到成功

        • 优点(pros)

          • 单个主动节点可以全速率连续传输通道独占带宽
          • 高度去中心化:去中心化节点中只有插槽需要同步
          • 简单
        • 缺点cons

          • 碰撞,浪费slot
          • 空闲slot
          • 节点可能能够在传输数据包的不到一段时间内检测到冲突
          • 时钟同步困难
        • 基于时间同步,n无限大时,可达到37%传输效率

      • Pure (unslotted) ALOHA无时隙的(始终不用同步

        • 效率不高,但简单,最高0.18
      • CSMA (Carrier Sense Multiple Access)载波监听

        • 传输前就监听

          • 如果通道检测到空闲:传输整个帧
          • 如果信道检测到繁忙,就推迟传输
        • 冲突问题:由于传播时延导致没有及时监听到

          • 如果冲突,整个数据包也传输,却不能用,所以浪费时间,且半径越小越容易检测冲突
          • 距离越远,带宽越低(传的慢)出现传播时延造成的冲突的可能性越大
      • CSMA/CD (Collision Detection)载波监听冲突检测多路复用used in Ethernet

        • 在短时间内检测到冲突

        • 碰撞传输中止(aborted),减少通道浪费

        • 碰撞检测

          • 易于在有线LAN中:测量信号强度,比较发射和接收的信号
          • 无线局域网中的困难:接收机在传输时关闭
      • CSMA/CA used in 802.11

  • “Taking turns”轮转

    • Nodes take turns, but nodes with more to send can take longer turns

    • 通道分区MAC协议(channel partitioning MAC protocols):在高负载下高效、公平地共享通道

      • 低负载时效率低下:通道访问延迟,即使只有1个主动节点,也分配1/N带宽!
    • 随机访问 MAC 协议

      • 低负载时高效:单节点可充分利用通道
      • 高负载:碰撞开销
    • 方式:

      • 轮询polling

        • 主节点”邀请”从属节点依次传输master node “invites” slave nodes to transmit in turn

        • 通常与哑设备(“dumb” slave devices)一起使用

        • 缺点

          • polling overhead 轮循开销
          • latency延迟
          • single point of failure (master)一旦master主节点故障,所有都出问题
        • 优点:利用random优势

      • token(令牌) passing依次传递

        • 控制令牌按顺序(sequentially)从一个节点传递到下一个节点。

        • 令牌消息

        • 缺点

          • 令牌开销token overhead
          • 延迟latency
          • 单点故障(令牌token)任何一个故障,都不能运转
    • Bluetooth, FDDI使用

Cable access network有线接入网络???

  • DOCSIS:电缆数据服务接口规范data over cable service interface spec

  • 上行、下行频率通道上 FDM

  • TDM 上行:已分配某些插槽,某些插槽存在争用

    • 下行 MAP 帧:分配上游插槽
    • 请求在选定插槽中传输的上游插槽(和数据)传输随机访问(二进制退避)

LAN technologies局域网技术???

  • services, error detection/correction, multiple access

争用期

  • 最先发送数据帧的站,在发送数据帧后至多经过时间 2τ(两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。

  • 以太网的端到端往返时延 2τ 称为争用期,或碰撞窗口。

  • 经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

  • 以太网争用期:

    • 以太网取 51.2 μs 为争用期的长度。
    • 对于 10 Mb/s 以太网,在争用期内可发送512 bit,即 64 字节。
    • 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。

最短有效帧长

  • 以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧。

帧间最小间隔

  • 帧间最小间隔为 9.6 μs,相当于 96 bit 的发送时间。
  • 一个站在检测到总线开始空闲后,还要等待 9.6μs 才能再次发送数据。
  • 这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

2.4 Addressing寻址

MAC地址(or LAN or physical or Ethernet) 身份证号一样独一无二

  • 功能

    • 在”本地”使用,将帧从一个接口获取到另一个物理连接的接口(同一网络,在IP寻址意义上)(同一局域网)
  • 48 位(12位16进制) MAC 地址(对于大多数 LAN)刻录在 NIC ROM 中(写在主机的配置文件中),有时软件也可设置

  • 每一个链路层端口都有一个mac地址

  • 由 IEEE 管理的 MAC 地址分配

  • 制造商购买部分MAC地址空间(以确保唯一性)

  • MAC 平面地址 ➜ 便携性

    • 可以将局域网卡从一个局域网移动到另一个局域网
  • IP 分层地址不可移植

    • 取决于节点附加到的 IP 子网

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

  • LAN 上的每个 IP 节点(主机、路由器)都有 ARP 表

  • ARP 表:某些 LAN 节点的 IP/MAC 地址映射

    • < IP 地址;MAC 地址;TTL>

      • TTL(Time To Live生存时间):地址映射将被遗忘的时间(通常为 20 分钟)
  • 同一个局域网下查询

    • A 希望将数据报发送到 B,而 B 的 MAC 地址不在 A 的 ARP 表中。

    • A (广播broadcasts) ARP 查询数据包(其中包含A的mac地址),其中包含 B 的 IP 地址

      • Dest MAC 地址 = FF-FF-FF-FF-FF-FF-FF
      • LAN 上的所有计算机都接收 ARP 查询
    • B 接收 ARP 数据包,使用其 (B 的) MAC 地址回复 A(ARP应答包)

      • 发送到 A 的 MAC 地址的帧(单播)
    • 在其 ARP 表中缓存(保存)IP 到 MAC 地址对,直到信息变旧(超时times out ),过期后需要重新问

      • 软状态soft state:除非刷新,否则超时(消失)的信息
    • ARP 是”即插即用(plug-and-play)”的:

      • 节点创建其 ARP 表,无需网络管理员干预(intervention)

寻址Addressing:路由到另一个 LAN(跨局域)(A通过R和B发数据报)

  • 问题:

    • 专注于寻址 – 在 IP(数据报)和 MAC 层(帧)
    • A 知道 B 的 IP 地址
    • A 怎么知道第一跳路由器 R 的 IP 地址(由路由协议完成
    • A怎么知道 R 的 MAC 地址(同一个局域网可以问
  • 步骤

    • A 使用 IP 源 A(目标 B)创建 IP 数据报
    • A 创建链路层帧,将 R 的 MAC 地址作为目标地址,帧包含 A 到 B IP 数据报
    • R 使用 IP 源 A(目标 B)转发数据报
    • R 创建链路层帧,其中 B 的 MAC 地址为 dest,帧包含 A 到 B 的 IP 数据报

2.5 Ethernet以太网

“占主导地位dominant”的有线局域网技术:

  • 便宜$20 100Mbs!
  • 首次广泛使用局域网技术
  • 比令牌 LAN 和 ATM 更简单、更便宜
  • 跟上速度赛速:10 Mbps – 10 Gbps

物理拓扑:physical topology

  • bus: popular through mid 90s

    • all nodes in same collision domain (can collide with each other)
  • star: prevails today现在占上风

    • active switch in center
    • each “spoke分支” runs a (separate) Ethernet protocol (nodes do not collide冲突 with each other)

以太网帧的结构v1

  • 7 个字节,模式为10101010,后跟一个字节,最终模式:10101011
    用于同步接收机、发送器时钟速率

  • Addresses: 6 byte source, destination MAC addresses

    • 如果适配器接收具有匹配目标地址或广播地址(例如ARP数据包)的帧,则它将帧中的数据传递到网络层协议
    • 否则,适配器将丢弃帧
  • Type: 表示(indicate)更高层的协议(主要是 IP,但可能支持其他协议,如 Novell IPX 和 AppleTalk)

  • CRC: 在接收器处检查,如果检测到错误,则浅丢一下帧(以太网中32位,4个字节)

以太网 V2 的 MAC 帧格式(数据字段的正式名称是 MAC 客户数据字段,最小长度 64 字节-18 字节的首部和尾部 = 数据字段的最小长度 )

无效的 MAC 帧

  • 帧的长度不是整数个字节;
  • 用收到的帧检验序列 FCS 查出有差错;
  • 数据字段的长度不在 46 ~ 1500 字节之间。
  • 有效的 MAC 帧长度为 64 ~ 1518 字节之间。
  • 对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧(以太网不提供有效传输)。

Unreliable, connectionless service

  • 无连接:发送和接收 NIC 之间无需握手

  • 不可靠:接收 NIC 不会向发送 NIC 发送确认或 nack

    • 仅当初始发送方使用更高层 rdt(例如 TCP)时,才会恢复丢弃帧中的数据,否则丢弃的数据将丢失
  • 以太网的 MAC 协议:无插槽 CSMA/CD,带二进制退避

Ethernet uses CSMA/CD

  • carrier sense载波监听

  • collision detection冲突检测

    • 处理采用指数退避Exponential Backoff:

      • 目标:使重新传输尝试适应估计的当前负载

        • 负载重:随机等待会更长
      • 第一次冲突:从 {0,1} 中选择 K;延迟为K·512位传输次数

      • 第二次冲突后:从 {0,1,2,3} 中选择 K…

      • 在十次冲突后,从 {0,1,2,3,4,…,1023} 中选择 K

      • 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。

  • 在尝试重新传输之前,适配器会等待随机时间,即随机访问

  • 无时隙

  • 算法实现

      1. 网卡(NIC)从网络层接收数据报,创建帧
      1. 如果 NIC 检测到通道空闲,则开始帧传输。如果 NIC 检测到信道繁忙,则等待通道空闲(idle),然后进行传输。
      1. 如果网卡传输整个帧而没检测到另一个传输,则网卡是用帧完成的!
      1. 如果 NIC 在传输时检测到另一个传输,则中止并发送卡纸信号
      1. 中止后,NIC 进入二进制(指数)退避:
      • 在第 m 次冲突后,NIC 从 {0,1,2, …, 2m-1} 中随机选择 K。网卡等待 K·512 位时间,返回步骤 2
      • 更长的回退间隔,更多的碰撞
  • 效率

    • Tprop = max prop between 2 nodes in LAN最远两个节点间的传播时延
    • Ttrans = time to transmit max-size frame最大帧的发送时延
    • Efficiency goes to 1 as tprop goes to 0
    • Goes to 1 as ttrans goes to infinity传播时延无限大时效率高?
    • Much better than ALOHA, but still decentralized分散, simple, and cheap
    • 效率公式显示,帧越多效率越高,带宽足够低效率高,但这是不可能的,就像慢慢走,但是一直在走着
  • 使用 CSMA/CD 协议的以太网不能进行全双工通信而只能进行双向交替通信(半双工通信)。

节点连接到集线器(hub):”星形拓扑”;节点和集线器之间的最大距离为 100 m

2.6 Interconnections & VLAN

Interconnections

  • 中继器repeater/relay: (物理层)对信号整形放大

  • Manchester encoding(物理层)改变编码方式,采用高低电平变化表示01,允许发送节点和接收节点中的时钟彼此同步,无需在节点间使用集中的全局时钟

  • 转换器Translater/transformer:信号转换的中继器(两边类型不一样)

    • 如光电转换, 10base-2转换到10BaseT
  • 集线器hub: (物理层)(多端口中继器)

    • 集线器是中继器的一种形式,也称为多端口中继器。

    • 不检测冲突(由端节点检测)

    • 无缓存

    • 可能会让网络很混乱

    • 5-4-3-2-1 Rule

      • 5:允许5个网段,每网段最大长度100米。
      • 4:在同一信道上允许连接4个中继器或集线器。
      • 3:在其中的三个网段上可以增加节点。
      • 2:在另外两个网段上,除做中继器链路外,不能接任何节点。
      • 1:上述将组建一个大型的冲突域,最大站点数1024,网络直径达2500米。
  • 交换机switch: (链路层)前身为网桥

    • 交换机是网桥的一种形式,也称为多端口网桥(网桥连接的为两个网络)

    • takes an active role链路层,可以存储转发,能选择性转发

      • 存储,转发以太网帧
      • 检查传入帧的 MAC 地址,在要在分段上转发帧时有选择地将帧转发到一个或多个传出链路,使用 CSMA/CD 访问分段
    • 透明transparent

      • 主机不知道交换机的存在
    • 即插即用,自学plug-and-play, self-learning

      • 交换机不需要配置configured
    • 多个同时传输multiple simultaneous transmissions时:每个传入链路上使用以太网协议,但没有冲突;全双工,每个链路都是其自身的冲突域(隔离冲突)

    • Switch forwarding table交换机转发表:一个交换机一个

      • (主机的 MAC 地址、到达主机的接口、时间戳)看起来像一个路由表!
    • frame filtering/forwarding帧过滤/转发,当帧到达交换机时

        1. record incoming link, MAC address of sending host
  1. index switch table using MAC destination address

  2. if entry found for destination then {
    if destination on segment from which frame arrived then drop frame
    else forward frame on interface indicated by entry
    }
    else flood /* forward on all interfaces except arriving interface */

    • Switches vs. routers

      • 两者都是存储和转发:

        • 路由器:网络层设备(检查网络层标头)
        • 交换机:链路层设备(检查链路层标头)
      • 两者都有转发表:

        • 路由器:使用路由算法的计算表,IP 地址
        • 交换机:使用 flooding, learning, MAC addresses学习转发

VLANs: motivation虚拟局域网

  • Port-based VLAN基于端口的虚拟局域网

    • 流量隔离traffic isolationn

    • 动态成员资格:可以在 VLAN 之间动态分配端口

    • VLAN 之间的转发:通过路由完成(就像使用单独的交换机一样)

      • 在实践中,供应商销售组合交换机和路由器
  • VLANS spanning multiple switches跨多个交换机的 VLAN

    • 中继端口trunk port:在通过多个物理交换机定义的 VLAN 之间传输帧

      • 交换机之间在 VLAN 中转发的帧不能是普通(vanilla)的 802.1 帧(必须携带 VLAN ID 信息info)
      • 802.1q 协议为中继端口之间转发的帧添加/删除了其他标头字段

2.7 PPP

  • 一个发送方,一个接收方,一个链路:比广播链路更容易:

    • 无媒体访问控制
    • 无需显式 MAC 寻址
  • 流行的点对点DLC协议:

    • PPP(点对点协议)
    • HDLC:高级数据链路控制

数据链路层传送的是帧(在数据链路层,规程=协议)

数据链路层的三个基本问题

  • (1) 封装成帧

    • 封装成帧(framing)就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限
    • 首部和尾部的一个重要作用就是进行❗帧定界。
  • (2) 透明传输

    • 发送端的数据链路层在数据中出现控制字符“SOH” ”(其十六进制编码是 01)或“EOT” (其十六进制编码是 04)的前面插入一个转义字符“ESC”(其十六进制编码是 1B)。
    • 字节填充(byte stuffing)或字符填充(character stuffing)——接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
    • 如果转义字符也出现数据当中,那么应在转义字符前面插入一个转义字符。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
  • (3) 差错控制

    • 在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。

    • 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。

      • 误码率与信噪比有很大的关系。
    • 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

PPP协议的三个组成部分

  • 一个将 IP 数据报封装到串行链路的方法。

    • 数据包成帧:将网络层数据报封装在数据链路帧中

      • 同时承载任何网络层协议(而不仅仅是IP)的网络层数据
      • 向上解复用(demultiplex upwards
        )的能力
    • 位透明度:必须在数据字段中携带任何位模式

    • 错误检测(无校正)
      error detection (no correction)

    • 连接活性connection liveness:检测,信号链路故障到网络层

    • 网络层地址协商:端点可以学习/配置彼此的网络地址

  • 链路控制协议 LCP (Link Control Protocol)。

  • 网络控制协议 NCP (Network Control Protocol)。

  • PPP不要求

    • no error correction/recovery不错误检测
    • no flow control没有流控制
    • out of order delivery OK 乱序也可以传输
    • no need to support multipoint links (e.g., polling)无需支持多点链接(如,轮询)

PPP Data Frame

-

  • Flag: delimiter (framing)分隔符(框架)
  • Address: does nothing (only one option)不执行任何操作(只有一个选项)
  • Control: 什么都不做;未来可能的多个控制领域
  • Protocol:上层协议,将帧传送到哪个帧(例如,PPP-LCP,IPCP等)
  • info: 正在承载的上层数据
  • check: cyclic redundancy check for error detection用于错误检测的循环冗余检查

PPP协议的工作状态

  • 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
  • PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
  • 这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
  • 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

因为知识点很多,这部分的笔记最开始是用思维导图记的,但是图片都不能导出,xmind格式的到百度网盘自行下载或者联系我可以发叭,笔记效果如下(也不是那么好看,建议还是看PPT或者自己整理效率较高,我的笔记整理效果稍稍欠缺):