Link Layer

Link Layer

1. Introduction

TCP/IP protocol suite 中的 link layer 的目的是为 IP 模块发送和接收 IP datagrams。它也被用于携带几个其他的协议消息来帮助支持 IP,例如 ARP。TCP/IP 支持很多不同的 link layers,取决于使用的网络硬件类型:wired LANs 比如 Ethernet,wireless 网络比如 Wi-Fi (wireless LAN)。

大部分的链接层技术都有相关的协议格式,描述网络硬件携带的 PDUs 的构建。我们称链接层的 PDU 为 frame。frame 格式通常支持的变长 frame 大小范围是几字节到几千字节。范围的上界被称为 maximum transmission unit (MTU)。

2. Ethernet and the IEEE 802 LAN/MAN Standards

在这里插入图片描述
carrier sense, multiple access with collision detection (CSMA/CD),站 (e.g.,计算机) 首先寻找当前被发送到网络上的信号,当网络空闲时发送它自己的 frame。这就是协议的 “carrier sense”。如果其他站碰巧同时发送,由此产生重叠的电流信号,作为冲突被检测到。在这种情况下,每个站在重写尝试前都等待随机长度的时间。时间从均匀分布的概率中选取,随后每次检测到冲突,时间长度乘 2。最近,每个站要么成功发送,或在尝试一定次数后超时。使用 CSMA/CD,网络上任一时刻只有一个 frame 正在进行传输。

访问方法例如 CSMA/CD 更正式的叫法为 Meida Access Control (MAC) 协议。有很多类型的 MAC 协议,其中一些基于让每个站尝试单独使用网络 (基于竞争的协议比如 CSMA/CD),其他一些基于预先安排好的协调 (e.g.,为每个站的发送分配时间槽)。
在这里插入图片描述

2.2 The Ethernet Frame Fromat

在这里插入图片描述

  • Preamble: 接收 interface 电路确定 frame 的到达时间,和编码位间的时间长度 (称为 clock recovery)。
  • SFD: start frame delimiter
  • DST: Destination,允许对单个站或多个站 (broadcast,multicast) 进行寻址。
  • SRC: Source – “MAC address” “link-layer address” “802 address” “hardware address” “physical address”
  • Length or Type:Type 指示 header 后跟随的数据类型,比如 IPv4,IPv6,ARP。基本的 Ethernet frame 大小为 1518 字节,但更新的标准拓展为 2000 字节。
  • P/Q Tag:用于 virtual LANs 和 quality-of-service (QoS) 指示器的 tags。
  • payload:Ethernet 的 payload area 总是 1500 字节,表示 Ethernet 的 MTU。
  • FCS:frame check sequence,检验 frame 的完整性。(CRC)

Ethernet frame 最小为 64 字节,48 字节的 payload data。最大为 1518 字节,4 字节的 CRC 和 14 字节的 header。该值代表一种妥协:如果 frame 包含一个错误 (接收到一个不正确的 CRC),仅有 1.5 KB 需要重新传输以修复该问题。

2.3 802.1p/q: Virtual LANs and QoS Tagging

随着交换的 Ethernet 的发展,有可能在一个 Ethernet LAN 中互联站点中的所有计算机。这样做的优点是任何主机能直接与其他主机通讯,使用 IP 和其他网络层协议,几乎不需要管理员配置。另外,broadcast 和 mulitcast 流量被分发到所有期望接收它的 hosts,不需要设置特殊的 multicast routing protocols。这些是将在多个站点放到同一 Ethernet 中的一些好处,broadcast 流量通往所有的计算机可能在很多计算机都使用 broadcast 时造成令人讨厌的网络流量数量。可能初一一些安全方面的考虑,不允许完全的 any-to-any 站通讯。

为了解决运行大型多用途的交换网络时出现的这些问题,IEEE 拓展 802 LAN 标准,在 802.1q 标准中赋予称为 virtual LANs (VLANs) 的能力。兼容的 Ethernet 交换机将 hosts 间的流量隔离在同一个 VLANs。注意因为这种隔离,两个 hosts 关联同一交换机,但运行在不同的 VLANs 上,需要一个 router 在它们之间进行流量传输。结合 switch/router 设备已经被创建出来以满足这种需求,最终 router 的性能被提升以匹配 VLAN 交换的性能。因此,VLANs 的吸引力有所下降,现代高性能 routers 更受青睐。尽管如此,它们依然在被使用,在一些环境中依然十分流行,理解它们十分重要。

