【计算机网络】链路层


网络层提供两台主机之间的通信服务;传输层提供位于不同主机上的两个进程之间的通信服务。
链路层信道:广播信道、点对点通信链路(链路的一端只有一个发送方,另一端只有一个接收方)。

1、链路层概述

运行链路层协议的任何设备均成为节点(包括主机、路由器、交换机和WIFI接入点);把沿着通信路径连接相邻节点的通信信道称为链路。

1.1链路层提供的服务

任一链路层的基本服务都是将数据报通过单一通信链路从一个节点移动到相邻节点。
链路层协议能够提供的可能服务:

  • 1、成帧:收到网络层数据报之后对其进行封装,加上自己的首部字段。帧的结构由链路层协议决定。
  • 2、链路接入:媒体访问控制MAC规定了传输的规则。
  • 3、可靠交付:链路层协议提供可靠交付服务的时候,能保证无差错地经链路层移动每个网络层数据报(通常通过确认和重传)。通常无线链路的差错率更高。
  • 4、差错检测和纠正:可能会因为一些信号衰减和电磁噪声导致一些比特差错。差错纠正是检测出错误之后,还对准确确定差错位置并进行纠正。

1.2链路层在何处实现

链路层是实现在路由器的线路卡中的。链路层的主体部分是在网络适配器(网络接口卡)中实现的。
链路层控制器是网络适配器的核心(用来实现一些链路层服务)。

  • 链路层是软件和硬件的结合体(大部分链路层是在硬件中实现的,但是部分链路层是在运行在主机CPU上的软件中实现的)。
    链路层

2、差错检测和纠正技术

比特级差错检测和纠正:对从一个节点发送到另一个物理上连接的邻近节点的链路层帧中的比特损伤进行检测和纠正。

  • EDC差错检测和纠正比特:发送发发送整个数据(包括数据部分额首部字段)D和EDC,接收方收到D’和EDC’,接收方要确定收到的D’和EDC’跟初始的是否相同(接收方并不知道初始数据)
  • 差错检测
    在传输数据中检测差错的3种技术:奇偶校验、检验和方法(常用于传输层)、循环冗余检测(常用于链路层)。

2.1奇偶校验

单个奇偶校验位:数据D有d比特,我们需要添加1位,使得在偶校验中,最终的d+1位里面有偶数个1;在奇校验里面,最终的d+1位里面有奇数个1。
接收方收到这d+1位之后,只需要看看里面的1的个数。比如在偶校验里面出现了奇数个1,那么就是至少有一个(奇数个)比特差错。但是如果有偶数个比特差错,就检验不出来了(虽然多个比特同时出错的概率很小)。
二维奇偶校验:包含比特值改变的列和行的校验值都会出现差错。这样就可以精确到某一位出错从而进行纠正。
二维校验
二维奇偶校验可以检测一个分组中两个比特差错的任何组合,但是不能纠正。
接收方检测和纠正差错的能力被称为前向纠错FEC。

2.2检验和方法

如因特网校验和在发送方将数据按16比特的整数进行求和取反码,然后将结果放在首部字段里面的检验和。接收方收到之后将整个数据(包括校验和)进行相加,再取反码,正确的情况是结果全1。

  • 为什么传输层使用检验和而链路层使用CRC呢?
    传输层通常是在主机中作为用户操作系统的一部分用软件实现的,因为传输层差错检测用软件实现,所以采用简单而快速的如检验和这样的差错检测方案是比较好的。链路层大部分是硬件实现的,能够快速执行更复杂的CRC操作。

2.3循环冗余检测

CRC编码也称为多项式编码,将要发送的比特串看作系数是0和1的多项式,对比特串的操作被解释位多项式算术。
数据D是d比特,发送发和接收方要商量一个r+1比特模式,称为生成多项式G(G的最高有效位比特是1)。
CRC

