TCPIP详解 卷1协议 三 链路层

3.1------以太网和IEEE802局域网/城域网标准

以太网这个术语通常指一套标准,由DEC,Intel公司和Xerox公司在1980年首次发布,并在1982年加以修订。第一个常见格式的以太网,目前被称为10Mb/s以太网或共享以太网。它被IEEE采纳为802.3标准。

这种网络的结构通常为:基本的共享以太网包含一个或多个站,他们都被连接到一个共享的电缆段上。当介质被确定为空闲状态时,链路层的PDU(帧)可以从一个站发送到 一个或更多其他站。

由于多个站共享同一网络,该标准需要在每个 以太网接口实现一种分布式算法,已控制一个站发送自己的数据。这种方法叫做带冲突检测的载波侦听多路访问(CSMA/CD)。

带冲突检测的载波侦听多路访问(CSMA/CD):采用CSMA/CD一个站首先检测目前网络上正在发送的信号,并在网络空闲时发送自己的帧。这是载波侦听部分,如果其他站碰巧 同时发送,发生重叠的电信号被检测为一次碰撞。在这种情况下,每个站等待一个随机事件,然后再次尝试发送。这个时间量的选择依据一个统一的概率分布,随后每个碰撞被检测到的时间长度加倍。最终,每个站得到 机会发送,或在尝试一定次数(传统以太网为16)后超时。采用CSMA/CD,在任何给定的时间内,网络中只能有一个帧传输。所以更正式的名称为介质访问控制协议(MAC)

MAC协议有很多类型:

  • 基于每个站尝试独立使用网络(例如CSMA/CD的基于竞争的协议)
  • 基于预先安排的协调(例如依据为每个站分配的时段发送)

随着10Mb/s以太网的发展,其速度从10Mb/s,到100Mb/s,1000Mb/s,10Gb/s,甚至更高。随着100Mb/s的发展,基于竞争的MAC协议已变得不流行,想反,局域网中每个站之间的线路通常不共享,而是提供了一个专用的星型拓扑结构。这可以通过以太网交换机来实现。交换机为以太网中的每个站提供同时发送和接收数据的能力(全双工以太网)

3.1.1 IEEE 802局域网/城域网标准

原始的以太网帧格式和工作过程由前面提到的行业协议所描述,这种格式被称为DIX格式或Ethernet II格式。对这种类型的以太网稍加修改后,由IEEE标准化为一种CSMA/CD网络,称为802.3。在IEEE标准中带802前缀的标准定义了局域网和城域网的工作过程。

有关TCP/IP协议的局域网和城域网IEEE 802标准(2011)

名称 描述
802.1ak 多注册协议(MRP)
802.1AE MAC安全(MACSec)
802.1AX 链路聚合(以前的802.3ad)
802.1d MAC网桥
802.1p 流量类/优先级/QoS
802.1q 虚拟网桥的局域网/MRP的更正
802.1s 多生成树协议(MSTP)
802.1w 快速生成树协议(RSTP)
802.1X 基于端口的网络访问控制(PNAC)
802.2 逻辑链路控制(LLC)
802.3 基于以太网和10Mb/s以太网
802.3u 100Mb/s以太网("快速以太网")
802.3x 全双工运行和流量控制
802.3z/802.3ab 1000Mb/s以太网("千兆以太网")
802.3ae 10Gb/s以太网("万兆以太网")
802.ad 链路聚合
802.3af 以太网供电(PoE,15.4W)
802.3ah 以太网接入(第一公里以太网)
802.3as 帧格式扩展(2000字节)
802.3at 以太网供电增强("PoE+",30W)
802.3ba 40/100Gb/s以太网
802.11a 运行在5GHz的54Mb/s的无线局域网
802.11b 运行在2.4GHz的11Mb/s的无线局域网
802.11e 针对802.11的QoS增强
802.11g 运行在2.4GHz的54Mb/s的无线局域网
802.11h 频谱/电源管理扩展
802.11i 安全增强/代替WEP
802.11j 运行在4.9~5.0GHz(日本)
802.11n 运行在2.4GHz和5GHz的6.5~600Mb/s的无线局域网,使用可选的MIMO和40MHz信道
802.11s(草案) 网状网,拥塞控制
802.11y 运行在3.7GHz的54Mb/s的无线局域网(许可的)
802.16 微波存取全球互通技术(WiMAX)
802.16d 固定的无线城域网标准(WiMAX)
802.16e 固定/移动的无线城域网标准(WiMAX)
802.16h 改进的共存机制
802.16j 802.16中的多条中继
802.16k 802.16网桥
802.21 介质无关切换介质无关切换

常见的无线局域网(WLAN)IEEE标准称为无线保真或Wi-Fi,有时也称为无线以太网或802.11。虽然这个标准与802有限以太网标准不同,但帧格式和通用接口大部分来自802.3,并且都是802局域网标准的一部分,因此TCP/IP用于以太网的大部分功能,也可用于Wi-Fi网络。虽然最初的以太网使用CSMA/CD,单无线局域网常使用CSMA/CA(CA的是冲突避免)。

3.1.2 以太网帧格式

|---|---|---|---|---|---|---|-----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 前导 ||||||| SFD | DST |||||| SRC |||||| 长度或类型 || P/Q标签 || 其他标签 || 上层协议有效载荷(通常最大为 1500字节) |||||||||| 填充 || FCS |||| 载体扩展(仅半双工) ||||||||||
| 7字节 ||||||| 1 | (6) |||||| 6 |||||| (2) || (0/2) || || (0~1982) |||||||||| (0+) || 4 |||| (可变的) ||||||||||
| |||||||||||||||||||||| < ------------------------------ MAC客户机数据 ------------------------------ > |||||||||||||||| ||||||||||||||
| |||||||| < --------------------------------------------------------------------------------------- 帧 --------------------------------------------------------------------------------------- > |||||||||||||||||||||||||||||||||| ||||||||||
| < ---------------------------------------------------------------------------------------------------------------------------------- IEEE "分组" ---------------------------------------------------------------------------------------------------------------------------------- > ||||||||||||||||||||||||||||||||||||||||||||||||||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

**其他标签:在信封帧中允许最大482字节的标签(Q标签帧是信封帧)。**

802.1p/q标签(如果存在)

|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|-----|---|---|---|---|---|---|---|---|---|---|---|---|
| 标签/协议ID |||||||||||||||| 优先级 ||| CFI | VLAN ID ||||||||||||
| 16位 |||||||||||||||| 3 ||| 1 | 12 ||||||||||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

  1. 前导:接收器电路用它确定一个帧的到达时间 ,并确定编码位(称为时钟恢复)之间的时间量。由于以太网是一个异步的局域网(即每个以太网接口卡中不保持精确的时间同步,)从一个接口到另一个接口的编码位之间的间隔可能不同。前导是一个公认模式(典型值为0xAA),在发现帧起始分隔符(SFD)时,接收器使用它,恢复时钟 。SFD固定值为0xAB。

  2. SFD:帧起始分隔符,接收器使用它,恢复时钟 。SFD固定值为0xAB。

  3. DST:48位(6字节)目的地址。

  4. SRC:48位(6字节)源地址。

  5. 长度或类型:如果字段值大于等于1536该字段表示类型,如果字段值小于等于1500,该字段表示长度。多数情况下用于确定头部后面的数据类型。TCP/IP网络使用的常见值包括IPv4(0x0800),IPv6(0x86DD)和ARP(0x0806)。0x8100表示一个Q标签帧(可携带一个"虚拟局域网"或802.1q标准的VLAN ID)。一个以太网帧的基本大小是1518字节,最近标准将该值扩大到2000字节。

  6. P/Q标签:提供虚拟局域网和一些服务质量Qos指示符。

  7. 其他标签:提供最大为482字节的标签,它携带在每个以太网帧中,较大的帧称为信封帧,长度最大为2000字节,包含802p/q标签的帧为Q标签帧,也是信封帧。

  8. 有效载荷:这里是放高层PDU(例如IP数据报)的地方。以太网有效载荷一直是1500字节,它代表以太网MTU。

  9. 填充:填充有效载荷,以确保帧总长度符合最小长度要求。

  10. FCS:帧的校验序列(FCS)。循环冗余校验(CRC)字段位于尾部,32位,有时称之为IEEE/ANSI标准的CRC32。

    要使用一个n位CRC检测数据传输错误:

    首先,被检查的消息要追加n位0形成一个扩展消息。

    然后,扩展消息使用模2除法除以一个 n+1位的值(生成多项式)。以太网使用n=32。得到余数(商被丢弃)。

    然后,把改余数的反码放置在帧的CRC或帧的校验序列(FCS)中。

    最后,在接收到数据之后,接收方执行相同的除法计算出余数,并判断该值与FCS字段中的值是否匹配。如果不匹配,帧可能在传输过程中受损,通常被丢弃。

  11. 载体扩展(仅半双工):

帧大小

以太网帧有最小和最大尺寸。最小的帧是64字节,要求数据区(有效载荷)长度(无标签)最小为48字节。当有效载荷较小时,填充字节(值为0)被添加到有效载荷尾部,以确保达到最小长度 。最大帧长度是1518字节(包括4字节CRC和14字节头部)。MTU大小限制为1500字节。

基本帧:64~1518字节

Q标签帧:64~1522字节

**信封帧:64~2000字节 **

3.1.3 802.1p/q:虚拟局域网和QoS标签

