五、链路层和局域网
引导
一个子网中的若干节点是如何连接到一起的
- 点到点连接
- 多点连接:共享型介质、通过网络交换机
数据链路层和局域网
导论和服务
链路层
导论
上下文
链路层服务
成帧,链路接入
在(一个网络内)相邻两节点间完成可靠数据传递
流量控制
使得相邻的发送方和接收方节点的速度匹配
错误检测
差错由信号衰减和噪声引起
接收方检测出的错误(通知发送端进行重传或丢弃帧)
差错纠正
接收端检车和纠正bit错误,不通过重传来纠正错误
半双工和全双工
半双工:链路可以双向传输,但一次只有一个方向
全双工:链路可以双向传输,可以同时收发
链路层在哪里实现
适配器通信
差错检测和纠正
错误检测
奇偶校验
Internet校验和
校验和:CRC(循环冗余校验)
例子
CRC性能分析
多点访问协议
多路访问链路和协议
两种类型的链路(一个子网内部的链路连接形式):
点对点
- 拨号访问的PPP
- 以太网交换机和主机之间的点对点链路
广播(共享线路或媒体)
- 传统以太网
- HFC上行链路
- 802.11无线局域网
多路访问协议
单个共享的广播型链路
2个或更多站点同时传送:冲突(collision),多个节点同时发送,信号将会叠加
理想的多路访问协议
MAC(媒体访问控制)协议
三大类
信道划分
时分多路访问:TDMA
频分多路访问:FDMA
码分多路访问:CDMA(过时)
特点
随机访问
随机存取协议
时隙ALOHA
能不能成功发送帧,全凭概率,也就是全凭运气
效率(Efficiency)
纯ALOHA(非时隙)
效率
CSMA(载波侦听多路访问)
CSMA冲突
CSMA/C(collision)D(detect)(冲突检测)
冲突检测
以太网CSMA/CD算法
指数退避:
效率
无限局域网CSMA/C(collision)A(avoidance)
无限局域网中的MAC:CSMA/CA
不冲突冲突 ≠ 成功
IEEE 802.11 MAC协议:CSMA/CA
冲突避免
RTS-CTS交换
线缆接入网络
特点
依次轮流
轮流(Taking Turns)MAC协议
有信道划分MAC协议和随机访问MAC协议两者的优点
总结
LANs
IP地址和MAC地址
网络地址和mac地址分离
1、IP地址和MAC地址的作用不同
2、分离好处
3、捆绑问题
LAN地址
局域网上每个适配器都有一个唯一的LAN地址
ARP:Address Resolution Protocol
在同一个LAN(网络)
路由到其它LAN
以太网(Ethernet)
物理拓扑
第二代应该是HUB,图中写错了
以太帧结构
无连接、不可靠的服务
802.3 以太网标准:链路层和物理层
以太网使用CSMA/CD
以太网CSMA/CD算法
效率
10BaseT & 100BaseT
Hubs
Manchester编码
可以使用跳变同步时钟
100BaseT中的4b5b编码
千兆以太网
Hub:集线器
可以称作盒中总线
交换机
多路同时传输
交换机转发表
自学习
过滤/转发
例子
交换机级联
例子
机构
交换机VS路由器
VLAN
基于端口的VLAN
互联多个交换机
链路虚拟化:MPLS
本科不涉及,老师未讲
数据中心网络
a day in the life of web request
日常场景
连接到互联网
ARP(DNS之前,HTTP之前)
使用DNS
TCP连接携带HTTP报文
HTTP请求和应答
额外知识
帧的最短传输时间
点对点协议(Point to Point Protocol,PPP)
是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案
特点
(1)PPP具有动态分配IP地址的能力,允许在连接时刻协商IP地址;
(2)PPP支持多种网络协议,比如TCP/IP、NetBEUI、NWLINK等;
(3)PPP具有错误检测能力,但不具备纠错能力,所以ppp是不可靠传输协议;
(4)无重传的机制,网络开销小,速度快。
(5)PPP具有身份验证功能。
(6) PPP可以用于多种类型的物理介质上,包括串口线、电话线、移动电话和光纤(例如SDH),PPP也用于Internet接入。
帧格式
- 标志:占16位,帧开始标志
- 地址:占8位,在HDLC中,地址字段用于指定哪个站正在处理,但是由于PPP只关心一个目的地,这个字段总是被设置为0xFF (所有站)
- 控制:占16位,用于指示帧序列和重传行为。由于这些链路层的可靠性功能通常不是由PPP实现,所以控制字段设置为固定值0x030,由于地址和控制字段在PPP中都是固定的常数,所以在传输过程中经常通过一个称为地址和控制字段压缩(ACFC)的选项来省略它们,该选项实质上是消除了这两个字段。
- 协议:占8或16位,表明携带的数据类型。在某些情况下,如果协议字段压缩(PFC)选项在链路建立时协商成功,协议字段可被压缩为1字节。LCP分组总是使用 2字节的未压缩格式。
Protocol | 协议 | 对应的Data域的含义 |
---|---|---|
0x0000-0x3FFF | 网络层协议 | 网络层的数据报文 |
0x4000-0x7FFF | NCP不相关的"很少使用的"协议 | 与NCP无关的第整流量 |
0x8000-0xBFFF | NCP协议 | 网络控制协议(NCP)的数据报文 |
0xC000-0xFFFF | 控制协议 | 链路控制协议(LCP)的数据报文 |
- 数据:信息字段,即PPP帧的负载(如LCP帧、NCP帧),信息域缺省时最大长度不能超过1500字节,其中包括填充域的内容
- 填充:填充字段
- FCS:循环冗余码(类比CRC)
- 标志:占8位,帧结束标志
六个阶段
- 链路不可用阶段: 初始阶段
- 链路建立阶段: LCP协商
- 验证阶段: PAP/CHAP验证
- 网络层协议阶段:NCP协商(IPCP等协议)
- PPP会话维持阶段: 维持PPP会话, 定时发送Echo Request报文,并等待Echo Reply报文
- 网络终止阶段: 终止PPP会话,回到链路不可用阶段。
三大类
LCP(Link Control Protocol)链路控制协议:
LCP的主要工作是使一条点到点链路达到最低要求。
配置消息使链路两端开始基本配置过程,并建立商定的选项。
终止消息用于在完成后清除一条链路。LCP也提供了前面提到的 一些附加功能。
回送请求/应答消息可由LCP在一条活跃链路上随时交换,以验证对方的操作。
放弃请求消息可用于性能测试,指示对方丢弃没有响应的分组。
标识和剩余时间消息用于管理,了解对方的系统类型,指出链路保持建立的时间(例如出于管理或安全原因)。
LCP分组格式
LCP的PPP协议字段值始终是0xC021它不能用PFC删除,以免产生歧义。
字段解析:
- 代码:占8位,给出了请求或响应的操作类型。ACK消息通常表明接受一组选项, NACK消息用建议选项表明部分拒绝。REJECT消息完全拒绝一个或多个选项
Code | Description | Code | Description |
---|---|---|---|
0x01 | configure-request(配置请求) | 0x08 | Protocol-REJECT(协议拒绝) |
0x02 | configure-ACK(配置接受) | 0x09 | echo-request(回送请求) |
0x03 | configure-NACK(配置部分拒绝) | 0x0A | echo-reply(回送应答) |
0x04 | configure-REJECT(配置完全拒绝) | 0x0B | discard-request(放弃请求) |
0x05 | teminate-request(终止请求) | 0x0C | identification(标识) |
0x06 | terminate-ACK(终止ACK) | 0x0D | Time-Remaining(剩余时间) |
0x07 | code-REJECT(代码拒绝) |
- 标识:占8位,由LCP请求帧的发送方提供的序列号,并随着每个后续消息进行递增
- 长度:占16位,给出了LCP分组的字节长度,它不能超过链路的最大接收单元(MRU)。注意,长度字段是LCP协议的一部分,PPP协议通常不提供这个字段
- LCP数据:LCP数据报文
用途
链路配置报文、链路终止报文、链路维护报文
(1)链路配置报文:
包含Config-Request、Config-Ack、Config-Nak和Config-Reject四种报文。
当通信双方需要建立链路时,双方都需要发送Config-Request报文并携带自已所希望协商的配置参数选项。当接收方收到Config-Request报文时,会根据是否识别、认可Configure-Request报文中的配置参数来在剩下的三种配置报文中选择一种应答。 如果识别且认可全部参数,则应答Configure-ACK报文(携带全部配置参数); 如果识别,但只认可部分配置参数,则应答configure-NACK报文(携带不认可的配置参数); 如果不能识别所有的配置,则应答configure-Reject报文(携带全部报文)
LCP的配置选项(配置报文的数据域),是一些TLV(Type、Length、Value)组。
(2)链路终止报文:
包含Terminate-Request和Terminate-Reply两种报文。
LCP报文中提供了一种机制来关闭一个点对点的连接,想要关断链路的一端会持续发送Terminate-Request报文,直到收到一个 Terminate-Reply为止。接收端一旦收到了一个Terminate-Request报文后,必须回应一个Terminate-Reply报 文,同时等待对端先将链路断开后,再完成本端的所有断开的操作
(3)链路维护报文:
链路维护报文中比较杂。比如,我们需要定时进行PPP保活(确认当前PPP链路是否仍在活跃状态),则PPP链路双方分别发送Echo Request报文,如果对方回复了Echo Reply报文,则表示PPP链路仍在活跃状态
NCP(Network Control Protocol)
NCP有很多种,如IPCP、BCP、IPv6CP,最为常用的是IPCP(Internet Protocol Control Protocol)协议。NCP的主要功能是协商PPP报文的网络层参数,如IP地址,DNS Server IP地址,WINS Server IP地址等。PPPoE用户主要通过IPCP来获取访问网络的IP地址或IP地址段。
NCP流程与LCP流程类似,用户与ME设备之间互相发送NCP Config-Request报文并且互相回应NCP Config-Ack报文后,标志NCP己协商完,用户上线成功,可以正常访问网络了。
扩展协议,如MP (MultiLink Protocol) 多链路点对点协议
可用于将多条点到点链路聚合为一条链路。这种想法与链路聚合相似,并被用于多个电路交换信道(例如ISDNB信道)的聚合。MP包含一个特殊的LCP选项,表示支持多链路,以及一个用于多链路上PPP帧分片与重组的协商协议。一条聚合链路(称为一个捆绑)可作为一条完整的虚拟链路来操作,并包含自已的配置信息。链路捆绑由大量成员链路组成。每个成员链路可能有自已的选项集。
实现MP的典型方法是使分组轮流经过每个成员链路传输。这种方法称为银行柜员算法,它可能导致分组重新排序,可能为其他协议带来不良的性能影响。 (例如,虽然TCP/ IP可以正确处理重新排序后的分组,但也可能不如没有重新排序处理得好。) MP在每个分组中添加一个2 - 4字节的序列头部,而远程MP接收方的任务是重建正确的顺序。
MP帧格式
字段解析:
- 头部:支持2种格式:短头部(2字节)和长头部(4字节)。 LCP的短序列号选项(类型18)用于选择使用的格式。如果一个帧没有被分片,但使用这种格式传输,则B和E位都被置位,表明该分片是第一个和最后一个(即它是整个帧)。否则,第一个分片的B、E位组合被设置为10,最后一个分片的B、E位组合被设置为01 ,它们之间的所有分片被设置为00。
- 序列号:给出相对第一个分片的分组号偏移量。
参考资料:网课视频以及资料来源、PPP点对点协议分析、PPP协议