几个方法被用于指定 station-to-VLAN 映射。通过 port 赋值 VLANs 是一种简单且常见的方法,依据站所关联的 switch port 被赋予一个 VLAN,任何这样关联的站都成为所关联的 VLANs 的成员之一。其他可选的方案包括 MAC-address-based VLANs,使用 Ethernet switch 中的表将站的 MAC 地址映射到对应的 VLAN。这种方法难于管理,因为站可能改变它们的 MAC 地址。IP 地址也能作为赋值 VLANs 的基础。

当不同 VLANs 中的站关联到相同的 switch 上时,switch 保证流量不会从一个 VLAN 泄漏到另一个中,与站所使用的 Ethernet interfaces 类型无关。当多个 VLANs 必须横跨多个 switch,在发送向下一个 switch 前标识 Ethernet frames 属于哪个 VLAN 十分必要。使用一个 tag 称为 VLAN tag (或 header) 来支持这一能力,它保存 12 位的 VLAN identifier (提供 4096 个 VLANs,虽然 VLAN 0 和 VLAN 4095 被保留)。它也包含一个 3 位的 priority 来支持 QoS,在 802.1p 标准中定义,如图 3-3 中所示。在很多情况下,管理员必须配置 switch 的端口,在合适的端口上激活 trunking,以在该端口上发送 802.1p/q frames。为了使这项工作容易一点,一些 switches 在集群端口上支持 native VLAN 选项,意味着默认情况下未标记的 frames 被关联到 native VLAN。集群端口被用于互联 VLAN-capable 的 switches,其他端口通常被用于关联站。一些 switches 对 VLAN trunking 还支持专用方法 (e.g.,Cisco inter-Switch Link(ISL) 协议)。

802.1p 指定一种机制表达每个 frame 上的 QoS 指示器。802.1p header 包含一个 3-bit-wide 的 Priority 字段,以表示 QoS 等级。这一标准是 802.1q VLAN 标准的拓展。两个标准一起工作,并共享相同 header 的位。使用 3 个可用的位,定义了 8 个服务等级。Class 0,最低优先级,用于传统的,尽最大努力的传输。Class 7 有最高优先级,可能用于关键的路由或网络管理功能。

2.4 802.1AX: Link Aggregation (Formerly 802.3ad)

一些系统配备有多个 network interface,能够进行 bondinglink aggregation。使用 link aggregation,两个或多个 interfaces 被视作一个,以通过冗余实现更高的可靠性或通过跨多个 interfaces 分割数据提供更好的性能。IEEE 修订 802.1AX 以定义执行 link aggregation 的大部分常见方法,以及用于管理 links 的 Link Aggregation Control Protocol (LACP)。LACP 使用 IEEE 802 frames 的一种特定格式 (称为 LACPDUs)。

在支持 link aggregation 的 Ethernet 交换机上使用 link aggregation 是一个划算的替代方案,替代具有高速网络端口的交换机。如果聚合多个端口就能提供足够的带宽,可能高速端口就不再需要了。link aggregation 可能不仅仅在网络交换机上支持,在 host 计算机上的多个 network interface cards (NICs) 之间也支持。通常,聚合端口必须有相同的类型,运行在相同的模式下 (i.e.,半双工或全双工)。

3. Full Duplex,Power Save,Autonegotiation,and 802.1 X Flow Control

最初 Ethernet 开发出来时,它仅能使用一根共享电缆以半双工模式运行。即,数据在同一时刻仅能单向发送,所以同一时刻只能有一个站能发送 frame。随着交换的 switches 出现,网络不再是一根共用的线路,而是很多链接的集合。结果,多对站能够同时相互交换数据。此外,Ethernet 被修改为以全双工模式运行,致使碰撞检测电路不复存在了。同时这也使得 Ethernet 的物理长度得以拓展,因为去除了半双工操作和碰撞检测相关的时间约束。

autonegotiagtion 源于 802.3u,能使 interface 间交换诸如速度,能力 (全双工,半双工运行) 等的信息。自动协商信息在物理层使用信号进行交换,信号在数据没有被传输或接收时发送。

3.1 Duplex Mismatch
3.2 Weke-on LAN (WoL), Power Save, and Magic Packets
3.3 Link-Layer Flow Control