为了解决大型多用途交换网络运行中的问题,IEEE采用一种称为虚拟局域网(VLAN)的 功能扩展 802 LAN标准,它被定义在 802.1q标准中。兼容 的 以太网交换机将主机之间的流量分隔为常见的VLAN。正是由于这种分隔,连同在同一交换机但在不同VLAN中的两台主机 ,他们之间的流量需要一台路由器来传递。

工作站到VLAN的映射方法:

  • 通过端口分配VLAN:交换机端口所连接的站被分配在一个特定VLAN中,这样连接的任意站都成为VLAN中的成员。
  • 基于MAC地址的VLAN:以太网交换机使用表将一个 站的MAC地址映射到一个VLAN。
  • 基于IP地址的VLAN

当多个VLAN跨越多个交换机(中继)时,在以太网帧发送到另一台交换机之前,需要使用VLAN来标记该帧的归属。本功能使用一个称为VLAN标签(或头部)的标记,其中包含12位VLAN标识符(提供4096个VLAN,但保留VLAN 0 VLAN 4095)。还包含支持QoS的3位优先级(在802.1p标准中规定了帧中表示QoS标识符的机制,802.1p头部包含一个3位优先级字段,它用于表明一个QoS级别。这个标准是 802.1q VLAN标准的扩展。这两个标准可以一起工作 ,并在同一个头部 中共享某些位)。3位定义了8个服务级别。0为最低级,用于传统尽力而为的流量,7为最高优先级,可用于关键路由或网管功能。如果802.1p/q头部中的VLAN ID字段被设置为0,802.1p可以独立于VLAN使用。

|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|-----|---|---|---|---|---|---|---|---|---|---|---|---|
| 标签/协议ID |||||||||||||||| 优先级 ||| CFI | VLAN ID ||||||||||||
| 16位 |||||||||||||||| 3 ||| 1 | 12 ||||||||||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

在很多情况下,管理员必须配置交换机端口,以便发送802.1p/q帧时能中继到适当的端口。为了使这项工作更加容易,有些交换机通过中继端口支持本地VLAN选项,这意味着未标记的帧默认与本地VLAN相关。中继端口用于互连带VLAN功能的交换机,其他端口通常用于直接连工作站。

3.1.4 802.1AX:链路聚合(以前的802.3ad)

有些系统配备多个网络接口,具有绑定(bonding)或链路聚合的能力。通过链路聚合,两个或更多接口被视为一个,通过冗余或将数据分割(分拆)到多个接口,提高性能并获得更好的可靠性。IEEE修订的802.1AX定义了最常用的 链路聚合方法,以及可管理这些链路的链路聚合控制协议(LACP)。LACP使用一种特定格式的IEEE 802帧(称为LACPDU)。

LACP协议旨在通过避免手工配置,以简化链路聚合的建立工作。在LACP"主角"(客户端)和"参与者"(服务器)启用后,它们通常每秒都会发送LACPDU。LACP自动确定哪些成员链路可被聚合成一个链路聚合组(LAG),并将他们聚合起来。这个过程的实现需要通过链路发送一系列信息(MAC地址,端口优先级,端口号,密钥)一个接收站可比较来自其他端口的值,如果匹配就执行聚合。

3.2------全双工,省电,自动协商和802.1X流量控制

  • 最初的以太网:半双工,共享电缆,同一时间内只能在一个方向发送数据,任何时间点只有一个站发送一个帧。
  • 发展的以太网:不再是单一的共享线路,是很多链路的组合,多个站之间可以同时进行数据交换,以太网被修改为全双工操作。可以有效禁用冲突检测电路,也可以增加以太网的物理长度。因为半双工操作和冲突检测的相关时间约束被取消。

自动协商:这是一种来源于802.3u的机制,使接口能交换信息(例如速度)和功能(例如半双工或全双工运行)。自动协商信息在物理层通过信号交换,它可在不发送或接收数据时发送。

3.2.1 局域网唤醒(WoL),省电和魔术分组

Windows唤醒功能和Linux唤醒选项用于使网络接口或主机脱离低功耗(睡眠)状态,这是基于某种分组的传输来实现的。这种分组用来触发可配置的功率状态改变。

在Linux中,用于唤醒的值可以是零,或者是多个用于低功耗状态唤醒的位,他们可以被以下几种帧所触发:

  • 任何物理层(PHY)活动(p)
  • 发往站的单播帧(u)
  • 组播帧(m)
  • 广播帧(b)
  • ARP帧(a)
  • 魔术分组帧(g)
  • 包括密码的魔术分钟帧

window提供类似的功能,但标准的用户接口只支持魔术分组帧,以及一个预定义的u,m,b和a类型帧的子集。

魔术分组包含一个字节值(0xFF)的特定重复模式。在通常情况下这种帧采用UDP分组形式封装在以太网广播帧中发送。

3.2.2 链路层流量控制

如果一个站聚会的流量速率超过该站的链路速率,那么帧就开始存储在中间交换机中。如果这种情况持续一段时间,这些帧可能被丢弃。

缓解这种情况的一种方法是在发送方采取流量控制(使它慢下来)一些以太网交换机(和接口)通过在交换机和网卡之间发送特殊信号帧来实现流量控制。流量控制信号被发送到发送方,通知它必须放慢传输速率。,但规范将这些细节留给具体实现来完成。以太网使用PAUSE消息(也称PAUSE帧)实现流量控制,它由802.3x来定义。

PAUSE消息包含在MAC控制帧中,通过将以太网长度/类型字段值设为0X8808,以及使用MAC操作控制码0x0001来标识。如果一个站收到这种帧,表示建议它减缓发送速度。PAUSE帧总是被发送到MAC地址01:80:C2:00:00:01(固定的以太网多播地址),并且只能在全双工链路上使用。它包含一个保持关闭(hold-off)时间值(指定量为512比特时间),表明发送方在继续发送之前需要暂停多长时间。

PAUSE采用基本封装帧的格式,但是紧跟在长度/类型字段后的是一个2字节的操作码。PAUSE帧实际上是唯一一种使用MAC控制帧的帧类型。它包括一个2字节的保持关闭时间。整个MAC控制层(基本只是802.3x流量控制)的实现是可选的。

以太网层次的流量控制可能有重大负面影响,因此通常并不使用它。

3.3------网桥和交换机

IEEE 802.1d标准规定了网桥的操作,交换机本质上是高性能的网桥。网桥或交换机用于连接多个物理的链路层网络(例如一对物理的以太网段)或成组的站。最基本的设置涉及连接两个交换机来形成一个扩展的局域网。

计算机1(00:17:f2:a2:10:3d) 服务器1(00:30:48:2b:19:82)

​ \ /

​ 2 10

​ 交换机A(00:0d:66:4f:02:03) 3 ------------------------------------------------ 9 交换机B(00:0d:66:4f:02:04)

​ 1 11

​ / \

计算机2(00:c0:19:33:0a:2e) 服务器2(00:30:48:2b:19:86)

每个网桥经过一段时间对域外MAC地址的学习后,最终每个交换机会知道每个站可由哪个端口到达。每个交换机基于每个端口(也可能是每个VLAN)的列表被存储在一张表(称为过滤数据库)中。

端口
00:17:f2:a2:10:3d 2
00:c0:19:33:0a:2e 1
00:0d:66:4f:02:03
00:0d:66:4f:02:04 3
00:30:48:2b:19:82 3
00:30:48:2b:19:86 3
端口
00:17:f2:a2:10:3d 9
00:c0:19:33:0a:2e 9
00:0d:66:4f:02:03 9
00:0d:66:4f:02:04
00:30:48:2b:19:82 10
00:30:48:2b:19:86 11

当第一次打开一个交换机(网桥)时,它的数据库是空的,它每次接收到一个目的地不是自己的帧时,它为除该帧到达的端口之外的所有端口做一个备份,并向所有端口发送这个帧的备份。如果交换机(网桥)没有学习到站的位置,每个帧将会被交付到每个网段,这样会导致不必要的开销 。在每一次学习一个地址后,网桥启动一个计时器(通常默认为5分钟),如果在指定的有效期内,没有再次看到该条目中的地址,则将这个条目删除。当一个条目因有效期满而被删除时,后续的帧将被发送到接收端口之外的所有端口(称为洪泛),并更新过滤数据库中的的这个条目。

3.3.1 生成树协议

网桥可能单独或与其他网桥共同运行,当两个以上的网桥使用(或交换机端口交叉连接)时,由于存在级联的可能性,因此可能形成很多组的循环帧。当这些帧到达时,转发数据库开始出现震荡,这是由于网桥反复尝试查找通过哪些端口可以到达。生成树协议(STP)就是为了避免这种情况。

STP通过每个网桥禁用某些端口来工作,这样可以避免拓扑环路(即两个网桥之间不允许出现重复路径)。在数学上,一个生成树是一张图中所有节点和一些线的集合,从任何节点到其他节点(跨越图)有一条路径或路由,但是没有环路(这些线的集合构成一颗树)。一张图可能存在多个生成树。STP用于找出这张图的其中一个生成树,改图将网桥作为节点并将链路作为线。

生成树的形成和维护由多个网桥完成,在每个网桥上运行一个分布式算法。用于转发数据库时,STP必须处理以下情况,例如网桥启用和关闭,接口卡更换或MAC地址改变。显然,这种变化可能影响生成树运行,因此STP必须适应这些变化。这种适应通过交换一种称为**网桥协议数据单元(BPDU)**的帧来实现 。这些帧用来形成和维护生成树。这棵树生长自一个网桥------该网桥由其他网桥选举为根网桥。

