课程资源
- 课程网站:http://staff.ustc.edu.cn/~qzheng/teaching.html
- 课程视频:https://www.bilibili.com/video/BV1JV411t7ow/
- 课程教材:计算机网络(自顶向下方法 第7版),机械工业出版社,2016
第六章
链路层与局域网
1、引论和服务
-
网络层解决了一个网络如何到达另外一个网络的路由问题
-
在一个网络内部如何由一个节点(主机或者路由器)到达另外一个相邻节点
- 链路层的点到点传输层功能
-
网络节点的连接方式
- Q:一个子网中的若干节点是如何连接到一起的
- 点到点连接
- 多点连接:
- 共享型介质
- 通过网络交换机
- 广域网WAN:网络形式采用点到点链路
- 带宽大、距离远(延迟大)
- 带宽延迟积大
- 如果采用多点连接方式
- 竞争方式:一旦冲突代价大
- 令牌等协调方式:在其中协调节点的发送代价大
- 点到点链路的链路层服务实现非常简单,封装和解封装
- 带宽大、距离远(延迟大)
- 局域网 LAN一般采用多点连接方式
- 连接节点非常方便
- 接到共享型介质上(或网络交换机),就可以连接所有其他节点
- 多点连接方式网络的链路层功能实现相当复杂
- 多点接入:协调各节点对共享性介质的访问和使用
- 竞争方式:冲突之后的协调;
- 令牌方式:令牌产生,占有和释放等
- Q:一个子网中的若干节点是如何连接到一起的
-
链路层服务
- 成帧,链路接入\
- 将数据报封装在帧中,加上帧头、帧尾部
- 如果采用的是共享性介质,信道接入获得信道访问权
- 在帧头部使用“MAC”(物理)地址来标示源和目的
- 不同于IP地址
- 在(一个网络内)相邻两个节点完成可靠数据传递
- 已经学过了(第三章)
- 在低出错率的链路上(光纤和双绞线电缆)很少使用
- 在无线链路经常使用:出错率高
- Q: 为什么在链路层和传输层都实现了可靠性
- 一般化的链路层服务,不是所有的链路层都提供这些服务一个特定的链路层只是提供其中一部分的服务
- 在相邻节点间(一个子网内)进行可靠的转发
- 已经学过了(第三章)
- 在低差错链路上很少使用 (光纤,一些双绞线)
- 在高差错链路上需要进行可靠的数据传送
- 流量控制:
- 使得相邻的发送和接收方节点的速度匹配
- 错误检测:
- 差错由信号衰减和噪声引起
- 接收方检测出的错误:
- 通知发送端进行重传或丢弃帧
- 差错纠正:
- 接收端检查和纠正bit错误,不通过重传来纠正错误
- 半双工和全双工:
- 半双工:链路可以双向传输,但一次只有一个方向
- 成帧,链路接入\
-
链路层在哪里实现
- 在每一个主机上
- 也在每个路由器上
- 交换机的每个端口上
- 链路层功能在“适配器”上实现 (aka network interface card NIC) 或者在一个芯片组上
- 以太网卡,802.11 网卡; 以太网芯片组
- 实现链路层和相应的物理层功能
- 接到主机的系统总线上
- 硬件、软件和固件的综合体
- 在每一个主机上
2、差错检测和纠正
- 错误检测
- EDC=差错检测和纠正位(冗余位)
- D =数据由差错检测保护,可以包含头部字段
- 错误检测不是100%可靠的
- 协议会漏检一些错误,但是很少
- 更长的EDC字段可以得到更好的检测和纠正效果
- 奇偶校验
- 检测与纠正单个bit错误
- 校验和
- 目标: 检测在传输报文段时的错误(如位翻转),(注:仅仅用在传输层)
- 检验和:CRC(循环冗余校检)
- 强大的差错检测码
- 实际中广泛使用(以太网、802.11 WiFi、ATM)
3、多点访问协议(介质访问控制协议:MAC)
- 两种类型的链路(一个子网内部链路连接形式):
- 点对点
- 广播 (共享线路或媒体)
- 多路访问协议
- 单个共享的广播型链路
- 2个或更多站点同时传送: 冲突(collision)
- 多个节点在同一个时刻发送,则会收到2个或多个信号叠加
- 分布式算法-决定节点如何使用共享信道,即:决定节点什么时候可以发送
- 关于共享控制的通信必须用借助信道本身传输
- 3大类:
- 信道划分
- 把信道划分成小片(时间、频率、编码)
- 分配片给每个节点专用
- TDMA、FDMA、CDMA
- 随机访问
- 信道不划分,允许冲突
- 冲突后恢复
- 依次轮流
- 节点依次轮流
- 但是有很多数据传输的节点可以获得较长的信道使用权
- 信道划分
随机存取协议
-
随机存取协议
- 当节点有帧要发送时
- 以 信道带宽的全部R bps发送
- 没有节点间的预先协调
- 两个或更多节点同时传输,会发生➜冲突“collision”
- 随机存取协议规定:
- 如何检测冲突
- 如何从冲突中恢复(如:通过稍后的重传)
- 随机MAC协议:
-
时隙ALOHA
-
ALOHA
-
CSMA, CSMA/CD, CSMA/CA
-
- 当节点有帧要发送时
-
CSMA(载波侦听多路访问)
- Aloha: 如何提高ALOHA的效率发之前不管有无其他节点在传输
- CSMA: 在传输前先侦听信道:
- 如果侦听到信道空闲,传送整个帧
- 如果侦听到信道忙,推迟传送
- 冲突仍然可能发生
- 由传播延迟造成:两个节点可能侦听不到正在进行的传输
- 传播延迟(距离)决定了冲突的概率
-
CSMA/CD(冲突检测)
- 载波侦听CSMA:和在CSMA中一样发送前侦听信道
- 没有传完一个帧就可以在短时间内检测到冲突
- 冲突发生时则传输终止,减少对信道的浪费
- 冲突检测CD技术,有线局域网中容易实现:
- 检测信号强度,比较传输与接收到的信号是否相同
- 通过周期的过零点检测
-
无线局域网中的 MAC:CSMA/CA(冲突避免)
- 冲突: 2+站点(AP或者站点)在同一个时刻发送
- 802.11: CSMA – 发送前侦听信道
- 不会和其它节点正在进行的传输发生冲突
- 802.11: 没有冲突检测
- 无法检测冲突:自身信号远远大于其他节点信号
- 即使能CD:冲突!=成功
- 目标: avoid collisions: CSMA/C(ollision)A(voidance)
- 无法CD,一旦发送一股脑全部发送完毕,不CD
- 为了避免无CD带来的信道利用率低的问题,事前进行冲突避免
轮流(Taking Turns)MAC协议
- 信道划分MAC协议:
- 共享信道在高负载时是有效和公平的
- 在低负载时效率低下
- 只能等到自己的时隙开始发送或者利用1/N的信道频率发送
- 当只有一个节点有帧传时,也只能够得到1/N个带宽分配
- 随机访问MAC协议
- 在低负载时效率高:单个节点可以完全利用信道全部带宽
- 高负载时:冲突开销较大,效率极低,时间很多浪费在冲突中
- 轮流协议
- 有2者的优点
- 有2者的优点
MAC总结
- MAC 协议总结
- 多点接入问题:对于一个共享型介质,各个节点如何协调对它的访问和使用?
- 信道划分:按时间、频率或者编码
- TDMA、FDMA、CDMA
- 随机访问 (动态)
- ALOHA, S-ALOHA, CSMA, CSMA/CD
- 载波侦听: 在有些介质上很容易 (wire:有线介质), 但在有些介质上比较困难 (wireless:无线)
- CSMA/CD :802.3 Ethernet网中使用
- CSMA/CA :802.11WLAN中使用
- 依次轮流协议
- 集中:由一个中心节点轮询;分布:通过令牌控制
- 蓝牙、FDDI、令牌环
4、LANs
ARP(Address Resolution Protocol地址解析协议)
-
地址:
- 32bitIP地址:
- 网络层地址
- 前n-1跳:用于使数据报到达目的IP子网
- 最后一跳:到达子网中的目标节点
- IP地址是分层的
- 一个子网所有站点网络号一致,路由聚集,减少路由表
- 需要一个网络中的站点地址网络号一致,如果捆绑需要定制网卡非常麻烦
- 希望网络层地址是配置的;IP地址完成网络到网络的交付
- 一个子网所有站点网络号一致,路由聚集,减少路由表
- LAN(MAC/物理/以太网)地址:
- 用于使帧从一个网卡传递到与其物理连接的另一个网卡(在同一个物理网络中)
- 48bit MAC地址固化在适配器的ROM,有时也可以通过软件设定
- 理论上全球任何2个网卡的MAC地址都不相同
- e.g.: 1A-2F-BB-76-09-AD
- mac地址是一个平面的
- 网卡在生产时不知道被用于哪个网络,因此给网卡一个唯一的标示,用于区分一个网络内部不同的网卡即可
- 可以完成一个物理网络内部的节点到节点的数据交付
- MAC地址由IEEE管理和分配
- 32bitIP地址:
-
ARP
- 在LAN上的每个IP节点都有一个ARP表
- ARP表:包括一些LAN节点IP/MAC地址的映射< IP address; MAC address; TTL>
- TTL时间是指地址映射失效的时间,典型是20min
- ARP表:包括一些LAN节点IP/MAC地址的映射< IP address; MAC address; TTL>
- 同一局域网(LAN)内的 MAC 寻址
- 假设当前有如下场景:IP 地址为137.196.7.23的主机 A,想要给同一局域网内的 IP 地址为137.196.7.14主机 B,发送 IP 数据报文。
- 再次强调,当主机发送 IP 数据报文时(网络层),仅知道目的地的 IP 地址,并不清楚目的地的 MAC 地址,而 ARP 协议就是解决这一问题的。
- 为了达成这一目标,主机 A 将不得不通过 ARP 协议来获取主机 B 的 MAC 地址,并将 IP 报文封装成链路层帧,发送到下一跳上。在该局域网内,关于此将按照时间顺序,依次发生如下事件:
- 主机 A 检索自己的 ARP 表,发现 ARP 表中并无主机 B 的 IP 地址对应的映射条目,也就无从知道主机 B 的 MAC 地址。
- 主机 A 将构造一个 ARP 查询分组,并将其广播到所在的局域网中。
- ARP 分组是一种特殊报文,ARP 分组有两类,一种是查询分组,另一种是响应分组,它们具有相同的格式,均包含了发送和接收的 IP 地址、发送和接收的 MAC 地址。当然了,查询分组中,发送的 IP 地址,即为主机 A 的 IP 地址,接收的 IP 地址即为主机 B 的 IP 地址,发送的 MAC 地址也是主机 A 的 MAC 地址,但接收的 MAC 地址绝不会是主机 B 的 MAC 地址(因为这正是我们要问询的!),而是一个特殊值——FF-FF-FF-FF-FF-FF,之前说过,该 MAC 地址是广播地址,也就是说,查询分组将广播给该局域网内的所有设备。
- 主机 A 构造的查询分组将在该局域网内广播,理论上,每一个设备都会收到该分组,并检查查询分组的接收 IP 地址是否为自己的 IP 地址,如果是,说明查询分组已经到达了主机 B,否则,该查询分组对当前设备无效,丢弃之。
- 主机 B 收到了查询分组之后,验证是对自己的问询,接着构造一个 ARP 响应分组,该分组的目的地只有一个——主机 A,发送给主机 A。同时,主机 B 提取查询分组中的 IP 地址和 MAC 地址信息,在自己的 ARP 表中构造一条主机 A 的 IP-MAC 映射记录。
- ARP 响应分组具有和 ARP 查询分组相同的构造,不同的是,发送和接受的 IP 地址恰恰相反,发送的 MAC 地址为发送者本身,目标 MAC 地址为查询分组的发送者,也就是说,ARP 响应分组只有一个目的地,而非广播。
- 主机 A 终将收到主机 B 的响应分组,提取出该分组中的 IP 地址和 MAC 地址后,构造映射信息,加入到自己的 ARP 表中。
- 在整个过程中,有几点需要补充说明的是:
- 主机 A 想要给主机 B 发送 IP 数据报,如果主机 B 的 IP-MAC 映射信息已经存在于主机 A 的 ARP 表中,那么主机 A 无需广播,只需提取 MAC 地址并构造链路层帧发送即可。
- ARP 表中的映射信息是有生存周期的,典型值为 20 分钟。
- 目标主机接收到了问询主机构造的问询报文后,将先把问询主机的 IP-MAC 映射存进自己的 ARP 表中,这样才能获取到响应的目标 MAC 地址,顺利的发送响应分组。
- 总结来说,ARP 协议是一个广播问询,单播响应协议。
- 假设当前有如下场景:IP 地址为137.196.7.23的主机 A,想要给同一局域网内的 IP 地址为137.196.7.14主机 B,发送 IP 数据报文。
- 不同局域网内的 MAC 寻址
- 更复杂的情况是,发送主机 A 和接收主机 B 不在同一个子网中,假设一个一般场景,两台主机所在的子网由一台路由器联通。这里需要注意的是,一般情况下,我们说网络设备都有一个 IP 地址和一个 MAC 地址,这里说的网络设备,更严谨的说法应该是一个接口。路由器作为互联设备,具有多个接口,每个接口同样也应该具备不重复的 IP 地址和 MAC 地址。因此,在讨论 ARP 表时,路由器的多个接口都个各自维护一个 ARP 表,而非一个路由器只维护一个 ARP 表。
- 接下来,回顾同一子网内的 MAC 寻址,如果主机 A 发送一个广播问询分组,那么 A 所在子网内的所有设备(接口)都将不会捕获该分组,因为该分组的目的 IP 地址在另一个子网中,本子网内不会有设备成功接收。那么,主机 A 应该发送怎样的查询分组呢?整个过程按照时间顺序发生的事件如下:
- 主机 A 查询 ARP 表,期望寻找到目标路由器的本子网接口的 MAC 地址。目标路由器指的是,根据目的主机 B 的 IP 地址,分析出 B 所在的子网,能够把报文转发到 B 所在子网的那个路由器。
- 主机 A 未能找到目标路由器的本子网接口的 MAC 地址,将采用 ARP 协议,问询到该 MAC 地址,由于目标接口与主机 A 在同一个子网内,该过程与同一局域网内的 MAC 寻址相同。
- 主机 A 获取到目标接口的 MAC 地址,先构造 IP 数据报,其中源 IP 是 A 的 IP 地址,目的 IP 地址是 B 的 IP 地址,再构造链路层帧,其中源 MAC 地址是 A 的 MAC 地址,目的 MAC 地址是本子网内与路由器连接的接口的 MAC 地址。主机 A 将把这个链路层帧,以单播的方式,发送给目标接口。
- 目标接口接收到了主机 A 发过来的链路层帧,解析,根据目的 IP 地址,查询转发表,将该 IP 数据报转发到与主机 B 所在子网相连的接口上。到此,该帧已经从主机 A 所在的子网,转移到了主机 B 所在的子网了。
- 路由器接口查询 ARP 表,期望寻找到主机 B 的 MAC 地址。
- 路由器接口如未能找到主机 B 的 MAC 地址,将采用 ARP 协议,广播问询,单播响应,获取到主机 B 的 MAC 地址。
- 路由器接口将对 IP 数据报重新封装成链路层帧,目标 MAC 地址为主机 B 的 MAC 地址,单播发送,直到目的地。
- 在LAN上的每个IP节点都有一个ARP表
以太网(Ethernet)
-
以太网
- 目前最主流的LAN技术:98%占有率
- 廉价:30元RMB 100Mbps
- 最早广泛应用的LAN技术
- 比令牌网和ATM网络简单、廉价
- 带宽不断提升:10M, 100M, 1G, 10G
- 物理拓扑
- 总线:在上个世纪90年代中期很流行
- 所有节点在一个碰撞域内,一次只允许一个节点发送
- 可靠性差,如果介质破损,截面形成信号的反射,发送节点误认为是冲突,总是冲突
- 星型:目前最主流
- 连接选择: hub 或者 switch
- Hubs 本质上是物理层的中继器:
- 从一个端口收,转发到所有其他端口
- 速率一致
- 没有帧的缓存
- 在hub端口上没有CSMA/CD机制:适配器检测冲突
- 提供网络管理功能
- Hubs 本质上是物理层的中继器:
- 现在一般是交换机在中心
- 每个节点以及相连的交换机端口使用(独立的)以太网协议(不会和其他节点的发送产生碰撞)
- 连接选择: hub 或者 switch
- 总线:在上个世纪90年代中期很流行
- 目前最主流的LAN技术:98%占有率
-
以太帧
- 发送方适配器在以太网帧中封装IP数据报,或其他网络层协议数据单元
- 前导码:用来同步接收方和发送方的时钟速率
- 使得接收方将自己的时钟调到发送端的时钟
- 从而可以按照发送端的时钟来接收所发送的帧
- 地址:6字节源MAC地址,目标MAC地址
- 如:帧目标地址=本站MAC地址,或是广播地址,接收,递交帧中的数据到网络层
- 否则,适配器忽略该帧
- 类型:指出高层协(大多情况下是IP,但也支持其它网络层协议Novell IPX和AppleTalk)
- CRC:在接收方校验
- 如果没有通过校验,丢弃错误帧
- 发送方适配器在以太网帧中封装IP数据报,或其他网络层协议数据单元
-
以太网:无连接、不可靠的服务
- 无连接:帧传输前,发送方和接收方之间没有握手
- 不可靠:接收方适配器不发送ACKs或NAKs给发送方
- 采用二进制退避的CSMA/CD介质访问控制形式
-
802.3 以太网标准:链路和物理层
- 很多不同的以太网标准
- 相同的MAC协议(介质访问控制)和帧结构
- 不同的速率:2 Mbps、10 Mbps 、100 Mbps 、 1Gbps、 10G bps
- 不同的物理层标准
- 不同的物理层媒介:光纤,同轴电缆和双绞线
- 很多不同的以太网标准
802.11WLAN
- IEEE 802.11 Wireless LAN
- 802.11b
- 使用无需许可的2.4-5 GHz 频谱
- 无绳电话和微波炉
- 最高11 Mbps
- 在物理层采用直接序列扩频direct sequence spread spectrum (DSSS)
- 所有的主机采用同样的序列码
- 802.11a
- 更高频率5-6 GHz
- 最高54 Mbps
- 距离相对短,受多路径影响大
- 802.11g
- 频率2.4-5 GHz
- 最大54 Mbps
- 与802.11b向后兼容
- 802.11n: 多天线MIMO
- 频率2.4-5 GHz
- 最高200 Mbps
- 不同:速率,物理层
- 相同:MAC, 帧格式
- 所有的802.11标准都是用CSMA/CA进行多路访问
- 所有的802.11标准都有基站模式和自组织网络模式
- 使用无需许可的2.4-5 GHz 频谱
- 802.11b
- 802.11LAN体系结构
- 信道与关联
- 802.11b: 2.4GHz-2.485GHz 频谱被分为11个相互不同的但是部分重叠的频段
- AP管理员为AP选择一个频率
- 可能的干扰: 邻居AP可能选择同样一个信道
- 主机: 必须在通信之前和AP建立associate
- 扫描所有的信道,侦听包含AP SSID和MAC地址的信标帧
- 主动扫描:主机发送探测,接受AP的响应
- 被动扫描
- 选择希望关联的AP
- 可能需要执行鉴别(认证)
- 基于MAC、用户名口令
- 通过AP的中继,使用RADIUS鉴别服务器进行身份鉴别
- 将会执行DHCP获得IP地址和AP所在的子网前缀
- 扫描所有的信道,侦听包含AP SSID和MAC地址的信标帧
- 802.11b: 2.4GHz-2.485GHz 频谱被分为11个相互不同的但是部分重叠的频段
- 802.11 帧
switches
- Hub:集线器
- 网段(LAN segments) :可以允许一个站点发送的网络范围
- 在一个碰撞域,同时只允许一个站点在发送(只能一个端口发)
- 如果有2个节点同时发送,则会碰撞
- 通常拥有相同的前缀,比IP子网更详细的前缀
- 所有以hub连到一起的站点处在一个网段,处在一个碰撞域
- 通过hub可扩展节点之间的最大距离
- 通过HUB,不能将10BaseT和100BaseT的网络连接到一起
- 网段(LAN segments) :可以允许一个站点发送的网络范围
- 交换机
- 链路层设备:扮演主动角色(端口执行以太网协议)
- 对帧进行存储和转发
- 对于到来的帧,检查帧头,根据目标MAC地址进行选择性转发
- 当帧需要向某个(些)网段进行转发,需要使用CSMA/CD进行接入控制
- 通常一个交换机端口一个独立网段
- 透明:主机对交换机的存在可以不关心
- 通过交换机相联的各节点好像这些站点是直接相联的一样
- 有MAC地址;无IP地址
- 即插即用,自学习:交换机无需配置
- 链路层设备:扮演主动角色(端口执行以太网协议)
- 交换机 vs. 路由器
- 都是存储转发设备,但层次不同
- 交换机:链路层设备(检查链路层头部)
- 路由器:网络层设备(检查网络层的头部)
- 都有转发表:
- 交换机:MAC地址转发维护交换表,按照MAC地址转发
- 执行过滤、自学习和生成树算法
- 即插即用;二层设备,速率高
- 执行生成树算法,限制广播帧的转发
- ARP表项随着站点数量增多而增多
- 路由器维护路由表,执行路由算法
- 路由算法能够避免环路,无需执行生成树算法,可以以各种拓扑构建网络
- 对广播分组做限制
- 不是即插即用的,配置网络地址(子网前缀)
- 三层设备,速率低
- 交换机:MAC地址转发维护交换表,按照MAC地址转发
- 都是存储转发设备,但层次不同
VLANS(Virtual Local Area Network)
- 带有VLAN功能的交换机(们)可以被配置成:一个物理LAN基础设施,虚拟成多个LANs
- 流量隔离: 从/到1-8端口的流量只会涉及到1-8
- 也可以基于MAC地址进行VLAN定义
- 动态成员: 成员可以在VLANs之间动态分配
- 在VLANs间转发:通过路由器进行转发 (就像他们通过各自的交换机相联一样)
- 实际操作中,设备生产商可以提供:交换机和路由器的单一设备
- 实际操作中,设备生产商可以提供:交换机和路由器的单一设备