发送方选择r个附加比特R,加到数据D上,使得得到的d+r比特模式用模2算术(异或)恰好能被G整除。接收方用G去除接收到的d+r比特,余数非零则出现差错。
D·2^r XOR R=nG
两边异或:D·2^r=nG XOR R------>R=remainder D·2^r/G。
如:D=101110 d=6 G=1001 r=3,那么R=remainder 101110·000100/G=remainder 10111000/1001=011
所以传输的就是D+R也就是101110011。

3、多路访问链路和协议

  • 两种类型的网络链路:点对点链路(链路一端的单个发送发和链路另一端的单个接收方组成)和广播链路。
  • 点对点协议PPP和高级数据链路控制HDLC就是两种这样的协议。
  • 广播链路:能够让多个发送和接收节点都连接到相同的、单一的、共享的广播信道上。
  • 多路访问问题:如何协调多个发送和接收节点对一个共享广播信道的访问。
  • 多路访问协议:节点通过这些协议来规范它们再共享的广播信道上的传输行为。
  • 多路访问协议分为:信道划分协议、随机接入协议和轮流协议。

3.1信道划分协议

  • 时分复用TDM和频分复用FDM是两种能够用于在所有共享信道节点之间划分广播信道带宽的技术。
    如TDM将时间划分为时间帧,并进一步划分每个时间帧为N个时隙。将每个时隙分配给N个节点中的一个。循环进行传输。(类似开会的时候每个人都有固定的说话时间,轮到自己了才可以讲话)TDM公平而且消除碰撞。
  • 缺陷:节点被限制于R/Nbps的平均速率,即使只有这一个节点要发送分组。并且节点必须要等到自己那一part才能进行发送。
  • FDM是将Rbps信道划分为不同的频段(每个频段具有R/N带宽),把每个频率分配给N个节点中的一个。优缺点和TDM一致。
  • CDMA码多分址:CDMA对每个节点分配一种不同的编码,然后每个节点用它唯一的编码来对它发送的数据进行编码。(不同的节点可能能够同时传输)

3.2随机接入协议

  • 一个传输节点总是以信道的全部速率进行发送,当有碰撞的时候就会重发,直到通过为止。在发生碰撞之后,会等待一个随机时延,然后再重发而不是立即重发。
  • 常用的随机接入协议:ALOHA协议、载波侦听多路访问CSMA协议。

3.2.1时隙ALOHA

前提条件:所有帧长度一样,时间被划分成L/Rs的时隙(一个时隙能传输一帧)、节点只在时隙起点开始传输帧、节点是同步的,每个节点都知道时隙何时开始、节点会检测到碰撞事件。

  • 操作:节点要等到下一个时隙开始才发送自己要发送的这个新帧;没有碰撞就不会重传;有碰撞会在时隙结束之前检测到碰撞并且会在之后以概率p在后续的每个时隙中重传它的帧,直到被传输出去。当有N个活跃节点时,时隙ALOHA的效率是Np(1-p)^(N-1),最大效率是1/e
  • 缺点:
    时隙
    如图:①会有碰撞事件②会有空闲时隙
  • 时隙多路访问协议的效率:当有大量的活跃节点且每个节点总有大量的帧要发送时,长期运行中成功时隙的份额。

3.2.2ALOHA

  • 在碰撞之后立即以概率p重传,否则等待一个帧传输事件,之后以概率p传输该帧,或者以概率1-p在另一个帧时间等待。一个给定的节点成功传输一次的概率是p(1-p)^(2(N-1)),最大效率是1/2e,正好是时隙ALOHA的一半。

3.2.3载波侦听多路访问CSMA

  • 时隙和纯ALOHA中,每个节点不关心其他节点的活跃状态,即使有另一个节点开始干扰也不会停止传输。
  • 载波侦听:一个节点在传输前先听通道,如果来自另一个节点的帧正向信道上发送,节点则等待直到检测到一段时间内没有传输,然后开始传输。
  • 碰撞检测:当一个传输节点在传输时一致在侦听此信道,如果检测到另一个节点正在传输干扰帧,就停止传输。
  • 信道传播时延越长,载波侦听节点不能侦听到网络中另一个节点已经开始传输的机会就越大。