一个网络可能存在多个生成树。如何确定哪棵生成树最适于转发帧,这基于每条链路和根网桥位置的相关成本,这个成本是一个与链路速度成反比的整数(建议)。例如,一条10Mb/s链路的成本为100,100Mb/s和1000Mb/s链路的成本分别为19和4。STP计算到根网桥的成本最小的路径。如果必须遍历多条链路,相关成本是这些链路成本之和。

3.3.1.1 端口状态和角色

​ 拓扑改变============

​ || ||

​ / ||

初始化======>阻塞(丢弃 )==最大时间(20s)=>侦听(丢弃) ==转发延时(15s)=>学习

​ /\ /\ | | / ||

​ // || | -------------------------------- / ||

​ || || | / / ||

​ || || | / ---------------------------------------------------------------------------- ||转发延时

​ || || / / ||(15s)

​ || 禁用(丢弃) <----------------------------------------------- 转发 <=拓扑改变=

​ || ||

​ 拓扑改变=====

网桥端口的5个状态:

  • 阻塞:初始化后,一个端口进入阻塞状态。在这种状态下,它不进行地址学习,数据转发或BPDU发送,但它会监控接收的BPDU,并在它需要被包含在将到达的根网桥的路径中的情况下,使端口转换到侦听状态。
  • 侦听:在侦听状态下,改端口允许发送和接收BPDU,但不进行地址学习或数据转发。经过一个典型的15秒的转发延迟,端口进入学习状态。
  • 学习:被允许执行数据转发之外的所有操作,在进入转发状态并开始转发数据之前,需要等待另一个转发延迟。
  • 转发
  • 禁用

相对于端口状态机,每个端口都扮演一定的角色。

  • 根端口:生成树中位于指向根的线段终点的那些端口。
  • 指定端口:处于转发状态,并与根相连线段中路径成本最小的端口。
  • 备用端口:是与根相连线段中成本更高的端口。它们不处于转发状态。
  • 备份端口:是指连接到同一线段中作为同一网桥指定端口使用的端口。因此,备份端口可轻易接管一个失效的指定端口,而不影响生成树拓扑的其余部分,但是它不能在全部网桥失效的情况下提供一条到根的备用路径。

3.3.1.2 BPDU结构

|---|---|---|---|---|---|---|-----|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|------|------|------|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 前导 ||||||| SFD | DST |||||| SRC |||||| L/T || LLC/SNAP ||| Port || Vers | Type | Flag | 根ID |||||||| 根路径成本 |||| 网桥ID |||||||| PID || MsgA || MaxA || Hello Time || 转发延迟 || FCS ||||
| 7字节 ||||||| 1 | 6 |||||| 6 |||||| 2 || 3 ||| 2 || 1 | 1 | 1 | 8 |||||||| 4 |||| 8 |||||||| 2 || 2 || 2 || 2 || 2 || 4 ||||
| ||||||||||||||||||||||||| < ---------------------------------------------------------------------------------------------- BPDU ---------------------------------------------------------------------------------------------- > ||||||||||||||||||||||||||||||||||| ||||
| |||||||| < -------------------------------------------------------------------------------------------------------------------------------------------------------- 帧 -------------------------------------------------------------------------------------------------------------------------------------------------------- > ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

Flags
由802.1w定义

|----|---|---|---|---|---|---|-----|
| TC | P | 端口角色 || L | F | A | TAC |
| 1 | 1 | 2位 || 1 | 1 | 1 | 1 |
| | | | | | | | |

此结构适用于最初的STP,以及新的RSTP。BPDU总被发送到组地址01:80:C2:00:00:00。并且不会通过一个未修改的网桥转发。

  • 前导
  • SFD
  • DST:目的地址
  • SRC:源地址
  • L/T:长度/类型
  • LLC/SNAP:3字节的LLC/SNAP头部由802.1定义,并针对BPDU被设置为常数0x424203。并非所有BPDU都使用LLC/SNAP封装,但这是一个常见选项
  • Port:协议号ID,被设置为0
  • Vers:版本,被设置为0或2,取决于使用 STP还是RSTP
  • Type:类型,分配与版本类似
  • Flag:包含拓扑变化(TC)和拓扑变化确认(TCA)位,它们由最初的802.1d标准定义。附加位被定义为建议(P),端口角色(00为未知,01为备用,10为根 ,11为指定),学习(L),转发(F)和协议(A)。
  • 根ID:给出发送方使用的根网桥标识符,即从网桥ID字段中获得的MAC地址。这些ID字段都用一种特殊方式编码,包括MAC地址之前的一个2字节的优先级字段。优先级的值可通过管理软件来设置,以强制要求生成树采用某个特定网桥作为根。
  • 根路径成本:是在根ID字段中指定的计算出的到达某个网桥的成本
  • 网桥ID:
  • PID:端口标识符和由发送帧给出的端口号,它被附加在一个可配置的1字节的优先级字段(默认为0x80)之后
  • MsgA:消息有效期。不是固定值,当根网桥发送一个BPDU时,它将该字段设置为0。网桥转发接收到的不是根端口的帧,并将消息有效期字段加1。本质上来说,该字段是一个跳步计数器,用于记录BPDU经过的网桥数量。当一个BPDU被一个端口接收时,其包含的信息在内存和STP算法参与者中被保存至超时(超时发生在(MaxA-MsgA)时刻)。如果超过这个时间,根端口没有接收到另一个BPDU,根网桥宣布死亡,并重新开始根网桥选举过程。
  • MaxA:最大有效期,指出超时(默认20s)的最大期限。所有有效期和时间字段可在1/256秒内获得。
  • Hello Time:欢迎时间,指出配置帧的传输周期
  • 转发延迟:指出处于学习和侦听状态的时间
  • FCS

3.3.1.3 建立生成树

STP的第一个工作是选举根网桥。根网桥是在网络(或VLAN)中标识符最小(优先级与MAC地址结合)的网桥。当一个网桥初始化时,它假设自己是根网桥,并用自己的网桥ID作为根ID字段的值发送配置BPDU消息,如果它检测到一个ID更小的网桥,则停止发送自己的帧,并基于接收到的ID更小的帧构造下一步发送的BPDU。发出根ID更小的BPDU的端口被标记为根端口(即端口在到根网桥的路径上)。剩余端口被设置为阻塞或转发状态。

3.3.1.4 拓扑变化

STP的另一个重要工作是处理拓扑变化。虽然可用前面所述的数据库有效期机制适应拓扑变化,但这是一个比较差的方法,因为有效期计时器需要花费很长时间(5分钟)删除错误条目。相反,STP采用一种方法检测拓扑变化,并快速通知它们所在的网络。在STP中,当一个端口进入阻塞或转发状态时,意味着发生拓扑变化。当网桥检测到一个连接变化(例如一条链路故障),它向根端口之外的端口发送拓扑变化通知(TCN)BPDU,通知自己在树中的父网桥,直到根为止,树中通向根的下一个网桥向发送通知的网桥确认TCN BPDU,并将它们转发到根,当接收到拓扑变化通知时,根网桥在后续的周期性配置消息中设置TC位。这种消息被网络中的每个网桥转发,并被处于阻塞或转发状态的端口接收。设置这个位允许网桥减小转发延时计时器的有效期,将有效期以秒代替推荐的5分钟。这样,数据库中已有的错误条目可被快速清除和重新学习,同时允许访问那些被误删除的条目。

3.3.1.5 快速生成树协议(RSTP)

传统STP的问题之一是在拓扑变化之后,只能通过一定时间内未接收到BPDU来检测。 如果这个超时很大,收敛时间(沿着生成树重新建立数据流的时间)可能比预期大。IEEE 802.1w标准([802.1D-2004]的一部分)改进了传统STP,它定义了采用新名称的快速生成树协议(Rapid Sparming Tree Protocol,RSTP)。

特点

  • 在RSTP中,对STP的主要改进是监视每个端 口的状态,并在故障时立即发送一个拓扑变化通知
  • RSTP使用BPDU的标志字段中的全部6位来支持网桥之间的协议,以避免由计时器来启动协议操作
  • 它将正常的STP端口状态由5个减少到3个(丢弃、学习和转发)。 RSTP的丢弃状态代替了传统STP的禁止、阻塞和侦听状态
  • RSTP创建了一个称为备用端口的新角色,作用是在根端口停止运行时立即代替它

BPDU

  • 由于RSTP只使用一种类型的BPDU,因此这里没有专门的拓扑变化BPDU
  • RSTP的BPDU使用版本和类型号2而不是0
  • 在RSTP中,检测到一次拓扑变化的交换机会发送一个表示拓扑变化的BPDU,任何接收到它的交换机立即清除自已的过滤数据库。这个改变可显著影响协议的收敛时间。这时,无须等待拓扑变化传递到根网桥再经过转发延迟后返回,而是立即清除相关条目。总之,在大多数情况下,收敛时间可从几十秒减少到几分之一秒。

边缘端口

  • RSTP使边缘端口(只连接到端站的端口)和正常的生成树端口之间,以及点到点链路和共享链路之间都有区别
  • 边缘端口和点到点链路上的端口通常不会形成循环,因此允许它们跳过侦听和学习状态,直接进人转发状态
  • 如果假设一个边缘端口可能被入侵,例如两个端口交叉连接,它们可携带任何形式的BPDU (简单的端站通常不处理BPDU),这时它们将被重新分类为生成树端口
  • 点到点链路可根据接口操作模式来识别。如果这个接口运行在全双工模式下,则这条链路是点到点链路

