zoukankan      html  css  js  c++  java
  • 自顶向下_05_Link Layer

    1. Introduction

    1.1. Terminology

    Node(s): any device that runs a link-layer protocol

    Link(s): communication channels that connect adjacent nodes along communication path

    * wired

    * wireless

    Frame: layer-2 packet encapsulates datagram,传输节点将数据包封装在链路层帧中传送到链路中(link layer has responsibility of transferring datagram from one node to physically adjacent node over a link

    1.2. Context

    (1) datagram transferred by different link protocols over different links:

    e.g., WiFi on first link, Ethernet on next link

    (2) each link protocol provides different services

    e.g., may or may not provide reliable data transfer over link

    (3) transportation analogy:

    trip from Lancaster to Weihai

    taxi: Lancaster to Manchester

    plane: Manchester to Beijing

    train: Beijing to Weihai

    * tourist = datagram

    * transport segment = communication link

    * transportation mode = link-layer protocol

    * travel agent = routing algorithm

    1.3. Services链路层提供的服务

    (1) 成帧(framing)

    在每个网络层数据报经过链路传送之前,几乎所有的链路层协议都要将其用链路层帧封装起来。一个帧由一个数据字段和若干首部字段组成,其中网络层数据报就插在数据字段中。帧的结构由链路层协议规定;

    (2) 链路接入(link access)

    媒体访问控制(Medium Access Control, MAC)协议规定了帧在链路上传输的规则。对于点对点传输,MAC协议比较简单,无论何时链路空闲,发送方都能够发送帧。对于多点共享单个广播链路时,MAC用于协调多个节点的帧传输。

    (3) Framing, link access

    * encapsulate datagram into frame, adding header, trailer

    * “MAC” addresses in frame headers identify source, destination (different from IP address!)

    * channel access if shared medium

    (4) 可靠交付

    TCP类似,链路层的可靠交付服务通常是通过确认和重传取得的。链路层可靠交付服务通常用于易于产生高差错率的链路,例如无线链路,其目的在于纠正一个差错,而不是通过运输层或应用层协议迫使进行端到端的数据重传;而对于低比特差错的链路(光纤、同轴电缆、双绞线),链路层可靠交付服务被认为是不必要的,因此,许多有线的链路层协议不提供可靠交付服务。

    (5) reliable delivery between adjacent nodes

    * Using acknowledgements and retransmissions

    * seldom used on low bit-error links including fiber, coax, and many twisted-pair copper links

    * wireless links: high error rates

    (6) 差错检测和纠正error detection and correction

    * errors caused by signal attenuation, noise.

    * receiver identifies and corrects bit error(s) without retransmission

    通过让发送节点在帧中包括差错检测比特,让接收节点进行差错检测。

    与网络层的差错检测(校验和)不同,链路层差错检测不仅能检测帧中出现的比特差错,而且能够准确地确定帧中的差错出现的位置(并因此能纠正这些差错)

    2. Implementation

    2.1. Where is the link layer implemented

    * in each-and-every host

    * link layer implemented in network adapter (network interface card (NIC)) or on a chip

    * Ethernet card, WiFi card or Ethernet chipset

    * implements link, physical layer

    * attaches into host’s system buses

    * combination of hardware, software, firmware(固件)

     

    链路层的主体部分在网络适配器中实现,网络适配器有时也称为网络接口卡Network Interface Card, NIC)也称网卡。位于网络适配器核心的是链路层控制器,该控制器通常是一个实现了许多链路层服务(framing, link access, error detector, etc.)的专用芯片。链路层控制器的许多功能是用硬件实现的。

    2.2. Interfaces communicating(实现过程)

     

    发送端,控制器取得由协议栈较高层生成并存储在主机内存中的数据报,在链路层帧中封装该数据报(填写该帧的各个字段),然后遵循链路接入协议将该帧传进通信链路中。

    接收端,控制器接收整个帧,抽出网络层数据报,选择性执行差错检测(执行则需要发送控制器在该帧的首部设置差错检测比特,由接收端执行差错检测)。

    2.3. Error detection

     

    在发送点,为了保护比特免受差错,使用差错检测和纠正比特(Error-Detection and-Correction, EDC)来增强数据D。链路层级帧中的DEDC都被发送到接收节点,在接收节点,接收到比特序列DEDC’,注意到因传输中的比特翻转所致,D’EDC’可能与初始的DEDC不同,这是就需要差错检测了。

    当然,差错检测不是100%正确的,也可能有未检出比特差错(undetected bit error)下面介绍三种差错检测的技术:奇偶校验(它用来描述差错检测和纠正背后所隐含的基本思想)、校验和方法(更多地用于运输层)、循环冗余检测(更多地应用在适配器中的链路层)

    【要注意,以上三种方法并不全部用于链路层】

    2.4. Parity checking(奇偶校验)

     

    2.5. Internet checksum(因特网校验和)

    与运输层中原理基本一致。

    (1) 概述

     

    与之后采用的CRC相比,因特网校验和提供相对弱的差错保护。

    (2) 为什么运输层中采用校验和,而链路层中采用CRC呢?

    前面讲过,运输层是在主机中作为用户操作系统的一部分用软件实现的。

    * 运输层差错检测使用软件实现,采用简单快速的差错检验(如检验校验和)方案;

    * 链路层的差错检验在适配器中用专用的硬件实现,它能够快速执行更复杂的CRC操作。

    * 校验和还在网络层(IP层)中使用

    2.6. Cyclic Redundancy CheckCRC,循环冗余检测)

    差错检测就是对比发送方与接收方所接收到的数据是否相同,如果相同则没有出错,反之则出错了。

    发送方:这里CRC使用的是(D*2r+R)/G根据余数是否为0来判断。其中,D为发送数据【已知】;G由给出的生成多项式得出;r由公式k+r2r-1得到,其中kG的有效位数;R由公式D*2r XOR R = nG计算得出。

    接收方:用接收到的(D*2r+R)’除以G来判断是否出错了,并且由于每个错误位都对应一个不同的值,可以定位。

    【注】计算使用模2算术,等价于按位异或XOR

    Example

    1. 4位有效信息1001编成循环校验码,选择生成多项式x3+x1+x0,试写出编码过程

    A.

    1.根据生成多项式,得到G(x)=1011

    2.有效信息为4位,k=4,代入公式k+r≤2r-1,得到r≥3

    3.首先临时在有效信息1001后面添加r0的冗余码,即1001000,计算1001000/1011,得到余数110

    4.将余数替换有效信息后面的冗余码,变为1001110 (CRC计算结果)

    如果需要检验是否出错:

    假设接收到的数据是:1001111,我们用这个数据除以G,即1001111/1011,结果余数为:101,查表(这个表是实现假设每一位出错而得出的结果对照表)得第一位出错了。

    3. multiple access protocols

    在第一节中我们讲到有两种类型的网络链路:点对点链路(point-to-point link广播链路(broadcast link。顾名思义,点对点链路由链路一端的单个发送方和链路另一端的单个接收方组成,相关协议:点对点协议(point-to-point protocol, PPP),高级数据链路控制(high-level data link control, HDLC);广播链路能够让多个发送节点和接收节点都连接断相同的、单一的、共享的广播信道上,当任何一个节点传输一个帧时,链路中所有其他节点都受到一个副本,以太网和无线局域网(WiFi)时广播链路层技术的例子。我们这节讨论如何协调多个发送和接收节点对一个共享广播信道的访问,即多路访问问题(multiple access problem)。

    就像在开会时我们会规定:一个人讲话其他人不要插嘴一样,计算机网络也有多路访问协议(multiple access protocol),用于规范节点在共享的广播信道上的传输行为。我们将各种这类协议划分为三种类型:信道划分协议(channel partitioning protocol),随机接入协议(random access protocol),轮流协议(taking-turns protocol

     

    理想情况下,对于速率为R bps的广播信道,多路访问协议应该具有以下特性:

     

    3.1. Channel partitioning MAC protocol

    (1) TDM时分复用

     

    (2) 频分复用

     

    (3) 码分多址(Code Division Multiple Access, CDMA

    书本P295

    3.2. Random access protocols

    在随机接入协议中,一个传输节点总是以信道的全部速率(即R bps)传输,当有碰撞时,涉及碰撞的每个节点反复地重发它的帧(也就是分组)直到该帧无碰撞地通过为止,同时,每次重发前每个节点都会独立选择一个随机等待时延。

     

    (1) Overview

    l Pure ALOHA ALOHA

    Developed in the 70’s for packet radio networks

    Start transmissions immediately

    l Slotted ALOHA 时隙ALOHA

    Start transmissions only at fixed time slots

    Significantly fewer collisions than ALOHA

    l Carrier Sense Multiple Access (CSMA)载波监听多路访问

    Start transmission only if the channel is idle

    l CSMA / Collision Detection (CSMA/CD)

    Stop ongoing transmission if collision is detected

    (2) Pure ALOHA

    l 概况

    unslotted Aloha: simple, no synchronization同步

    when frame first arrives: transmit immediately

    Receivers ACK all received packets

    No ACK = collision, wait a random time then retransmission

    Example

     

    l Pure ALOHA: performance

    结果:一个节点成功传输一次的概率为P(1-P)2(N-1)(假设共有N个节点),经计算最大效率为1/(2e)

    推导过程:

     

    Pure ALOHA vs TDMA

     

    (3) Slotted ALOHA 时隙ALOHA

    l 概况

     

    l 利弊

     

    l Slotted ALOHA: performance

    结果:当有N个活跃节点时,时隙ALOHA的效率是Np(1-p)N-1,经过计算,最大效率为1/e(是纯AHOHA的两倍,但依旧不高)

     

    3.3. CSMA载波监听多路访问

    /时隙ALOHA中一个节点传输的决定独立于连接到这个广播信道的其他节点的活动。特别是,一个节点不关心在它开始传输时是否有其他节点碰巧在传输,而且即使有另一个节点开始干扰它的传输也不会停止传输。而CSMA就要好多了,将传输过程具象为人类的交谈:

    1. 说话之前先听,有人说话则不说。载波监听carrier sensing),即节点传输前先监听信道,如果有来自另一个节点的帧正在向信道上发送则等待直到检测到一小段时间内没有传输,然后开始传输;
    2. 如果与他人同时开始说话,停止说话。碰撞检测collision detection),即当一个传输节点在传输时一直在监听此信道,如果它检测到另一个节点正在传输干扰帧,则停止传输。在反复“监听-当空闲时传输”循环之间等待一段时间。

    以上两种规则包含在载波侦听多路访问Carrier Sense Multiple Access, CSMA)和具有碰撞检测的CSMACMSA with Collision Detection, CSMA/CD)协议族中。

     

    1. CSMA

    对于CSMA,广播信道的端到端信道传播时延channel propagation delay)对其性能有很大影响。该传播时延越大,载波监听节点不能监听到网络中另一个节点已经开始传输的机会就越大。

    (1) collisions can still occur with carrier sensing:

    * propagation delay causes that two nodes may not hear each other’s just-started transmission

    (2) collision: entire packet transmission time wasted

    * distance & propagation delay play role in determining collision probability

    * The longer the propagation delay, the higher probability of not being able to sense the transmission that has begun at another node

    1. CSMA/CD

    当检测到碰撞时,在很短的时间内两个节点都放弃了它们的传输。之后适配器等待一个随机时间量然后继续尝试传输。这个时间量应与碰撞节点个数有关:当碰撞节点较少时等待时间短,而多的时候等待时间长。这个事情由二进制指数后退binary exponential backoff)算法解决,特别地,当一个帧传输时经历了一连串的n次碰撞后,节点随机地从{0,1,2,3...,2n-1}中选择一个K值,等待512K比特时间(e.g. k = 1, 100Mbps --> 5.12ms),这里比特时间定义为在这个链路上传输单位比特的时间,单位s/bit,如上述例子中100Mbps1bit/100Mbps,则512比特时间 = 512bits/100Mbps = 512/108s = 5.12*10-6/s(这里书上算错了), 注意区分MbpsMb/s——8倍关系。

    * 效率 = 1/(1+5dprop/dproc),当传播速度足够快(即d(propagation)足够小)或处理足够慢(即d(processing)足够大)时,信道的利用率(/效率)接近1

     

    4. LANs

    4.1. Overview

    (1) MAC

    链路层地址由各种不同的称呼:LAN address, physical address, MAC address。其中最流行的是MAC address。对于大多数局域网而言,MAC地址长6 bytesMAC地址被设置为永久的(虽然现在可以通过软件改变,但是我们仍然假设它是不变的)。而全世界任意两块适配器的地址均不相同,为了实现这个所有地址的分配由IEEE和申请地址的公司一起确定,首先由公司申请购买一块地址空间(包含224个地址),IEEE分配前24位,而这个公司生产出来的适配器分配后24位唯一组合。

    (2) ARP

    ARP,地址解析协议,该协议提供了将IP地址转换为链路层地址的机制。

    (3) IP地址与链路层地址(即MAC地址)/分层结构与扁平结构

    适配器的MAC地址相当于人的社保账号;IP地址则像一个人的邮政地址,它是有层次的,当人搬家的时候其邮政地址也会改变。但是呢,就像人会发现这两个地址都有用(不指现实用途)一样,一台主机(的适配器?)也同时拥有网络层地址(IP地址)和链路层地址(MAC地址)

    (4) MAC广播地址

    当某适配器要向某目的适配器发送一个帧时,发送适配器会将目的适配器的MAC地址插入到该帧中,有时候这个帧会发送到所有适配器上面(广播),目的适配器就会检测如果目的MAC地址相配就会接收并沿协议栈向上传递,否则就会丢掉。而有时候发送适配器确实需要让局域网上所有适配器都接收并处理消息,这时就需要在目的地址插入一段特殊的MAC广播地址broadcast addresse.g.对于使用6 bytes地址的局域网来说,广播地址是48个连续的1组成的字符串(FF-FF-FF-FF-FF-FF)。

    4.2. MAC address

    4.2.1. Compared with IP address

     

    4.2.2. Overview

     

    4.2.3. Properties

     

    4.3. ARP: address resolution protocol

     

    ARP只为在同一个子网下的主机和路由器接口解析IP地址,如果不是,将返回一个错误。

    4.3.1. Example 01:同一子网,ARP表项或没有

    发送一个帧给同一子网下的目的主机。

    ARP表中包含了IP地址到MAC地址的映射关系,注意这张表不必为每一台主机和路由器都包含一个表项,在发送时如果ARP表中有目的主机的表项那就很容易。但是如果没有就需要发送方用ARP协议来解析这个地址,首先,发送方构建一个称为ARP分组(ARP packet)的特殊分组。一个ARP分组包括发送、接收IP地址及MAC地址。ARP查询分组响应分组具有相同的格式,ARP查询分组的目的是询问子网上所有其他主机和路由器,以确定对应于要解析的 IP地址和那个MAC地址。查询分组指示适配器使用MAC广播地址(FF-FF-FF-FF-FF-FF)来发送这个分组。每个接收到的适配器把在该帧中的ARP分组向上传递给ARP模块,ARP模块依次检查,与之匹配的一个给查询主机发送回一个带有所希望映射的响应ARP分组,然后查询主机(发送方)更新它的ARP表,并发送它的IP数据报。

    就是说呢,假设A不知道BMAC,而且AARP表中也没有,就需要通过ARP来查找,分三步:(1A发送广播帧ARP消息,标明BIP;(2B(及其他host收到了这条消息)收到了这条消息后会发送一个标准帧消息(ARP response)给A(而其他host则不会,因为A发送的消息中的IP并不是它们的IP);(3A收到了B返回的消息,其中就包括BMAC地址,A就会在自己的ARP表中加入一个表项<B’s IP address, B’s MAC address, TTL>

    l 两个特点

    (1) 查询ARP报文是在广播帧中发送的,响应ARP报文在标准帧中发送

    (2) ARP是即插即用的,这就是说,一个ARP表是自动建立的,如果某主机与子网断开连接,它的表项最终会从留在子网中的节点的表中删除。

    4.3.2. Example 02,不同子网

    我们假设

    * A knows B’s IP address

    * A knows IP address of first hop router, R【通过ARP知道RMAC地址】

    * A knows R’s MAC address (by using ARP)

    过程

    从一个子网的发送主机发送一个帧给另一个子网的目的主机。这个分两步进行,首先目的主机以边缘路由器R为“目的主机”发送帧【通过ARP根据RIP地址查询其MAC地址】,再由路由器发送src为发送主机IPdes为目的主机IP的帧【通过RAPR表查询目的主机的MAC地址】实现发送。

    4.4. Ethernet以太网

    4.4.1. Overview

    (1) 以太网占据着现有的有线局域网市场。

    (2) 以太网成功的原因/ “dominant” wired LAN technology:

    first widely used LAN technology

    simpler, cheap

    kept up with speed race: 10 Mbps – 400 Gbps

    single chip, multiple speeds (e.g., Broadcom  BCM5761)

    4.4.2. physical topology拓扑结构

    分为总线和星形拓扑。

    (1) bus总线拓扑,popular through mid 90s

    all nodes in same collision domain (can collide with each other)

    总线拓扑实际上是一种广播局域网,即所有传输的帧传送到与该总线连接的所有适配器并被处理。

    (2) Switch-based star星形拓扑, prevails today

    switch-based star topology

    active link-layer 2 switch in center

    each “spoke” runs a (separate) Ethernet protocol (nodes do not collide with each other)

    星形拓扑的“中心”:集线器(hub)、交换机(switch)

    集线器是针对bit而不是帧的,从一个接口传来的比特将被重新生成再次传输(相当于信号加强了),而且是向所有其他接口传输;但是当有两个接口同时接收到数据是就会发生碰撞,生成该帧的节点就需要重传一次。而之后换成了交换机,交换机是无碰撞的、还是存储转发分组交换机处于第二层(路由器运行在第三层,即网络层)

     

    4.4.3. Ethernet frame structure以太网帧结构

     

    Data: 这个字段承载了IP数据报。以太网的最大传输单元(MTU)1500字节,最小是46字节,如果数据大于1500就需要分段,小于46就需要填充(网络层使用IP数据报首部中的长度字段来去除填充部分)。

    (1) 以太网技术向网络层提供无线连接服务;

    (2) 以太网技术向网络层提供不可靠服务。

    (3) Standards

     

    4.4.4. Switch交换机

    (1) Overview

     

    (2) Switch forwarding table交换机转发表

     

    (3) Switch: self-learning自学习

    一开始是一张空表,某个帧传输时记录源地址(MAC,之后广播这个帧,检测并记录该帧最终到达的接口时间,并且表中的数据会在一段时间清楚(当没有帧从该MAC地址发送时,比如1h)。

    (4) Switch: plug and play即插即用

    它们不需要网络管理员或用户的干预。

    (5) Interconnecting switches

     

  • 相关阅读:
    Json.Net学习笔记(八) 序列化的回调方法
    PowerDesigner 使用的一些技巧(转)
    Json.Net学习笔记(十三) 缩小序列化Json的大小
    Json.Net学习笔记(十四) JSON的部分序列化
    MSDTC服务配置 今天碰到的情况
    Json.Net学习笔记(十一) CustomCreationConverter
    让工作自动化
    Json.Net学习笔记(十二) 协议解析
    Json.Net学习笔记(九) 异常处理
    通过PB认证
  • 原文地址:https://www.cnblogs.com/YuanShiRenY/p/A_Top_To_Down_approach_05_Link_Layer.html
Copyright © 2011-2022 走看看