3.2.4具有碰撞检测的载波侦听多路访问CSMA/CD

CSMA不会进行碰撞检测。CSMA/CD中,检测到有碰撞就停止传输。

  • 二进制指数后退算法:经历n次碰撞之后,节点随机地从[0,1,2…2^n-1]中选择一个K值。(实际等待时间时K·512比特时间)

3.2.5CSMA/CD效率(略)

当有大量地活跃节点,且每个节点有大量的帧要发送时,帧在信道中无碰撞地传输地那部分时间在长期运行时间中所占的份额。

  • 效率=1/1+5dprop/dtrans
  • 其中dprop是表示信号能在任意两个适配器之间传播所需的最大时间
  • dtrans表示传输一个最大长度的以太网帧的时间

3.3轮流协议

分为

  • ①轮询协议:节点之一是主节点,主节点循环轮询每个节点(告诉每个节点可以传输的帧的最多数量)
    缺点:引入了轮询时延;主节点有故障的话整个信道就会变得不可操作
  • ②令牌传递协议:一个称为令牌的小的特殊帧在节点之间固定顺序交换。有令牌的时候,可以传输最大数目的帧数。
    缺点:一个节点故障会引起整个信道崩溃;如果有个节点忘记释放令牌也是一件麻烦事。

4、交换局域网

4.1链路层寻址和ARP

主机和路由器的适配器具有链路层地址。
ARP地址解析协议:提供将IP地址转换为链路层地址的机制。

4.1.1MAC地址

链路层地址:LAN地址、物理地址、MAC地址。6字节。
总的MAC地址是被统一管理的。并且MAC地址不会改变。
MAC广播地址:有时候需要让局域网上的所有其他适配器来接收并处理它打算发送的帧,这个时候,发送适配器在该帧的目的地址字段中插入一个特殊的MAC广播地址(全1)

4.1.2地址解析协议ARP

  • IP地址和MAC地址的转换。
    ARP
    如图,主机C要向主机A发送IP数据报。这个时候,源和目的在同一个子网中,那么为了成功发送,源要提供IP数据报和目的主机A的MAC地址,然后将数据打包发送。就是要使用ARP来确定目的主机的MAC地址。
    工作原理:每个主机或者路由器的内存中有一个ARP表,包含IP地址到MAC地址的映射关系(有TTL寿命字段),表中不是包含了所有子网上的所有主机,有的没有用过,有的已经过期。
    所以上文C到A,如果C中的ARP表有这一项(关于A的),那么查找就很快,如果没有:
    ①发送方构造ARP分组(包括发送和接收IP地址和MAC地址)(ARP查询分组和ARP响应分组有相同的格式)
    ②适配器用MAC广播地址发送这个分组。封装分组发送。
    ③子网中的其他适配器都会接收到并且向上传递给ARP模块,ARP模块会确认是不是自己
    ④匹配的就会给查询主机一个带有所希望映射的响应ARP分组
    ⑤查询主机可以更新自己的ARP表,并且发送IP数据报。

4.1.3发送数据报到子网以外

ARP
如图,一台路由器对它的每个接口都有一个IP地址,对路由器的每个接口,也有一个ARP模块和一个适配器。
所以主机跨子网发送数据报,会先将数据发送到适当的路由器接口的适配器地址(例如左上角主机向右下角主机发送,那么左上角主机所选择的目的MAC地址应该是路由器左边接口的地址,然后通过路由器转发)

4.2以太网

以太网帧结构

  • 类型字段运行以太网复用多种网络层协议。(主机能够使用除了IP意外的其他网络层协议)
  • 前同步码:以太网帧以一个8字节的前同步码字段开始。
  • 所有的以太网技术都向网络层提供无连接服务;提供不可靠服务(没有确认信号)。
    以太网技术:如10BASE-T、100BASE-T等,前面的数字表示速率,如10Mbps,100Mbps。BASE是指基带以太网(物理媒介金承受以太网流量)、最后一部分是指物理媒体本身(T指双绞铜线)