在普通的STP中,BPDU通常由一个通知网桥或根网桥来转发。在RSTP中,BPDU为了"保持活跃"而由所有网桥来定期发送,以便确定相连的邻居是否正常运行。大多数高层路由协议也会这样做。注意,在RSTP中,拓扑变化没有像普通STP那样包括边缘端口连接或断开。当检测到一次拓扑变化时,通知网桥发送TC位被设置的BPDU,不仅到根网桥而且到所有网桥。这样做允许将拓扑变化通知整个网络,并且比传统STP更快速。当一个网桥接收到这些消息时,它会更新除边缘端口之外的所有相关条目。

3.5------无线局域网------IEEE 802.11(Wi-Fi)

目前,无线保真(Wi-Fi)是访问Internet的最流行技术之一,其众所周知的IEEE标准名称为802.11,它是一种常用的无线以太网标准。

通常情况下,站(STA)和接入点(AP)组成一个操作子集。一个AP和相关的站被称为一个基本服务集(BBS)。AP之间通常使用一种有线的分布式服务(称为DS,基本是"主干")连接,形成一个扩展服务集(ESS)。这种方式通常被称为基础设施模式。802.11标准也提供了一种Ad hoc(自组织)模式。在这种配置中没有AP或DS,而是直接采用站到站(对等)的通信。在IEEE的术语中,加入一个Ad hoc网络的STA形成一个独立基本服务集(IBSS)。由BSS或IBSS的集合形成的无线局域网称为服务集,它由一个服务集标识符(SSID)来标识。扩展服务集标识符(ESSID)是由SSID命名的一个BSS集合,它实际上是一个最长32个字符的局域网名称。在WLAN第一次建立时,该名称通常分配给AP。

3.5.1 802.11 帧

802.11基本帧格式

|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 前导 |||| PLCP头部 |||||| MAC PDU(MPDU) ||||||||||
| (可变) |||| (可变) |||||| (可变) ||||||||||
| < ---------------------------------------------------------------物理层PDU --------------------------------------------------------------- > ||||||||||||||||||||
| | | | | | | | | | | | | | | | | | | | |

  • 前导:用于同步的前导码,它取决于正在使用的802.11协议类型。 - PLCP头部:物理层会聚程序(PLCP)头部以独立于物理层的方式提供特定的物理层信息。帧的PLCP部分的传输速率通常比其余部分低。这样做有两个目的: - 提高正确交付的概率(较低速度通常具有更好的容错性能) - 提供对传统设备的兼容性和防止慢速操作的干扰。 - MAC PDU(MPDU):与以太网相似

MPDU

|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 帧控制 || 持续时间/ID || 地址1 |||||| 地址2 |||||| 地址3 |||||| 顺序控制 || 地址4 |||||| QoS控制 || HT控制 |||| 帧体 |||||||| FCS ||||
| 2 || 2 || 6字节 |||||| 6 |||||| 6 |||||| 2 || 6 |||||| 2 || 4 |||| (0~7995) |||||||| 4 ||||
| |||||||||||||||||||||| < ----------------------- (可选) ----------------------- > |||||||||||||| ||||||||||||
| < ---------------------------------------------------------------------------------- MAC头部 ---------------------------------------------------------------------------------- > |||||||||||||||||||||||||||||||||||| ||||||||||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |

  • 帧控制:包括2位的类型字段,用于识别该帧的类型。

    • 管理帧:用于创建,维持,终止站和接入点之间的连接。它们也被用于确定是否采用加密,传输网络名称(SSID或ESSID),支持哪种传输速率,以及采用的时间数据库等。当一个Wi-Fi接口扫描临近的接入点时,这些帧被用于提供必要的信息。扫描是一个站发现可用的网络及相关配置信息的过程。这涉及每个可用频率和流量的侦听过程,以确定可用的接入点。一个站可以主动探测网络,在扫描时传输一个特殊的管理帧(探测请求)。这些探测请求有一定的限制,以保证802.11流量不在非802.11(例如医疗服务)频率上传输。

    • 控制帧(RTS/CTS ACK):802.11网络支持可选的请求发送/明确发送(RTS/CTS),通过放缓传输来进行流量控制。当RTS/CTS启用时,一个站在发送数据帧之前发送一个RTS帧,当接收方愿意接收额外流量时,它会响应一个CTS帧。在RTS/CTS交换之后,这个站开启一个时间窗口(在CTS帧中标识),用于向确认接收的站发送数据帧。由于RTS和CTS帧比较短,因此它们不会长期使用信道。如果一个分组的大小足够大,AP通常为每个分组启动一次RTS/CTS交换。通常情况下AP提供一个称为分组大小阙值(或类似)的选项,超过阙值的帧将会导致一个RTS帧优先于数据帧发送,如果需要执行RTS/CTS交换,大多数设备生产商设置的默认值为500字节。

      802.11采用一种重传/确认(ACK)方法来扩展802.3重传机制。确认是对预期在一定时间内接收的一个单播帧(802.11a/b/g)或一组帧(802.11n或带"块确认 "的802.11e)的响应。组播或广播帧没有相关的确认,以避免出现ACK爆炸问题。在指定时间内没有收到对应的ACK会导致帧的重传。重传可能在网络中形成重复的帧。当任何帧是某个帧的一次重传时,帧控制字中的重试(Retry)位需要设置为相应的值。接收站可通过它删除重复的帧。每个站需要保持一个小的缓存条目,以说明最近查看的地址和序列号/分片号。当一个接收帧与一个条目匹配时,则丢弃该帧。发送一个帧和接收一个ACK所需时间与链路距离和时隙(802.11 MAC协议的一个基本时间单位)相关。在大多数系统中,可配置等待的ACK时间(以及时隙)。

    • 数据帧:在通常情况下,802.11帧和链路层(LLC)帧之间存在一对一的关系,它们保证更高层协议(例如IP)是可用的。但是802.11支持分片。根据802.11n的规定,它也支持帧聚合。当使用帧分片时,每个分片有自己的MAC头部和尾部的CRC,并且它们独立于其他分片处理。除非使用块确认功能,否则每个分片将被单独发送,并由接收方为每个分片产生一个ACK。分片仅用于目的地址为单播(非广播或组播)的帧。为了具备这种能力,顺序 控制字段包含一个分片号(4位)和一个序列号(12位)。如果一个帧经过分片,所有分片包含相同的序列号值,而每个相邻的分片的分片号之差为1。由于分片号字段长度为4位,同一帧最多可能有15个分片。帧控制字中的更多标志字段表示 更多分片还没有到达。最后一个分片将这个位设为0。接收方将接收到的同一序列号的分片根据分片号重组成原始帧。当所有包含同一序列号的分片被接收,并且最后一个分片将更多标志字段设为0时,这个帧被重组并交给更高层协议来处理。分片并不常使用,分片大小通常可设为256字节至2048字节,并作为一个阙值(超过阙值的帧被分片)。很多AP通常设置更高的阙值,这样就默认不使用分片。

      802.11n提供的增强功能之一是支持两种形式的帧聚合:

      • 聚合的MAC服务数据单元(A-MSDU):可将多个完整的802.3(以太网)帧聚合在一个802.11帧中。

        MSDU聚合,最大尺寸:7935字节

        |----|--------|--------------|---------|------------|----|---------|------------|----|-----|---------|------------|-----|
        | 前导 | PLCP头部 | 802.11 MAC头部 | 802.3头部 | MSDU 子帧1数据 | 填充 | 802.3头部 | MSDU 子帧2数据 | 填充 | 。。。 | 802.3头部 | MSDU 子帧n数据 | FCS |
        | |||| 0~2304字节 |||| |||||
        | | | | | | | | | | | | | |

        对于一次单一的聚合,A-MSDU方法在技术上更有效率。每个802.3头部通常为14字节,相对36字节的802.11MAC头部更短。因此,仅一个802.11MAC头部对应于多个802.3帧,每聚合一个帧最多可节约22字节。一个A-MSDU可能高达7935字节,可容纳100多个小的分组(例如50字节),但只能容纳少数(5个)较大(1500字节)的数据分组。A-MSDU仅对应一个FCS。更大的A-MSDU帧会增大交付出错的概率,由于整个聚合只是针对一个FCS,因此出错时将不得不重传整个帧。

      • 聚合的MAC协议数据单元(A-MPDU):可将多个具有相同的源,目的和QoS的MPDU聚合为短帧。

        MPDU聚合,最大尺寸:64KB

        |----|--------|--------------|-----|--------|----|-----|--------|----|-----|-----|--------|
        | 前导 | PLCP头部 | 802.11 MAC头部 | 分隔符 | MPDU 1 | 填充 | 分隔符 | MPDU 2 | 填充 | 。。。 | 分隔符 | MPDU 3 |
        | |||| 0~4095字节 |||| || 4字节 |
        | | | | | | | | | | | | |

        MPDU,802.11帧(最大4095字节)

        |--------------|----|-----|
        | 802.11 MAC头部 | 数据 | FCS |

        A-MPDU聚合是另一种形式的聚合,多个(最多64个)802.11帧可聚合起来,每个帧有自己的802.11 MAC头部和FCS,每个帧最多4095字节。A-MPDU可携带最多64kb的数据,足够包含1000多个小的分组和大约40个较大(1.5kb)的分组。由于每个子帧都携带自己的FCS,因此可有选择地重传那些出错的子帧。这使得802.11n(最初在802.11e)中的块确认功能称为可能,它是一种扩展的确认形式,为发送方提供哪个A-MPDU子帧交付成功的反馈信息。这种功能在目的上类似,但在细节上不同。因此,A-MSDU提供的聚合类型在无差错网络中传输大量小的分组时可能更有效率,但在实际运行中可能不如A-MPDU聚合好。

  • 剩下的字段由帧类型来决定。

