链路层
1.链路层提供的服务
数据链路层负责通过链路将数据报从一个节点传输到物理上的相邻节点;
链路层可能提供的服务包括:
- 成帧:将网络数据报封装成【帧】(加头部和尾部)
- 链路访问:媒体访问控制(MAC)协议规定了帧在链路上传输的规则(使用MAC地址)
- 可靠交付:(相邻节点间)可靠交付服务通常用于易产生高差错率的链路(如无线链路);对于低比特差错的链路,可靠交付可能被认为是一种不必要的开销,因此不提供此服务;
- 流量控制:(相邻收发节点)没有流量控制,可能会造成缓存区溢出;
- 差错检测:由信号衰减、噪声引起的误差。接收器检测到存在错误:向发送器发送信号以进行重传或丢弃帧;
- 差错纠正:接收机识别并纠正比特错误,而无需重新传输;
- 半双工和全双工(duplex):
- 半双工时,链路两端的节点都可以传输,但不能同时传输。
- 全双工时,链路两端的节点可以同时传输分组。
1.1 差错检测和纠错技术
在发送节点,为了避免比特差错,使用差错检测和纠错比特(EDC)来增强数据D
EDC: Error Detection and Correction bits (redundancy)
D = Data protected by error checking, may include header fields
并不能100%检错;
-
奇偶校验:只需包含1个附加比特。
- 对于偶校验,选择一个值使得所有比特中1出现偶数次
- 对于奇校验,选择一个值使得所有比特中1出现基数次 接收方通过检测1出现的次数判断是否出现差错。如果出现偶数个比特差错,则检验不出。检错率50%。
-
循环冗余检测(CRC):发送方和接收方协商一个r+1比特的生成多项式(G),要求其最高比特位为1。发送方通过在d比特的数据后附加r比特,使得整个(d+r)比特的值能够被G整除。接收方用G去除(d+r)比特,如果余数非0,则出现差错
要求会计算
要传的数据R/生成多项式G的余数
待传数据后先加上r位0;
双方商定一个r+1位生成多项式作为除数G;
二者相除得到余数作为r位FCS;
待传数据后加上r位FCS冗余码作为R;
接收方判断R/G余数是否为0;
R/G的余数是否为0?
💡 注意:这里的除法相减时是异或计算,即同0异1;
- 检错纠错由硬件实现
- 可以认为“接收端数据链路层接收的帧均无差错”
2.链路访问
两类链路:
- 点对点
- 广播
2.1 多路访问协议
只有一个共享的广播信道——两个或多个节点同时发送数据时可能导致广播信道冲突;
▪分布式算法,确定节点如何共享信道,即确定节点何时可以传输
▪关于频道共享的通信必须使用频道本身! • 没有用于协调的带外通道
多路访问协议用于广播链路,广播链路能够让多个发送和接收节点都连接到相同的、单一的、共享的广播信道上。多路访问协议用于协调多个发送和接收节点对一个共享广播信道的访问
-
信道划分协议 channel partitioning
信道划分为更小部分以供节点专用,适合高负载
-
TDMA(时分多路复用):对于N个节点的信道,传输速率为R bps,TDM将时间划分为时间帧,并进一步划分每个时间帧为N个时隙,每个节点在特定的时隙内传输
(消除了碰撞,非常公平;但节点被限制与R/N bps的平均速率,即使只有一个节点有数据要发送)
-
FDMA(频分多路复用):在R bps的信道中创建了N个较小的R/N bps信道,每个节点使用一个较小的信道传输
(消除了碰撞,公平;但节点被限制与R/N bps的平均速率,即使只有一个节点有数据要发送)
-
CDMA(码分多址):每个节点分配一种不同的编码,每个节点使用其唯一的编码来对发送的数据进行编码
(如果精心选择编码,不同节点能同时传输)
slot:槽
frequency bands:频段
idle:闲置
-
-
随机接入协议 random access
允许碰撞,从中“恢复”,适合低负载
-
纯ALOHA:帧到达节点时,立刻传输。如果发生碰撞,节点将立即(在完全传输碰撞帧后)以概率p重传。否则,等待一个帧传输时间,再以概率p重传...
-
分隙ALOHA:时间被划分为时隙,每个节点的时间同步,帧的传输只在时隙的开始时进行。如果发生碰撞,在下一个时隙开始时以概率p重传,否则等待一个时隙再以概率p重传...
发送帧必须在时隙的起点;
-
CSMA(载波侦听多路访问):发送前先侦听信道,如果没有其它节点在使用信道,则传输数据。CSMA没有碰撞检测,即使发生碰撞,也将传输完碰撞帧(由于节点间数据传输存在时延,很可能一个传输正在信道中但是由于还未到达所以检测到信道空闲,此时传输最终会发生碰撞)
-
CSMA/CD(具有碰撞检测的载波侦听多路访问):先侦听信道,如果没有其它节点在使用信道,则传输数据。但是有碰撞检测,如果发生碰撞,会停止传输剩下的数据,等待一个随机时间(通常比传输一帧短)后,再进行尝试。(先听后发,边发边听)
特点:
① 经侦听,如介质空闲,则发送
② 如介质忙,持续侦听,一旦空闲立即发送
③ 如果发生冲突,等待一个随机分布的时间再重复步骤①
【以太网】使用的CSMA/CD:
- NIC从网络层接收数据报,创建帧;
- 如果NIC检测到通道空闲,开始帧传输,反之等待到空闲;
- 如果传输时检测到另一个传输,中止并发送阻塞信号;
- 终止后NIC进入二进制(指数)退避;
-
第m次碰撞,从{0,1,……,2^m -1}中随机选择K,等待K*512bit时间,返回步骤2;
⇒冲突越多,退避时间越长;
-
-
-
轮流协议 “taking turns”
轮流发送
- 轮询协议:指定节点之一为主节点。主节点以循环的方式轮询每个节点。告诉每个节点能够传输的最大帧数,然后让节点传输帧,主节点通过观察信道上是否缺乏信号来决定一个节点合适完成了帧的发送(消除了困扰随机接入协议的碰撞和空时隙,效率很高;但引入了轮询延时,同时主节点发生故障将使信道不可用)
- 令牌传递协议:节点间通过令牌传递信道使用权,如果没有数据发送,立即传递令牌给下一节点(一个节点的故障可能会使整个信道崩溃。或者如果一个节点忘记释放令牌,必须调用某些恢复步骤使令牌返回到循环中来)
3.链路层编址
3.1 MAC地址
长度为6字节,共48比特,通常用十六进制表示法,地址的每个字节被表示为一对十六进制数
6组2位16进制数;(每位16进制数表示4bit,每组一个字节)
- 每个适配器(adapter)具有一个唯一的MAC地址,不随位置发生变化(就像人的身份证,而IP则像人的邮政地址)
- 一台路由器的每个接口都有一个ARP模块和一个适配器
MAC地址分配:当一个公司要生产适配器时,它购买一块MAC地址空间,IEEE分配这块地址时,固定前24比特,让公司自己为每个适配器生成后24比特的唯一组合
3.2 ARP 地址解析协议
用于根据IP地址查询MAC地址;
ARP表项:[IP地址,MAC地址,TTL]
ARP查询:
-
相同局域网内
▪A想要发送数据报给B,B的MAC地址不在A的ARP表中。 ▪A广播ARP查询包,包含B的IP地址 ▪局域网内所有节点接收ARP查询 ▪B接收到ARP报文,用自己的MAC地址回复A ▪A缓存(保存)ip到MAC地址对在它的ARP表,直到信息变旧(超时) ▪ARP是“
即插即用”,节点创建自己的ARP表,不需要网络管理员的干预 -
局域网以外
- 主机1通过ARP获取路由器接口111.111.111.110的MAC地址,将数据报封装成帧,转发
- 路由器的接口111.111.111.110收到帧,由于MAC地址匹配,适配器获取帧中的数据报上传给网络层
- 路由器通过查找转发表将数据报通过交换结构转发到输出接口222.222.222.220
- 输出接口222.222.222.220通过ARP获取子网中主机2的MAC地址
- 获得主机2的MAC地址后,将数据报传递给适配器,封装成帧,最终发送到主机2
4.以太网
所有的以太网技术都向网络层提供无连接服务、不可靠服务
💡 -交换机的冲突域和广播域。 -创建开关表:自主学习。 -通信设备的差异:集线器、中继器、交换机、网桥、路由器。 -路由器和交换机的相同和不同4.1 以太网交换机
链路层设备;
- 存储、转发帧;
- 检查传入帧的MAC地址,使用CSMA/CD;
透明:主机不知道交换机的存在;
即插即用,自学:无需配置;
全双工:每条链路都有自己的冲突域;
交换表:(主机的MAC地址、到达主机的接口、TTL)
转发:
- 目的地位置未知:泛洪
- 目的地位置已知:单独发送
1)交换机转发与过滤
- 过滤:交换机决定一个帧是应该转发还是应该丢弃
- 转发:决定一个帧应该被导向哪个接口
过滤和转发都借助于交换机表:
假设具有目的地址DD-DD-DD-DD-DD-DD的帧从交换机的x接口到达:
- 如果表中没有针对DD-DD-DD-DD-DD-DD的表项,则向除了x的其它所有接口广播帧
- 如果表中有针对DD-DD-DD-DD-DD-DD的表项
- 1)接口等于x:(说明帧的目的地和帧处于同一子网,意味着该帧已经在包含目的地址的LAN网段广播过了)该帧执行过滤功能
- 2)接口为y,不等于x:将帧转发到接口y的输出缓存区
2)自学习(即插即用)
交换机表是自动、动态、自治地建立的,没有来自网络管理员或配置协议的任何干预。换句话说,交换机是自学习的
- 交换机表初始为空
- 源地址为DD-DD-DD-DD-DD-DD的帧从接口x到达时,1)如果不存在则新建一项;2)存在则更新当前时间
- 如果一段时间后,在x接口没有来自DD-DD-DD-DD-DD-DD的帧,则将该表项删除
3)交换机与路由器对比
交换机:
存储转发模式:链路层设备(检查链路层报头)。
有转发表:使用泛洪、学习和MAC地址学习转发表。
- 优点
- 即插即用
- 相对高的分组过滤、转发速率
- 缺点
- 交换网络的活跃拓扑限制为一棵生成树(为了防止广播帧的循环)
- 对广播风暴不提供任何保护措施(如果某主机故障,没完没了传输广播帧流,交换机会转发所有这些帧,使得整个以太网崩溃)
路由器:
存储转发模式:网络层设备(检查网络层报头)。
有转发表:使用路由算法、IP地址计算表。
- 缺点
- 不是即插即用(需要人为配置IP地址)
- 对分组的处理时间更长(必须处理高达第3层的字段)
- 优点
- 分组不会被限制在一棵生成树上,从而能用各种拓扑结构来构建因特网
- 对广播风暴提供了防火墙保护
| 集线器 | 路由器 | 交换机 | |
|---|---|---|---|
| 流量隔离 | 无 | 有 | 有 |
| 即插即用 | 有 | 无 | 有 |
| 优化路由 | 无 | 有 | 无 |
5 虚拟局域网VLAN
传统局域网(左)与虚拟局域网(右)
5.1 虚拟局域网的功能
每个VLAN为一个独立广播域。支持VLAN功能的交换机可以配置为在单个物理LAN基础设施上定义多个虚拟LAN。
优点:
▪ 便于工作站移动、增加、删除的管理 ▪ VLAN带来了安全保证 ▪ 降低了管理开销 ▪ 控制了广播域,平衡了交通流量 ▪ 将重要工作站或服务器放置在安全位置
流量隔离:1 ~ 8端口之间的帧只能到达1 ~ 8端口 •也可以根据端点的MAC地址定义VLAN,而不是交换机端口
动态成员:端口可以在vlan路由器之间动态分配 ▪vlan之间的转发:通过路由完成(就像单独的交换机一样) •实际上,供应商销售的是组合交换机和路由器
trunk端口:在多个物理交换机上定义的vlan之间承载帧。
5.2 跨不同的虚拟局域网进行通信
域间通信需要通过路由器;
6 Web请求生命周期
-
连接互联网
连接的笔记本电脑需要获得自己的IP地址,第一跳路由器地址,DNS服务器地址:使用DHCP
DHCP请求封装在UDP、IP、802.3以太网中;
局域网内以太网帧广播(dest: FFFFFFFFFFFF),由运行DHCP服务器的路由器接收;
以太网解绑定到IP解绑定,UDP解绑定到DHCP;
DHCP服务器将客户端的IP地址、客户端的第一跳路由器的IP地址、DNS服务器的名称和IP地址组成
DHCP ACK在DHCP服务器端封装,帧通过局域网转发(交换机学习),在客户端解复用
DHCP客户端接收DHCP ACK回复
💡 客户端现在拥有IP地址,知道DNS服务器的名称和地址,知道其第一跳路由器的IP地址 -
ARP
在发送HTTP请求之前,需要www.google.com的IP地址:DNS。
创建、封装在UDP中、封装在IP中、封装在Eth中的DNS查询。
要将帧发送到路由器,需要路由器接口的MAC地址:ARP。
路由器收到的ARP query广播,路由器回复ARP reply,给出路由器接口的MAC地址。
💡 客户端现在知道第一跳路由器的MAC地址,因此现在可以发送包含DNS查询的帧。 -
使用DNS
IP数据报包含通过局域网交换机从客户端转发到第一跳路由器的DNS查询
IP数据报从校园网络转发到Comcast网络,路由(由RIP、OSPF、IS-IS和/或BGP路由协议创建的表)到DNS服务器。
解复用到DNS服务器。
DNS服务器使用IP地址www.google.com回复客户端。
-
TCP连接携带HTTP
发送HTTP请求,客户端首先打开到Web服务器的TCP Socket。
TCP
SYNsegment(三次握手中的第1步)域间路由到Web服务器。Web服务器使用TCP
SYNACK作出响应(3次握手中的步骤2)TCP连接建立。
-
HTTP请求/回复
将HTTP请求发送到TCP套接字
IP数据报包含路由到www.google.com的HTTP请求
web服务器响应HTTP回复(包含网页)
IP数据报包含路由回客户端的HTTP应答