以全双工模式运行一个拓展的 Ethernet LAN,跨越不同速度的分段可能需要 switches 缓存 frames 一段时间。例如,当多个站向相同的目的地发送时这一情况发送 (称为输出端口竞争)。如果对某站的总流量率超过该站的链接率,frames 开始存储于中间的 switches 上。如果这一情况持续很长时间,frames 可能会被丢弃。

减轻这一情况的方法之一是对发送方使用 flow control (比如,减缓发送速率)。一些 Ethernet switches (和 interface) 通过在 switches 和 NICs 之间发送特殊的信号 frame 来实现 flow control。flow control 通知发送方必须减缓它的传输率。Ethernet 使用的 flow control 实现称为 PAUSE message (也被称为 PAUSE frames),由 802.3x 指定。

PAUSE 消息被包含在 MAC 控制 frames 中,由 Ethernet Length/Type 字段标识,值为 0x8808,且使用 MAC 控制操作码 0x0001。它们通常包含 hold-off 时间值,表明发送方在继续传输前应等待多长时间。

使用 Ethernet-layer flow control 可能有严重的消极边界效应,因此通常不使用。当多个站发送通过一个 switch,switch 变得过载,可能会自动向所有 hosts 发送 PAUSE frames。不幸的是,switch 的内存利用率可能与发送的 hosts 不对称,因此其中一些 hosts 可能会被惩罚(flow control) 即使它们不负责传输很多流量通过 switch。

4 Bridges and Switches

IEEE 802.1d 标准规定 bridges 和 switches 的操作,switches 本质上是高性能的 bridges。bridge 或 switch 被用于加入多个物理 link-layer networks (e.g.,一对物理 Ethernet segments) 或 station 组。最基础的设置是连接两个 switches 以形成一个拓展的 LAN,如图 3-8 所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.1 Spanning Tree Protocol (STP)
4.2 802.1ak: Multiple Registration Protocol (MRP)

5. Wireless LANs – IEEE 802.11 (Wi-Fi)

在这里插入图片描述

6. Point-to-Point Protocol (PPP)

PPP 代表 Point-to-Point Protocol,是一个在串行链接上携带 IP datagram 的流行的方法,从低速调制解调器到高速光学链接。它被一些 DSL 服务供应商广泛应用,DSL 服务供应商也用它对 Internet 系统参数进行赋值 (e.g.,初始化 IP 地址和域名服务器)。

PPP 应当被认为是协议的结合,而非是单个协议。它支持一个简练链接的基础方法,称为 Link Control Protocol (LCP),和 NCPs 族,用于在 LCP 建立了基础链接后,为不同类型的协议建立 network-layer 链接,包括 IPv4,IPv6 和可能的非 IP 协议。大量相关的标准涉及 PPP 的压缩和加密的控制,且当链接建立时,大量身份验证方法能被使用。

6.1 Link Control Protocol (LCP)

PPP 的 LCP 部分被用于建立和维护 point-to-point 链接上的 low-level two-party 通讯路径。PPP 的行为因此仅需考虑单个链接的两端,不需要像 MAC-layer 协议例如 Ethernet,Wi-Fi 一样处理共享资源的中介访问问题。

PPP 通常,更确切地说是 LCP,对底层的 point-to-point 链接施加最小的需求。链接必须支持双向操作 (LCP 使用 acknowledgments) 且同步或异步运行。
在这里插入图片描述

6.2 Multicast PPP (MP)

PPP 的一个特殊选项被称为 multilink PPP (MP),能被用于聚合多个 point-to-point 链接,使它们表现得像一个。
在这里插入图片描述

6.3 Compression Control Protocol (CCP)

双端协商压缩配置。

6.4 PPP Authentication

Password Authentication Protocol (PAP),一端请求另一端提供密码。
Challenge-Handshake Authentication Protocol (CHAP),一端向另一端发送一个随机值 (称为 authenticator)。另一端使用一个特殊的 one-way (i.e.,不能简单逆向) 函数,将 shared secret key (通常由 password 继承而来) 与该随机值结合以产生一个数字,并在响应中发送。当接收到该响应时,验证方很大程度上能确定对端处理了正确的 secret key。这一协议不在链接上以清晰的 (未加密的) 形式发送 key 或者 password。因为每次使用不同的随机值,每次执行函数的结果也不同,所以窃听者无法重用捕获的值假扮对端。然而,CHAP 很容易受到 “man in the middle” 形式的攻击。