3.5.3 802.11介子访问控制

802.11标准采用三种方法控制共享的无线介质:

  • 点协调功能(PCF):使用的并不广泛

  • 分布式协调功能(DCF):DCF是一种CSMA/CA类型,是基于竞争的介质访问方法。它可用于基础设施和Ad hoc网络。通过CSMA/CA,一个站可查看介质是否空闲,如果空闲,他将有机会传输。如果不空闲,它在一段随机的时间内避免发送,直到它再次查看介质是否空闲为止。这个行为与有线局域网中使用的CSMA/CD检测方法相似。802.11信道仲裁是对CSMA/CA的改进,提供优先访问某些站或帧的功能。某些类型的站或AP强制实现DCF。

  • 混合协调功能(HCF):被纳入802.11规范,在802.11e中增加支持QoS,它也被用于802.11n。相对较新的支持QoS的Wi-Fi设备通常会实现HCF,例如802.11n的AP和更早的802.11e的AP。HCF是一种新的协调功能,支持基于竞争的可控制的信道访问,尽管可控制的信道访问技术很少使用。

    在HCF中,有两种专门的信道访问方法可协调工作:

    • HFCA控制信道访问(HCCA):基于预约。HCCA松散地建立在PCF之上,并使用轮询来控制信道访问。它属于同步方式的访问控制,并优先于基于竞争的EDCA访问。混合协调(HC)位于一个AP中,并优先于信道访问分配。在一次传输之前,一个站可为其流量发布一个流量规范(TSPEC),并使用8和15之间的UP值。HC可为这种请求分配保留的TXOP,它被用于基于EDCA的帧传输之前的短期控制访问阶段的帧交换。HC可拒绝TXOP的基于网络管理员设置的管理控制策略的TSPEC。HCF利用虚拟载波侦听机制和DCF,以避免基于竞争的站被不基于竞争的访问所干扰。注:在包括QSTA和常规站的网络中,可同时允许HCF和DCF,在两者之间切换,但Ad hoc网络不支持HC,因此它不处理TSPEC和不执行管理控制。这种网络可能仍允许HCF,但TXOP通过基于EDCA的竞争来获得。
    • 增强型DCF信道访问(EDCA):基于竞争。EDCA建立在基本的DCF访问之上。通过EDCA,8个用户优先级(UP)被映射为4个访问类型(AC)。用户优先级使用与802.1d优先级标记相同的结构,并被编号为1至7(2和3之间还有一个优先级0),其中7为最高优先级。4个访问类别分别为背景,尽力而为,视频和音频流量。优先级1和2用于背景AC,优先级0和3用于尽力而为AC,优先级4和5用于视频AC,优先级6和7用于音频AC。对于每个AC,DCF的一个变种竞争信道访问许可,称为传输机会(TXOP),为较高优先级的流量使用可选的MAC参数。在EDCA中,很多来自DCF的MAC参数(例如 DIFS、aCWmin、aCWmax)作为配置参数是可调整的,这些值可通过管理帧传输给QSTA。

3.5.3.1----2 虚拟,物理载波侦听,RTS/CTS和网络分配向量

802.11载波侦听能以物理和虚拟方式实现。

  • 虚拟载波侦听:在802.11MAC协议中,虚拟载波侦听机制会检查每个MAC帧中的持续时间字段。这通过站的侦听而非引导流量来实现。RTS和CTS帧中都有一个持续时间字段,它们像普通帧那样传输之前可以选择是否交换,并估计介质将处于繁忙状态的时间。

    发送方基于帧长度、传输速率和PYH特性(例如速率等)设置持续时间字段。每个站保持一个称为网络分配向量(NAV)的本地计数器,它被用于估计介质传输当前帧所需的时间以及尝试下一次传输之前需等待的时间。当一个站侦听到一个持续时间大于自己的NAV时,他将自己的NAV更新为这个值。由于RTS和CTS帧中都有持续时间字段,如果使用NAV,在其范围内的任何站(无论发送方还是接收方)都能看到持续时间字段值。NAV采用单位时间来维护,并基于本地时钟递减。当本地NAV不为0时,介质被认为时繁忙的。在接收到一个ACK后,本地NAV将复位为0。

  • 物理载波侦听(CCA):每个802.11PHY规范(例如对于不同的频率和无线电技术)需提供一种评估信道是否空闲的功能,它基于能量和波形识别(通常是一个完好的PLCP)。这个功能称为空闲信道评估(Clear Channel Assessment,CCA),它的实现依赖于PHY。CCA功能是针对802.11MAC的物理载波侦听功能,用于了解介质当前是否繁忙。通常与NAV结合使用,以确定一个站在传输之前是否需要推迟(等待)。

一个站在准备发送时,通常需要等待一段时间(称为分布式帧间间隔(DIFS)),以允许更高优先级的站访问信道。如果信道在DIFS期间变得繁忙,该站再次开始一个等待时间。当介质出现空闲时,希望发送数据的站将启动DCF 冲突避免/退避过程。这个过程在一次成功(失败)的传输后,通过一个ACK知道数据被接收(或没有接收)后启动。在传输不成功时,经过不同时间(称为扩展帧间间隔(EIFS))启动退避过程。

5.3.3.3 DCF 冲突避免/退避过程

在确定某个信道可能空闲时(已到达NAV持续时间,并且CCA没有提示信道繁忙),一个站在传输之前需推迟访问该信道。由于很多站可能在等待信道变空闲,每个站在发送之前需计算和等待一个退避时间。退避时间等于一个随机数和时隙的乘积(除非该站已有一个非零的退避时间尝试传输,在这种情况下无需重新计算)。时隙依赖于PHY,通常是几十微秒。随机数是在一个区间[0,CW]中均匀分布的数值,竞争窗口(CW)是一个整数,其中包含许多等待时隙,且aCWmin≤CW≤aCWmax(该限制由PHY定义)。CW值的集合从PHY指定的常数aCWmin开始,以2的幂(减1)增加,直到每个连续传输尝试次数的常数aCWmax为止。这样做与以太网中由冲突检测事件引发的退避过程相似。

在无线环境中,冲突检测是不实际的(无线环境中是一个三维的环境,信号波与信号波之间的传送几乎很难相撞)。由于很难发现发送方和接收方同时发送,也难以监听自己之外的传输,因此采用冲突避免来代替冲突检测。另外,ACK是针对单播帧的响应,以确定一个帧是否成功传递。当一个站正确接收一个帧时,在等待一小段时间(称为短帧间间隔(SIFS))后开始传输ACK,并且不考虑介质的忙碌/空闲状态。这样做不会导致问题,由于SIFS的值始终比DIFS小,因此该站产生的ACK可优先访问信道,以完成接收确认。源站在一定的时间内没有接收到ACK,则意味着一次传输失败。在失败后,源站启动退避过程,并重新尝试发送帧。如果在一定时间(CTStimeout常数)内没有接收到较早RTS响应的CTS,则启动同样的过程。

5.3.3.4 HCF和802.11e/n的QoS

802.11标准【802.11-2007】中的条款5、6、7和9都基于IEEE 802.11e工作组的部分工作,常用的术语有802.11e、Wi-Fi QoS和WMM(基于Wi-Fi的多媒体)。它们涉及QoS功能:修改802.11 MAC层和系统接口以支持多媒体应用,例如IP语音(VoIP)和流媒体。QoS功能实际是否必要,取决于网络层拥塞和应用类型。如果网络利用率低,可能不必要支持QoS的MAC,虽然其他802.11e功能可能有用(例如块确认和APSD)。在网络利用率和拥塞较高的情况下,需要为VoIP等服务提供低抖动交付能力,这时支持QoS可能是可取的。(注:支持QoS的Wi-Fi设备通常比不支持QoS的设备更贵和更复杂)。

QoS功能引入了新的术语,例如QoS站(QSTA)、QoS接入点(QAP)、和QoS BSS(QBSS,支持QoS的BSS)。在一般情况下,支持QoS功能的设备也支持传统的非QoS操作。802.11n"高吞吐量"站(又称为HT STA)也是QSTA。

3.6------点到点协议

PPP是相对较慢的拨号调制解调器使用的协议。

PPP表示点到点协议。这时一种在串行链路上传输IP数据报的流行方法,从低俗的拨号调制解调器到高速的光链路。它被一些DSL服务供应商广泛部署,也可分配Internet系统的参数。

PPP实际上是一个协议集合,而不是一个单一的协议。它支持建立链接的基本方法------称为链路控制协议(Link Control Protocol,LCP),以及一系列NCP协议,在LCP建立了基本链路之后用于为各种协议(IPV4,IPV6,非IP协议)建立网络层链路。

3.6.1 链路控制协议(LCP)

PPP的LCP用于在点到点链路上建立和维护低层的双方通信路径。所以,PPP操作只需要关注一条链路的两端,不需要像以太网和Wi-Fi的MAC层协议那样处理共享资源访问的问题。

