二、物理层与数据链路层

物理层

  介于因特网的分层架构,所以对于每一层的作用必然是我们学习的重点。而物理层作为因特网的最低层,它的作用就是连接物理主机并传输比特流。传输比特流大致分为两种方式:电话交换与分组交换。这两种方式的区别是如何为网络流量分配传输线路

电路交换

  采用这种方式传输数据必须有 建立连接 – 传输数据 – 断开连接的过程。但是由于因特网上传输数据具有突发性,并不是平均每个时间都有数据在传输,因此当没有数据传输却仍然占据着线路,这是对资源的极大浪费,因此这种方式很少采用。

分组交换

  另外一种方式就是分组交换。我们可以把因特网看作是N条线路连接起来的网络,电路交换的问题就是当从主机A传输数据到主机B需要经过X、Y、Z三条线路时,数据仅在线路X上传输时,线路Y、Z也是被占用无法被其他传输过程使用的,而分组交换是当数据在X上传输时,Y、Z仍然可以服务于其他数据传输过程。分组交换的核心思想就是存储转发,其最重要的设备就是路由器,当网络层的分组经过路由器时,路由器会将其存储下来,然后查找自身的转发表再选择合适的线路转发出去。
  所以总结一下:物理层的作用就是传输二进制流。

数据链路层

  数据链路层位于物理层之上,网络层之下,它负责将网络层的数据报(分组)封装成帧,便于传输,除此之外,它还提供了透明传输差错检测的功能,可以发现,它是为网络层服务的。
二、物理层与数据链路层_第1张图片
封装成帧
  记住,在网络上传输的永远是0101101100这样的二进制数据流,但是为什么我们在网络的不同分层上有不同的叫法呢?因为在网络中传输的数据其实都是以分组(IP数据报)为单位进行传输的。虽然各层传输的都是二进制流,但是它们之间还是有区别的,在网络层,传输的数据叫作IP数据报分组。因为在网络层传输时网络层协议(其实协议就是软件)会在传输层传下来的数据包前面加上特定的协议信息组成IP数据报,而在数据链路层,在不同的协议下传输的数据也会加上不同的协议信息。如下面的图所示:
二、物理层与数据链路层_第2张图片
而为了让物理层能够在比特流中识别一个帧,我们需要在IP数据报前面加上帧首部和帧尾部。所谓的帧尾部和帧首部其实就是分割不同帧的标志— 即确定帧的界限。ASCII码中有33个字符是不可打印的,它们都可以作为控制字符。

透明传输
  我们在网络中传输的不仅仅是文本,还有视频、音频等二进制数据,那么如果我们传输的数据中出现了控制字符怎么办?因特网的前辈们相出的方法是当在传输的数据部分出现控制字符时,在其前面加上转义字符,即告知转义字符后面的数据需要转义,并不是真正的帧结束和开始标记。如果传输的数据中还有转义字符,那么就在转义字符前面再加上转义字符。这样子实现了传输控制字符的功能即透明传输。

差错检测
  在因特网中传输的数据因为各种现实原因,难免会出错,那么我们怎么知道我们接收到的数据就是原来发送的数据呢?这个就是在链路层来解决这个问题,即差错检测。差错检测有很多种实现方式,这里讲一种最常见的,即循环冗余校验(CRC)。下面介绍其基本思想:
  假设要传输一个k位的比特流,在其后加上n位的帧校验码组成(k+n)位进行传输,然后在接收端用这个(k+n)位的数据除以一个除数,看余数是否为0,如果不为0就代表数据传输过程中出现差错。那么那个帧校验码是如何得到的?首先,我们选择一个合适的除数(它的选择其实有点复杂),假设是m位的,那么我们在原来要传输的数据k后面加上m-1个0得到新数据n,然后用n/m得到一个余数,这个余数就是帧校验码。原数据加上帧校验码传输到达目的地时又除以约定的除数,如果余数不为0则代表传输出错。 注意:数据链路层实现的是差错检测,而不是可靠传输,可靠传输是传输层实现的功能。

  在数据链路层,有两种常用的信道类型,一是点对点信道,二是广播信道。在这两种不同的信道上通信使用的是不同的传输协议,即PPP协议CSMA/CD协议。对于PPP协议来说,其实现的功能用户与ISP进行通信,这里只是提一下,感兴趣的小伙伴自己可以查阅资料,推荐《TCP/IP详解卷一》。对于CSMA/CD协议,我们需要好好看一看。

局域网的数据链路层
  在局域网(根据网络大小区分)中,以太网是应用最为广泛的通信技术,它使用的都是广播信道。常见网络拓扑结构有如下几种:
二、物理层与数据链路层_第3张图片
除此之外,IEEE 802委员会将局域网的数据链路层分成两层:

  1. 逻辑链路控制LLC层
  2. 媒体接入控制MAC层
    二、物理层与数据链路层_第4张图片
    但实际上大多数网卡(适配器)上都只实现了MAC层,因此我们后面对局域网的数据链路层的讨论也只会局限于MAC层。
    上面提到了网卡。对于这种设备很有必要介绍一下:它是我们计算机想要上网的必要设备,大致可分为有线网卡和无线网卡,它在出厂时就会被分配一个独一无二的48位(6字节)的MAC地址。注意:网卡是有过滤功能的,它会对每次接收到的数据帧进行检查,如果发现其目的地址不是自身或者帧本身传输出错,则会丢掉不作处理
    二、物理层与数据链路层_第5张图片
    家庭局域网
      可以看到家庭局域网是星型结构。
    二、物理层与数据链路层_第6张图片
    CSMA/CD协议
      它是用于总线拓扑结构之上的一种协议,即载波监听和碰撞监测。其基本思想是:在主机发送数据前或发送数据中都需要监测信道,看是否有其他主机同时在发送数据,如果是,则取消这次数据的发送,等待随机时间后再次发送。实际上星型网络拓扑结构从逻辑上来看也是总线类型的拓扑结构。

以太网的MAC层
  我们重点需要学习以太网MAC层上传输的数据帧的格式,如下图所示:
二、物理层与数据链路层_第7张图片
以太网层的任务:
  把来自网络层的IP数据报加上特定的首部和尾部组成数据帧,然后传给物理层;另外解析来自物理层的数据帧并进行过滤,剥除数据帧的帧首部和帧尾部取出IP数据报交给网络层
  看上图,数据帧的帧首部有6字节的源地址、6字节的目的地址和2字节的协议类型标识,另外帧尾部有4字节的帧校验序列。源地址即表明此数据帧上次所经过设备的MAC地址,而目的地址表示此数据帧要交付的目标设备的MAC地址。而2字节的类型表示数据部分传输的是哪种协议的数据报,常见的有IP数据报、ARP请求和应答数据报。如下图:
二、物理层与数据链路层_第8张图片
特别需要注意的是:数据帧的数据部分是有长度限制的:其必须是 [46, 1500] 之间。为什么需要限制数据帧的大小呢?个人观点是:网络层传输分组是基于存储转发的机制实现的,如果数据帧太大,势必会导致路由器因缓存区满而丢掉一部分数据包,导致网络传输效果差;另外一点,过大的数据帧传输也会消耗更多的时间,导致占据信道时间过长,进而导致另外一部分数据长时间无法转发导致响应率低的问题。

由于数据从一个主机到另一个主机的传输势必需要经过网络层,因此这里不介绍数据传输的过程,等下一篇文章再讨论。

你可能感兴趣的:(计算机网络)