5、Web页面请求的历程

Bob将他的便携机与学校的以太网交换机相连,下载一个web页面。

  • ①准备:DHCP、UDP、IP和以太网
    便携机通过一根以太网电缆连接到学校的以太网交换机,交换机与学校路由器相连,路由器与一个ISP相连。ISP为学校提供DNS服务。
    要连接先需要IP地址,所以先通过DHCP获得一个IP地址:
    1)便携机上的操作系统生成一个DHCP请求报文,并且放到目的端口67(DHCP服务器)和源端口(DHCP客户)的UDP报文段,该报文段放在一个有广播IP目的地址地址和源IP地址(全0)的IP数据报中。(因为这是本人还没有IP地址)
    2)包含DHCP请求报文的数据报放在以太网帧中(广播地址),让该帧广播到与交换机连接的所有设备(源MAC地址是本人的MAC地址)
    3)包含DHCP请求的广播以太网帧是第一个由便携机发送到以太网交换机的帧。
    4)路由器接收到广播以太网帧,包含DHCP请求,并且提取IP数据报,并且数据报被分解成DHCP请求报文和UDP报文段。(因为广播IP目的地址)
    5)DHCP服务器分配地址给便携机,并且生成一个包含IP地址和DNS服务器的IP地址,默认网关路由器IP和子网快的DHCP ACK报文。放到UDP中–>IP数据报–>以太网帧进行发送。
    6)交换机自学习能让本人接收到这个ACK报文获得自己的IP地址和DNS服务器的IP地址。并且在IP转发表中安装默认网关的地址。
  • ②仍在准备:DNS和ARP
    URL输入浏览器就开始事件。web浏览器通过生成一个TCP套接字开始过程(显式页面过程),套接字向www.baidu.com发送HTTP请求。在这之前,需要直到www.baidu.com的IP地址。这就需要DNS
    1)便携机生成一个DNS查询报文,将www.baidu.com放在报文中,加上一些地址端口信息进行发送。
    2)上面已经有了学校网关路由器的IP地址,所以可以打包封装发送到网关路由器,但是不知道MAC地址,这个时候就需要ARP协议来帮助我们获得MAC地址
    3)ARP协议过程:加上IP地址进行全1广播,这就是ARP查询报文。将这个以太网帧发送给交换机,交换机再发送给所有连接的设备,包括网关路由器。
    4)匹配的网关路由器会对其回应自己的MAC地址,并将数据发送回去。
    5)便携机获得了ARP回答报文的帧,从里面获取了MAC地址
    6)这个时候,便携机就可以让自己的DNS查询报文寻址到网关路由器的MAC地址
  • ③仍在准备:域内路由选择到DNS服务器
    接着要处理DNS的问题了。
    1)网关路由器获得帧并抽出包含DNS的IP数据报。路由器查表转发。
    2)转发过程中还会用到BGP协议。
    3)DNS查询报文到达DNS服务器,DNS会在数据库查询并返回IP地址。如果没有就会迭代或者递归查询。
    4)便携机获得www.baicu.com的IP地址。
  • ④web客户-服务器交互:TCP和HTTP
    1)Bob可以生成TCP套接字,通过套接字可以向www.baidu.com发送HTTP GET报文。(在这之前要三次握手)
    2)报文经过路由等的转发,到达www.baidu.com,完成三次握手,建立连接。
    3)便携机可以向网站发送字节了,将URL放在HTP GET报文里面,封装发给网站服务器。
    4)服务器通过套接字获取HTTP GET报文,生成HTTP响应报文,将请求的对象放在响应内容中,通过TCP套接字发送回去
    5)HTTP回答报文送到客户上,客户通过套接字读取HTTP响应,抽取要的页面内容。

猜你喜欢

转载自blog.csdn.net/RuRu_Bai/article/details/122046752