PPP通常对底层的点到点链路有最低要求,LCP更是如此。链路必须支持双向操作(LCP使用的确认),以及异步或同步操作。通常LCP使用简单的位级别帧格式,基于高级数据链路(HDLC)建立链路协议。IBM将HDLC修改为同步数据链路控制(SDLC),在其专用的系统网络体系结构(SNA)协议族中用作链路层协议。HDLC协议还用作802.3中LLC标准的基础,并最终被用于PPP。

HDLC的帧格式:

PPP基本格式借用了HDLC的格式。它包括一个协议标识符、有效载荷区,以及2或4字节的FCS。其他字段是否存在取决于压缩选项

  • 标志(0x7E):通常情况,PPP帧格式类似于上图所示的HDLC帧,由2个1字节的包含固定值0x7E的标志字段"包围",点到点链路的两个端点使用这些字段来发现一个帧的开始和结束。如果0x7E出现在帧内部,这会带来一个小问题。它可通过两种方式来处理,这取决于PPP工作在异步还是同步链路上:

    • 异步链路:PPP使用字符填充(字节填充)替换。如果标志字符出现在帧中其他地方,则用2字节序列0x7D5E(0x7D称为PPP转义字符)替换。如果转义字符本身出现在帧中,则用2字节序列0x7D5D替换。因此接收方用0x7E替换接受的0x7D5E,并用0x7D替换接收的0x7D5D。
    • 在同步链路(例如T1线路,T3链路)上,PPP使用位填充。标志字符的位模式为01111110(连续6个1的位序列),在除了标志字符之外的任何地方,位填充在5个连续1之后填充一个0。这样做意味着发送的字节可能超过8位,这通常是正常的,因为低层串行处理硬件能去掉填充的比特流,并将其恢复成未填充时的样子。
  • 地址(0xFF):PPP采用HDLC的地址,在HDLC中,地址字段用于指定哪个站正在处理,但是由于PPP只关心一个目的地,这个字段总是被设置为0xFF(所有站)

  • 控制(0x03):PPP采用HDLC的控制字段,HDLC控制字段用于指示帧序列和重传行为。由于这些链路层的可靠性功能通常不是由PPP实现,所以控制字段设置为0x03。

    由于地址和控制字段在PPP中都是固定的常数,所以在传输过程中经常通过一个称为地址和控制字段压缩(ACFC)的选项来省略它们,该选项实质上是消除了这两个字段。

  • 协议:PPP帧的协议字段表明携带的数据类型。在一个PPP帧中,可携带多种不同类型的协议。正式列表和用于协议字段的分配号显示在"点到点协议字段分配"文档中[PPPn]。根据HDLC规范,协议号的分配方式为:高位字节的最低有效位为0,低位字节的最低有效位为1。0x0000 ~ 0x3FFF (十六进制)范围内的值表示网络层协议, 0x8000 ~ 0xBFFF范围内的值表示NCP的相关数据。0x4000 ~ 0x7FFF范围内的值用于NCP不相关的"很少使用的"协议。0xC000 ~ 0xEFFF范围内的值表示控制协议,例如LCP。在某些情况下,如果协议字段压缩(PFC)选项在链路建立时协商成功,协议字段可被压缩为1字节。0x0000 ~ 0x00FF范围内的协议号适用于包括大多数流行的网络层协议在内的协议。注意,,LCP分组总是使用2字节的未压缩格式。

  • FCS:PPP帧的最后部分包含一个16位的FCS可将CRC从16位扩展到32位。

3.6.1.1 LCP操作

LCP在基本PPP分组之上进行了简单的封装。

LCP分组采用很普通的格式,能识别封装数据的类型和长度。LCP帧主要用于建立PPP链路,这种格式已称为很多网络控制协议的基础。

  • 协议:LCP的PPP协议字段值始终是0xC021,它不能用PFC删除,以免产生歧义
  • 代码:代码字段给出了请求或响应的操作类型:
    • 配置请求(0x01)
    • 配置ACK(0x02):ACK消息通常表明接收一组选项
    • 配置NACK(0x03):NACK消息用建议选项表明部分拒绝
    • 配置REJECT(0x04):REJECT消息完全拒绝一个或多个选项。拒绝代码表明前一个分组包含的某些字段值未知。
    • 终止请求(0x05):终止消息用于在完成后清除一条链路
    • 终止ACK(0x06)
    • 代码REJECT(0x07)
    • 协议REJECT(0x08)
    • 回送请求(0x09)
    • 回送应答(0x0A)/ 放弃请求(0x0B):回送请求/应答消息可由LCP在一条活跃链路上随时交换,以验证对方的操作
    • 标识(0x0C)/ 剩余时间(0x0D):标识和剩余时间消息用于管理目的:了解对方的系统类型,指出链路保持建立的时间。
  • 标识:标识字段是由LCP请求帧的发送方提供的序列号,并随着每个后续消息进行递增。在生成一个回复时,这个字段通过复制响应分组请求中包含的值来构造。采用这种方式,请求方可通过匹配标识符来识别相应请求的应答。
  • 长度:长度字段给出了LCP分组的字节长度,它不能超过链路的最大接收单元(MRU)。注:长度字段时LCP协议的一部分;PPP协议通常不提供这个字段。

LCP的主要工作是使一条点到点链路达到最低要求。配置消息使链路两端开始基本配置过程,并建立商定的选项。终止消息用于在完成后清除一条链路。

下图显示了简化的分组交换时间表和一个简化的状态机(在链路两端实现)

LCP用于建立PPP链路和各方商定选项。典型的交换过程包括一对包括一对包含选项列表的配置请求和配置确认、一个认证交换、数据交换(未画出)和一个终止交换。因为PPP是一个包括很多部分的通用协议,所以在一条链路建立和终止之间可能发生很多其他类型的操作。

一个底层协议表明一个关联变为活跃(例如调制解调器检测到载波),则认为这个链路已被建立。链路质量测试包含链路质量报告和确认交换,它也可以在此期间完成。

3.6.1.2 LCP选项

当LCP建立一条由一个或多个NCP使用的链路时,可以对一些选项进行协商。异步控制字符映射(ACCM)或简称"asyncmap"选项定义哪些控制字符(即0x00~0x1F范围内的ASCII字符)需要被"转义"为PPP操作。转义一个字符表示不发送这个字符的真实值,而将PPP转义字符(0x7D)放在控制字符原始值和0x20异或形成的值之前。例如,XOFF字符(0x13)将转换为(0x7D33)发送。ACCM用于控制字符可能影响底层硬件操作的情况。如果软件流控制能够使用XON/XOFF字符,而XOFF字符未经转义就通过链路传输,则硬件直到看到一个XON字符才停止数据传输。asyncmap选项通常是一个32位的十六进制数,其中第n个最低有效位被设置为1,表示值为n的控制字符被转义。所以,asyncmap为0xffffffff表示转义所有控制字符,为0x00000000则表示不转义任何控制字符,为0x000A0000表示转义XON(0x11)和XOFF(0x13)。其中0xffffffff是默认值,但是很多链路在asyncmap设置为0x00000000时安全运行。

由于PPP缺少一个长度字段,并且串行线路通常不提供帧封装,理论上对一个PPP帧的长度没有硬性限制。实际上,最大帧大小通常由MRU指定。当主机指定一个MRU选项时,它要求对方不发送比MRU选项提供的值更长的帧。MRU值是数据字段的字节长度,它不计算其他PPP开销字段(即协议,FCS,标志字段)。其典型值是1500和1492,但也有可能多达65535。IPv6操作需要的长度最小为1280。PPP标准要求具体实现能接收最大1500字节的帧,MRU更多的是建议对方选择帧大小,而不是硬性限制帧大小。当小分组和大分组在同一条PPP链路上交错传输时,大分组可能占用一条低带宽链路的大部分带宽,并影响小分组的正常传输。这可能导致抖动(延迟变化),对交互式应用产生负面影响。可以配置较小的MRU或MTU来缓解这个问题,但是会产生更大的开销。

PPP支持一种交换链路质量报告信息的机制。在选项协商期间,可能包括一个包含请求的特定质量协议的配置信息。大多PPP实现支持一种回叫功能。LCP选项针对用于协商回叫的协议,该选项值为0x0D。如果许可,回叫控制协议(CBCP)完成协商。

PPP使用的一些压缩和加密算法在处理时需要一定的最小字节数,称为块大小。在数据不够长的情况下,通过填充增加数据长度,达到一个甚至多个块的大小。如果有填充,通常位于数据区后面,并位于PPP FCS字段之前。一种填充方法称为自描述填充,它将填充值变为非0值。由于基本PPP帧缺少一个明确的长度字段,所以一个接收方可使用自描述填充,以确定应从接收的数据区删除多少填充字节。

为了减小每个帧包含一个头部的固定开销,提出了一种将多个不同协议的有效载荷聚合成PPP帧的方法,称为PPPMux方法。主要PPP头部的协议字段被设置为聚合帧(0x0059),然后每个有效载荷块被插入帧中。通过在每个有效载荷块之前插入1~4字节的子帧头部来实现。在子帧头部中,1位(称为PFF)说明子帧头部中是否包含协议字段,1位(称为LXT)说明后面的长度字段是1字节还是2字节。1或2字节的协议ID使用与外部的PPP头部相同的值和压缩方法。在子帧与默认PID(该PID在配置阶段通过PPPMux控制协议建立)匹配时,PFF可以为0(意味着不存在PID字段)。普通PPP/HDLC的FCS可以是16或32位。默认的FCS为16位,但32位的FCS值可通过32位的FCS选项来启用。其他的LCP选项包括使用PFC和ACFC,以及认证算法的选择。