EAP 是一种身份验证框架,能用于多种不同的网络类型。

6.5 Network Control Protocols (NCPs)

一旦 LCP 完成链接建立和权限验证,链接的任何一段都会进入 Network 状态且使用 0 个或多个 NCPs (例如 IPCP) 进行网络层关系协商。

6.6 Header Compression

7. Loopback

很多情况下,client 希望和在相同的计算机上的 server 使用 Internet 协议 (例如 TCP/IP) 进行通讯,为了做到这一点,大部分的实现支持 network-layer loopback 功能,通常采用 virtual loopback network interface 形式实现。它表现得像真实的 network interface,但实际上它是一个操作系统提供的特殊的软件以支持在同一计算机上的 TCP/IP 和其他通讯。以 127 起始的 IPv4 地址为此保留,IPv6 地址是 ::1。Traditionally,UNIX-like 的系统将 IPv4 地址 127.0.0.1 赋予 loopback interface 且将名字 localhost 赋予它。一个发送给 loopback 的 IP datagram 不会出现在网络上。虽然我们可以想象 transport layer 检测到另一端是 loopback 地址,简化了一些 transport-layer 的逻辑和所有的 network-layer 逻辑,大部分的实现完全执行了在 transport layer 和 network layer 中的数据处理,仅当 datagram 离开 network layer 底部时,将 IP datagram 环回到 network stack 中。这对性能测量来说十分有用,例如,因为栈软件执行所需要的时间能够在没有任何硬件开销的情况下进行测量。

8. MTU and Path MTU

link-layer networks 例如 Ethernet 上的 frame 的大小是有限制的。Ethernet 通常限制 payload 的字节数约为 1500 字节,为了维持兼容性,PPP 的限制通常是相同的数量。这一链接层的特性被称为 maximum transmission unit (MTU)。大部分的 packet networks (比如 Ethernet) 有一个固定的上限。大部分的 stream-type networks (serial links) 有一个可配置的限制,被用于 framing 协议例如 PPP。如果 IP 有一个 datagram 需要发送,且该 datagram 的大小超过 link-layer network 的 MTU,IP 需要执行 fragmentation,将 datagram 切割成小于 MTU 的 fragments。

当两个 hosts 跨域多个网络进行通讯时,每个 link 都有不同的 MTU。网络路径上最小的MTU 被称为 path MTU

9. Tunneling Basics

Tunneling,通常来说,是在更高的层的 packets 中携带更低层的流量。例如,IPv4 能被 IPv4 或 IPv6 包携带,Ethernet 能被 UDP 或 IPv4 或 IPv6 packet 等携带。Tunneling 颠覆了严格的网络分层的概念,允许形成覆盖网络 (i.e.,“link” 实际上是 virtual link,由其他的协议实现而非物理连接)。

Generic Rounting Encapsulation
用于在 ISPs 间或服务分支办公室的企业内网间的网络基础设施上携带流量,不加密。GRE 使用 IPv4 和 IPv6 携带流量,所以它是 layer 3 tunneling 技术。
在这里插入图片描述

  • C 表示 Checksum 是否存在。
  • K 表示 Key 是否存在。
  • S 表示 Sequence Number 是否存在。
  • Key 标识 packet 是否属于同一个 packets 流。
  • Sequence Number 用于对乱序到达的 packets 排序。

Point-to-Point Tunneling Protocol
用于用户和 ISPs 间或公司内网,加密。
结合 GRE 和 PPP,所以 GRE 能提供 virtual point-to-point network,在其上 PPP 运行。PPTP 常用于携带 layer 2 的 frames (例如 Ethernet),所以它直接模仿一个直接的 LAN (link-layer) 连接。可被用于远程访问公司网络。
PPTP 使用 GRE header 的非标准变体:
在这里插入图片描述

9.1 Unidirectional Links

10. Attacks on the Link Layer

11. Summary

  • VLANs
  • priorities
  • link aggregation
  • frame format
  • switch
  • bridge
  • Ethernet
  • wireless LAN,Wi-Fi
  • WEP
  • WPA (WPA2)
  • PPP:compression,encryption,authentication,link aggregation。
  • loopback interface
  • MTU,path MTU
  • tunneling
  • link-layer attacks: intercept traffic for analysis, masquerading as endpoint, modifying traffic in transit,compromise control information
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值