网络知识入门,数字信号如何转换为电信号(七)

网卡如何发送以太网包

      好了,下面来看一看网卡是如何将包转换成电信号并发送到网线中的。网卡驱动从 IP 模块获取包之后,会将其复制到网卡内的缓冲区中,然后向MAC 模块发送发送包的命令。接下来就轮到 MAC 模块进行工作了。 首先,MAC 模块会将包从缓冲区中取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验序列,如图所示。

     

          

     报头是一串像 10101010…这样 1 和 0 交替出现的比特序列,长度为56比特,它的作用是确定包的读取时机。当这些 1010 的比特序列被转换成电信号后,会形成如下图这样的波形。接收方在收到信号时,遇到这样的波形就可以判断读取数据的时机。关于这一块内容,我们得先讲讲如何通过电信号来读取数据。               

              

如何通过电信号来读取数据

       用电信号来表达数字信息时,我们需要让 0 和 1 两种比特分别对应特定的电压和电流,例如图 (a)这样的电信号就可以表达数字信息。通过电信号来读取数据的过程就是将这种对应关系颠倒过来。也就是说,通过测量信号中的电压和电流变化,还原出 0 和 1 两种比特的值。然而,实际的信号并不像图所示的那样有分隔每个比特的辅助线,因此在测量电压和电流时必须先判断出每个比特的界限在哪里。但是,像图 (a)右边这种 1 和 0 连续出现的信号,由于电压和电流没有变化,我们就没办法判断出其中每个比特到底应该从哪里去切分。

                    

      要解决这个问题,最简单的方法就是在数据信号之外再发送一组用来区分比特间隔的时钟信号。如图(b)所示,当时钟信号从下往上变化时 A 读取电压和电流的值,然后和 0 或 1 进行对应就可以了。但是这种方法存在问题。当距离较远,网线较长时,两条线路的长度会发生差异,数据信号和时钟信号的传输会产生时间差,时钟就会发生偏移。要解决这个问题,可以采用将数据信号和时钟信号叠加在一起的方法。这样的信号如图 (c)所示,发送方将这样的信号发给接收方。由于时钟信号是像图 (b)这样按固定频率进行变化的,只要能够找到这个变化的周期,就可以从接收到的信号(c)中提取出时钟信号(b),进而通过接收信号(c)和时钟信号(b)计算出数据信号(a),这和发送方将数据信号和时钟信号进行叠加的过程正好相反。然后,只要根据时钟信号(b)的变化周期,我们就可以从数据信号(a)中读取相应的电压和电流值,并将其还原为 0 或 1 的比特了。这里的重点在于如何判断时钟信号的变化周期。

      时钟信号是以 10 Mbit/s或者 100 Mbit/s 这种固定频率进行变化的,就像我们乘坐自动扶梯一样,只要对信号进行一段时间的观察,就可以找到其变化的周期。因此,我们不能一开始就发送包的数据,而是要在前面加上一段用来测量时钟信号的特殊信号,这就是报头的作用 。以太网根据速率和网线类型的不同分为多种派生方式,每种方式的信号形态也有差异,并不都是像本例中讲的这样,单纯通过电压和电流来表达 0 和 1 的。因此,101010…这样的报头数字信息在转换成电信号后,其波形也不一定都是图 中的那个样子,而是根据方式的不同而不同。但是,报头的作用和基本思路是一致的。报头后面的起始帧分界符在图中也已经画出来了,它的末尾比特排列有少许变化。接收方以这一变化作为标记,从这里开始提取网络包数据。也就是说,起始帧分界符是一个用来表示包起始位置的标记。末尾的 FCS(帧校验序列)用来检查包传输过程中因噪声导致的波形紊乱、数据错误,它是一串 32 比特的序列,是通过一个公式对包中从头到尾的所有内容进行计算而得出来的。具体的计算公式在此省略,它和磁盘等设备中使用的 CRCA 错误校验码是同一种东西,当原始数据中某一个比特发生变化时,计算出来的结果就会发生变化。在包传输过程中,如果受到噪声的干扰而导致其中的数据发生了变化,那么接收方计算出的 FCS 和发送方计算出的 FCS 就会不同,这样我们就可以判断出数据有没有错误。

 

向路由器(或集线器)发送网络包

 
       加上报头 起始帧分界符和 FCS 之后 我们就可以将包通过网线发送出去了。
 
        发送信号的操作分为两种 一种是使用集线器的半双工模式, 另一种是使用交换机的全双工 模式
 
 