3.6.2 多链路PPP

PPP的一个特殊版本称为多链路PPP(MP),可用于将多条点到点链路聚合为一条链路。MP包含一个特殊的LCP选项,表示支持多链路,以及一个用于多链路上PPP帧分片与重组的协商协议。一条聚合链路(称为一个捆绑)可作为一条完整的虚拟链路来操作,并包含自己的配置信息。链路捆绑由大量成员链路组成。每个成员链路可能有自己的选项集。

实现MP的典型方法是使分组轮流经过各个成员链路传输。这种方法称为银行柜员算法,它可能导致分组重新排序,也可能为其他协议带来不良的性能影响。MP在每个分组中添加一个2~4字节的序列头部,而远程MP接收方的任务是重建正确的顺序。

下图显示了这种数据帧:

如图所示,一个MP分片的开始分片(B)、结束分片(E)位字段和序列号字段。需要注意长格式(4字节用于分片信息)和短格式(2字节用于分片信息)。在选项协商阶段,LCP的短序列号选项(类型18)用于选择使用的格式。MP使用一个称为多链路最大接收重构单元(MRRU,18)的LCP选项,它可将一系列更大的MRU应用于捆绑中。大于成员链路MRU的帧仍被允许通过这个MP链路,直到达到这个值的上限为止。为确定成员链路属于同一捆绑,同一捆绑中的成员链路由LCP端点鉴别(类型19)选项识别。端点鉴别可使用电话号码、从IP或MAC地址中提取的数字,以及其他可管理的字符串。除了每个成员链路的常见内容,对这个选项的格式没有多少限制。

建立MP的基本方法定义在【RFC1990】中,希望各个成员链路可对称使用,相近数量的分片被分配到号码固定的每条链路上。为实现更复杂的分配,【RFC2125】中规定了带宽分配协议(BAP)和带宽分配控制协议(BACP)。BAP用于为一个捆绑动态添加或删除链路,BACP用于交换如何使用BAP添加或删除链路的信息。这种功能有助于实现按需带宽(BOD)。在一些需要分配固定资源以满足应用对带宽需要的网络中,BOD通常需要检测流量,在应用需求高时创建新的连接,以及在应用需求低时删除连接。

BAP/BACP使用一种新的链路鉴别LCP选项(LCP选项类型为23).这个选项包含一个16位的数字值,一个捆绑中的每条成员链路有不同的值。它被BAP用于确定需要添加或删除哪些链路。在一条PPP链路的网络阶段,每个捆绑都需要使用BACP协商。它的主要目的是找出首选对端(如果在多个对端之间同时建立多个捆绑时,将会优先为首选对端分配成员链路)。

BAP包括三种分组类型:请求、响应和标识。请求用于向一个捆绑添加一条链路,或从一个捆绑中删除一条链路。标识用于为原始或被确认的请求返回结果。响应是对这些请求的ACK或NACK。

3.6.3 压缩控制协议

LCP可协商一个使压缩控制协议(CCP)生效的选项。CCP的作用就像NCP,只不过在LCP链路建立交换阶段指明压缩选项时才开始处理配置压缩细节。

CCP在行为上很像NCP,仅在链路进入网络状态时协商。它使用与LCP相同的分组交换过程和格式(除协议字段被设置为0x80FD之外),另外还有一些特殊选项,并对常见的代码字段值(1~7)定义了2个新的操作:复位请求(0x0e)和复位确认(0x0f)。

一个或多个压缩帧可作为一个PPP帧的一部分(即包括LCP数据和可能的填充部分)。压缩帧携带的协议字段值为0x00FD。当CCP与MP结合使用时,既可用于一个捆绑,也可用于多条成员链路的某些组合。如果只用于成员链路,协议字段设置为0x00FB(单个的链路压缩数据报)。

如果使用压缩,PPP帧在进一步处理之前需要重构,因此高层的PPP操作通常不关心压缩帧的细节。

3.6.4 PPP认证

在一条PPP链路处于网络状态之前,通常有必要使用某种认证(身份验证)机制,以识别建立链路的对方身份。基本的PPP规范默认不提供认证,但是某种形式的认证在多数时候是需要的。

  • 密码认证协议(PAP):与不提供认证相比,最简单、安全性最低的认证方案是密码认证协议(PAP)。这种协议非常简单,一方请求另一方发送一个密码。由于该密码在PPP链路上未加密传输,窃听者在线路上可轻易捕获密码并使用它。所以不建议使用PAP进行认证。PAP分组像LCP分组那样编码,协议字段值设置为0xC023。
  • 查询-握手认证协议(CHAP):提供了一种更安全的认证方法。在使用CHAP时,一个随机值从一方(称为认证方)发送到另一方。响应通过一种特殊的单向(即不可逆)功能,将一个随机值和一个共享密钥(通常由密码生成)结合形成响应中的一个数字。在接收到这个响应之后,认证方能更可靠地验证对方密钥是否正确。这个协议在链路上不会以明文(未加密)形式发送密钥和密码。由于每次使用不同的随机值,每个查询/响应的结果会改变,即使窃听者可能捕获到这个值,也无法通过重新使用(回放)来欺骗对方。
  • EAP(可用于各种网络的认证框架):它支持很多(约40个)不同的认证方法,从简单密码(例如PAP和CHAP)到更可靠的认证类型(例如智能卡、生物识别)。EAP定义了一种可携带各种认证的消息格式,但需要额外的规范定义EAP消息如何在特定的链路上传输。当EAP被用于PPP时,基本认证方法不变。EAP不是在链路建立(LCP建立)阶段协商一种认证方法,认证操作将被推迟到认证状态(网络状态的前一个状态)。这允许更多信息类型用于影响远程访问服务器(RAS)的访问控制决策。当某种标准的协议用于执行各种认证机制,网络访问服务器可能无须处理EAP消息内容,但可依靠其他基础设施的认证服务器确定访问控制决策。(这是当前的企业网和ISP设计中的首选方案)。

3.6.5 网络控制协议

对于IPv4,NCP被称为IP控制协议(IPCP)。对于IPv6,NCP被称为IPV6CP。在LCP完成链路建立和认证之后,该链路每端都进入网络状态,并使用一个或多个NCP进行网络层的相关协商。

  • IPCP(针对IPv4的标准NCP)可用于在一条链路上建立IPv4连接,以及配置Van Jacobson头部压缩(VJ压缩)。IPCP分组在PPP状态机进入网络状态之后交换。IPCP分组使用与LCP相同的分组交换机制和分组格式,除非协议字段被设置为0x8021,并且代码字段被限制在范围0~7。代码字段的值对应于消息类型:特定供应商、配置请求、配置ACK、配置REJECT、终止请求、终止ACK和代码REJECT。IPCP可协商一系列选项,包括IP压缩协议(2)、IPv4地址(3)和移动IPv4(4)。其他选项可用于获得主要和次要的域名服务器。
  • IPV6CP使用与LCP相同的分组交换机制和分组格式,但它有两种不同的选择:接口标识符和IPv6压缩协议。接口标识符选项用于传输一个64位的IID值,它作为形成一个链路本地IPv6地址的基础。由于其仅在本地链路上使用,因此不需要具有全球唯一性。这通过在IPv6地址的高位使用标准链路本地前缀,在低位设置某种功能的接口标识符来实现。

3.6.6 头部压缩

PPP拨号线路的速率一直较慢(54000b/s或更少),很多小的分组通常使用TCP/IP。这些分组大部分包含TCP和IP头部,同一TCP连接上的分组之间变化不大。其他高层协议的行为相似。所以,压缩(或消除)高层协议头部是一种有用的方法,这样就可以在相对较慢的点到点链路上传输更少字节。

  • 在VJ压缩中,部分高层头部被1字节的连接标识符代替。它最初来源于一种旧的、称为CSLIP(压缩串行线路IP)的点到点协议。一个常见的TCP/IPv4头部组合式40字节,因为一个典型的IPv4头部的长度与一个没有选项的TCP头部的长度都为20字节。并且很多字段在分组间没有变化。很多字段在分组间只有很小或有限的变化。如果不变的值通过一条链路(或一段时间内)传输并保存在一张表中,则后续分组可用一个小的索引代替该值。变化有限的值可以仅编码差异部分(即发送变化的部分)。因此,整个40字节头部通常可有效压缩到3到4字节。这样可以提高在低俗链路上的TCP/IP性能。
  • 头部压缩的进一步演化称为IP头部压缩。它提供了一种压缩多个分组头部的方式,使用TCP或UDP传输层协议,以及IPv4或IPv6网络层协议。这种技术是VJ压缩技术的一种逻辑上的扩展,可用于多种协议以及PPP链路之外的其他链路。当头部压缩用于链路上时,可能不会像PPP的FCS计算那样强大。
  • 头部压缩的最新改进方案称为鲁棒性头部压缩(ROHC)。它进一步改进了IP头部压缩以涵盖更多的传输协议,并允许同时处理多种头部压缩方式。IP头部压缩可适用于不同类型的链路,包括PPP。

3.7------环回

为了实现客户机使用Internet协议与同一计算机上的服务器通信,大多数实现支持一种工作在网络层的环回(或称"回送")能力------通常使用一个虚拟的环回网络接口来实现。它就像一个真正的网络接口,实际上这是一个由操作系统提供的专用软件,可通过TCP/IP与同一主机的其他部分通信。以127开始的IPv4地址就是为这个目的而保留的,IPv6为::1。类UNIX系统(包括Linux)为环回接口分配的IPv4地址为127.0.0.1(IPv6地址为 ::1)其名称为localhost。发送环回接口的IP数据包不会出现在任何网络中。

3.8------MTU和路径MTU

在很多链路层网络中,携带高层协议PDU的帧大小是有限制的。以太网有效载荷的字节数通常被限制为1500,PPP通常采用相同大小以保持与以太网兼容,链路层的这种特征被称为最大传输单元(MTU)。大多数的分组网络都有固定的上限。而大多数的流类型网络提供可设置的上限,它可被帧协议所使用。

在同一网络中的两台主机之间通信时,本地链路的MTU在会话期间对数据包大小有直接影响。当两台主机之间跨越多个网络通信时,每条链路可能由不同大小的MTU。在包含所有链路的整个网络路径上,最小的MTU称为路径MTU。

注:任何两台主机之间的路径不会永远不变,取决于当前使用的路径。如果网络中的路由器或链路故障,则MTU可能改变。且A到B的路径与B到A的路径可能不是同一条路径。路径MTU发现(PMTUD)机制用于确定某个时间的路径MTU,这在IPv6实现中是需要的。

3.9------隧道基础

虚拟专用网络(VPN)提供两台计算机通过Internet或其他网络建立一条虚拟链路的服务。实现这类服务的最常用方法称为隧道。一般来说,隧道是在高层(或同等层分组中携带低层数据)。

为某个协议层的分组或另一层的分组建立隧道有多种方法。用于建立隧道的3个常用协议包括:

  • 通用路由封装(GRE):GRE是PPTP的基础,并被PPTP使用,但这两个协议的目的不同。GRE隧道常用于网络基础设施内的流量传输,例如ISP之间或企业内部网络与分支机构之间,虽然GRE隧道可与IPsec结合,但这个流量没必要加密。PPTP本质上是GRE与PPP的结合,所以GRE可基于PPP提供虚拟的点到点链路。GRE使用IPv4或IPv6携带流量,因此更像是一种第三层隧道技术。

    下图为GRE头部的原来标准和修订后的标准:

    从上图可以看出,基本GRE规范【RFC2784】是相当简单的,只提供了对其他分组的最简化的封装。第一个位字段(C)指出是否存在校验和。如果是,校验和字段中包含相同类型的校验和,它在很多Internet相关协议中可看到。如果校验和字段存在,保留1字段也存在,并被设置为0。【RFC2890】扩展了基本格式,包括可选的密钥和序列号字段,如果有这两个字段的话,图中的K、S位字段分别被设置为1。密钥字段在多个分组中被分配了一个同样的值,表示它们是属于同一流中的分组。如果分组顺序被打乱,可利用序列号字段对分组重新排序。

  • Microsoft专用的点对点隧道协议(PPTP):PPTP是个人用户的常用协议,即使不是一个IETF标准。常用于用户和ISP或企业内部网之间,并需要加密。PPTP常用于携带第2层帧(例如以太网),因此需要模拟一条直接的局域网(链路层)连接。例如它可用于对企业网络的远程访问。PPTP采用的是对标准的GRE头部的改进方案。如下图所示:

    图中所示的于标准GRE头部有一些差异,包括额外的R、S和A位字段,以及标志字段和回溯字段。它们中的多数设置为0,并且没有使用。K、S和A位字段分别代表密钥、序列号和确认号字段是否存在。如果存在,序列号字段保存对方可看到的最大分组数。

  • 第2层隧道协议(L2TP):L2TP本身不提供安全保障,常用于IP层安全(IPSec)

3.9.1 单向链路

在一个方向工作的链路称为单向链路(UDL),由于它们需要交换信息,上文提到的很多协议在这种情况下不能正常运行。为了解决这种问题提出了一种标准,可在辅助Internet接口上创建隧道,它可与UDL操作相结合。典型情况是由卫星提供下行流量(流向用户)而形成一条Internet连接,或者是调制解调器提供上行流量而形成一条拨号链路。这在卫星连接的用户主要是下载不是上传的情况下有用,且通常用于早期的卫星Internet连接。它使用GRE将链路层的上行流量封装在IP分组中。

为了在接收方自动建立和维护隧道,【RFC3077】规定了一种动态隧道配置协议(DTCP)。DTCP涉及在下行链路中发送组播hello消息,所以任何有兴趣的接收方都可知道已有UDL及其MAC和IP地址。另外,hello消息标识网路中一个隧道端点的接口,它可通过用户端的辅助接口到达。在用户选择隧道端点之后DTCP在GRE隧道将同一MAC作为UDL封装返回流量。服务提供商接收由GRE封装的这些第2层帧(通常是以太网),将它们从隧道中提取并适当转发。因此,上游(提供商)UDL需要手工配置隧道,下游(用户)自动配置隧道。注意:这种UDL处理方法实际上是为上层协议不对称的"隐藏"链路。所以这条链路"两个"方向上的性能(延迟、带宽)可能非常不对称,并可能对高层协议产生不利影响。为协助自动配置或使用隧道,一种从IPv4向IPv6的过度方法称为6to4。在6to4中,IPv6分组在一个IPv4网络中通过隧道传输。

它在很多Internet相关协议中可看到。如果校验和字段存在,保留1字段也存在,并被设置为0。【RFC2890】扩展了基本格式,包括可选的密钥和序列号字段,如果有这两个字段的话,图中的K、S位字段分别被设置为1。密钥字段在多个分组中被分配了一个同样的值,表示它们是属于同一流中的分组。如果分组顺序被打乱,可利用序列号字段对分组重新排序。

  • Microsoft专用的点对点隧道协议(PPTP):PPTP是个人用户的常用协议,即使不是一个IETF标准。常用于用户和ISP或企业内部网之间,并需要加密。PPTP常用于携带第2层帧(例如以太网),因此需要模拟一条直接的局域网(链路层)连接。例如它可用于对企业网络的远程访问。PPTP采用的是对标准的GRE头部的改进方案。如下图所示:

    外链图片转存中...(img-8ngEJa97-1743929154888)

    图中所示的于标准GRE头部有一些差异,包括额外的R、S和A位字段,以及标志字段和回溯字段。它们中的多数设置为0,并且没有使用。K、S和A位字段分别代表密钥、序列号和确认号字段是否存在。如果存在,序列号字段保存对方可看到的最大分组数。

  • 第2层隧道协议(L2TP):L2TP本身不提供安全保障,常用于IP层安全(IPSec)

3.9.1 单向链路

在一个方向工作的链路称为单向链路(UDL),由于它们需要交换信息,上文提到的很多协议在这种情况下不能正常运行。为了解决这种问题提出了一种标准,可在辅助Internet接口上创建隧道,它可与UDL操作相结合。典型情况是由卫星提供下行流量(流向用户)而形成一条Internet连接,或者是调制解调器提供上行流量而形成一条拨号链路。这在卫星连接的用户主要是下载不是上传的情况下有用,且通常用于早期的卫星Internet连接。它使用GRE将链路层的上行流量封装在IP分组中。

为了在接收方自动建立和维护隧道,【RFC3077】规定了一种动态隧道配置协议(DTCP)。DTCP涉及在下行链路中发送组播hello消息,所以任何有兴趣的接收方都可知道已有UDL及其MAC和IP地址。另外,hello消息标识网路中一个隧道端点的接口,它可通过用户端的辅助接口到达。在用户选择隧道端点之后DTCP在GRE隧道将同一MAC作为UDL封装返回流量。服务提供商接收由GRE封装的这些第2层帧(通常是以太网),将它们从隧道中提取并适当转发。因此,上游(提供商)UDL需要手工配置隧道,下游(用户)自动配置隧道。注意:这种UDL处理方法实际上是为上层协议不对称的"隐藏"链路。所以这条链路"两个"方向上的性能(延迟、带宽)可能非常不对称,并可能对高层协议产生不利影响。为协助自动配置或使用隧道,一种从IPv4向IPv6的过度方法称为6to4。在6to4中,IPv6分组在一个IPv4网络中通过隧道传输。

相关推荐
William一直在路上2 小时前
KONG API Gateway中的核心概念
网络·gateway·kong
sakoba6 小时前
Docker学习其二(容器卷,Docker网络,Compose)
运维·网络·学习·docker·容器·基础
惜.己7 小时前
appium中urllib3.exceptions.LocationValueError: No host specified. 的错误解决办法
网络·appium
吉凶以情迁7 小时前
window服务相关问题探索 go语言服务开发探索调试
linux·服务器·开发语言·网络·golang
专注VB编程开发20年8 小时前
UDP受限广播地址255.255.255.255的通信机制详解
网络·udp·智能路由器
189228048619 小时前
NX947NX955美光固态闪存NX962NX966
大数据·服务器·网络·人工智能·科技
Sadsvit9 小时前
Linux 进程管理与计划任务
linux·服务器·网络
一碗白开水一10 小时前
【模型细节】FPN经典网络模型 (Feature Pyramid Networks)详解及其变形优化
网络·人工智能·pytorch·深度学习·计算机视觉
什么都想学的阿超10 小时前
【网络与爬虫 38】Apify全栈指南:从0到1构建企业级自动化爬虫平台
网络·爬虫·自动化
D-海漠12 小时前
安全光幕Muting功能程序逻辑设计
服务器·网络·人工智能