1.半双工模式
 
 
        在半双工模式中,为了避免信号碰撞,首先要判断网线中是否存在其他设备发送的信号。 如果有 则需要等待该信号传输完毕 因为如果在有信号时再发送一组信号, 两组信号就会发生碰撞 当之前的信号传输完毕 , 或者本来就没有信号在传输的情况下, 我们就可以开始发送信号了
 
       首先 MAC 模块从报头开始将数字信息按每个比特转换成电信号,然后由 PHY, 或者叫 MAU 的信号收发模块发送出去 在这里 将数字信息转换为电信号的速率就是网络的传输速率, 例如每秒将 10 Mbit 的数字信息转换为电信号发送出去, 则速率就是 10 Mbit/s 。 接下来, PHY MAU 模块会将信号转换为可在网线上传输的格式 , 并通过网线发送出去。 以太网规格中对不同的网线类型和速率以及其对应 的信号格式进行了规定 MAC 模块并不关心这些区别 ,而是将可转换为任意格式的通用信号发送给 PHY MAU 模块 然后 PHY MAU 模块再将其转换为可在网线上传输的格式。 大家可以认为 PHY(MAU)模块的功能就是对 MAC 模块产生的信号进行格式转换 当然 以太网还有很多不同的派生方式, 网线传输的信号格式也有各种变化 此外 实际在网线中传输的信号很复杂, 我们无法一一介绍 但是如果一点都不讲 大家可能对此难以形成一个概念, 所以就举一个例子 大家感受一下就好 。 图中 就是这样一个例子 我们这里就不详细解释了 总之 网线中实际传输的信号就是这个样子的。
 
 
                 
 
       PHY MAU 的职责并不是仅仅是将 MAC 模块传递过来的信号通过网线发送出去, 它还需要监控接收线路中有没有信号进来 在开始发送信号之前, 需要先确认没有其他信号进来 这时才能开始发送 如果在信号开始发送到结束发送的这段时间内一直没有其他信号进来, 发送操作就成功完成了。
 
 
半双工模式下的信号碰撞
 
 
      以太网不会确认发送的信号对方有没有收到 根据以太网的规格, 两台设备之间的网线不能超过 100 在这个距离内极少会发生错误 , 万一 发生错误 协议栈的 TCP 也会负责搞定 因此在发送信号时没有必要检查错误。 在发送信号的过程中,接收线路不应该有信号进来,但情况并不总是尽如人意,有很小的可能性出现多台设备同时进行发送操作的情况 如果有其他设备同时发送信号, 这些信号就会通过接收线路传进来
 
    在使用集线器的半双工模式中, 一旦发生这种情况 两组信号就会相互叠加,无法彼此区分出来,这就是所谓的信号碰撞 这种情况下 继续发送信号是没有意义的, 因此发送操作会终止 为了通知其他设备当前线路已发生碰撞,还会发送一段时间的阻塞信号,然后所有的发送操作会全部停止 。 等待一段时间之后, 网络中的设备会尝试重新发送信号 但如果所有设备的等待时间都相同, 那肯定还会发生碰撞 因此必须让等待的时间相互错开。 具体来说 等待时间是根据 MAC 地址生成一个随机数计算出来的。 当网络拥塞时, 发生碰撞的可能性就会提高 重试发送的时候可能又会和另外一台设备的发送操作冲突, 这时会将等待时间延长一倍 然后再次重试。 以此类推 每次发生碰撞就将等待时间延长一倍 最多重试 10次, 如果还是不行就报告通信错误
 
    在全双工模式中, 发送和接收可以同时进行 不会发生碰撞 因此 全双工模式中不需要像半双工模式这样考虑这么多复杂的问题, 即便接收线路中有信号进来, 也可以直接发送信号
 
 
 
2.全双工模式
 
 
      全双工模式是交换机特有的工作模式,它可以同时进行发送和接收操作,集线器不具备这样的特性 。使用集线器时, 如果多台计算机同时发送信号 信号就会在集线器内部混杂在一起, 进而无法使用 这种现象称为碰撞 是以太网的一个重要

特征

     不过,只要不用集线器就不会发生碰撞。而使用双绞线时发送和接收的信号线是各自独立的因此在双绞线中信号不会发生碰撞。网线连接的另一端即交换机端口和网卡的 PHY (MAU模块以及 MAC 模块其内部发送和接收电路也是各自独立的信号也不会发生碰撞。因此只要不用集线器就可以避免信号碰撞了。 如果不存在碰撞,也就不需要半双工模式中的碰撞处理机制了。然而,以太网规范中规定了在网络中有信号时要等该信号结束后再发送信号,因此发送和接收还是无法同时进行。 于是,人们对以太网规范进行了修订增加了一个无论网络中有没有信号 都可以发送信号的工作模式,同时规定在这一工作模式下停用碰撞检测 这种工作模式就是全双工模式在全双工模式下无需等待其 他信号结束就可以发送信号,因此它比半双工模式速度要快 由于双方可以同时发送数据,所以可同时传输的数据量也更大性能也就更高。

全双工模式的工作方式:在MUA的发送和接收电路之间有一个检测信号碰撞的模块

          

                   

      在以太网中当没有数据在传输时网络中会填充一种被称为连接脉冲的脉冲信号。在没有数据信号时就填充连接脉冲这使得网络中一直都 有一定的信号流过,从而能够检测对方是否在正常工作或者说网线有没 有正常连接。以太网设备的网线接口周围有一个绿色的 LED 指示灯它表示是否检测到正常的脉冲信号。如果绿灯亮说明 PHYMAU模块以及网线连接正常。 在双绞线以太网规范最初制定的时候,只规定了按一定间隔发送脉冲信号,这种信号只能用来确认网络是否正常后来人们又设计出了如下图这样的具有特定排列的脉冲信号,通过这种信号可以将自身的状态告知对方。自动协商功能就利用了这样的脉冲信号即通过这种信号将自己能够支持的工作模式和传输速率相互告知对方并从中选择一个最优的组合

         

       
发布了209 篇原创文章 · 获赞 85 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/ck784101777/article/details/103821767
今日推荐