电子说
大家都知道计算机里面存储的是一堆01组成的二进制代码,那么计算机是怎样把这些数字信号传输出去的呢?
计算机只有一根网线是和外界相连的,而和网线连接的地方叫做网卡,而网卡的作用就是把计算机的数字信号转换成光电信号发送出去。要想知道计算机是如何传输数据的首先要了解的是网卡的工作原理。
计算机生成的数据包只是存放在内存中的一串数字信息,没有办法直接发送给对方。因此,我们要将数字信息转换为电或者光信号,才能在网线或者光纤上传输。
负责这个转换工作的设备叫网卡,但是网卡是无法单独工作的,要控制网卡还需要网卡驱动程序,想必大家新买的电脑第一件事肯定是装系统,然后是装驱动,这里的驱动就包含了网卡,显卡,键盘,鼠标的驱动等。如果没有网卡驱动,网卡是工作不了的,也就是上不了网了,同样没有显卡启动,你的电脑也就显示不了东西。
不同厂商的网卡在结构上有所不同,因此网卡的驱动程序也是由各大网卡厂商开发的专门的应用程序。
网卡的内部结构如下图:
网卡并不是通电后就开始工作的,而是和其他硬件一样需要初始化,计算机启动操作系统后,网卡驱动程序会对硬件进行初始化,然后网卡才能进入工作状态。
网卡的内部存储着全世界唯一的地址叫做MAC地址,这是在生产网卡的时候写入的,这个地址不能被修改,因为它是写在ROM当中的,ROM是只读存储器,但是可以在Windows系统里面被模拟修改成其他MAC地址。
网卡中的保存的MAC地址会由网卡驱动程序读取并分配给MAC模块,网卡驱动从IP模块获取数据包后,会将其复制到网卡内的缓冲区中,然后MAC模块会将数据包从缓冲区取出,并在开头加上报头和起始帧分界符,在末尾加上用于检测错误的帧校验系列如下图:
报头是一串像10101010…这样 1 和 0 交替出现的比特序列,长度为 56 比特,它的作用是确定包的读取时机。
当这些 1010 的比特序列被转换成电信号后,会形成如下图这样的波形。接收方在收到信号时,遇到这样的波形就可以判断读取数据的时机。
用电信号来表达数字信息时,我们需要让 0 和 1 两种比特分别对应特定的电压和电流,例如下图这样的电信号就可以表达数字信息。
通过电信号来读取数据的过程就是将这种对应关系颠倒过来。也就是说,通过测量信号中的电压和电流变化,还原出 0 和 1 两种比特的值。
加上一系列报头等数据之后,我们就可以将数据包通过网线发送出去了,发送信号的操作分为2种,一种是使用集线器的半双工模式,另一种是使用交换机的全双工模式。
什么是半双工?什么是全双工?半双工就是同一时间只能一方发送一方接收。而全双工,收发双方可以同时发送数据。
然后MAC 模块从报头开始将数字信息按每个比特转换成电信号,由 PHY, 或者叫 MAU 的信号收发模块发送出去。在这里,将数字信息转换为电信的速率就是网络的传输速率,例如每秒将 10 Mbit 的数字信息转换为电信号发送出去,则速率就是 10 Mbit/s。
接下来,PHY(MAU)模块会将信号转换为可在网线上传输的格式, 并通过网线发送出去。
以太网规格中对不同的网线类型和速率以及其对应的信号格式进行了规定,但 MAC 模块并不关心这些区别,而是将可转换为任意格式的通用信号发送给 PHY(MAU)模块,然后 PHY(MAU)模块再将其转换为可在网线上传输的格式。
网卡将包转换为电信号并发送出去的过程到这里就结束了,有兴趣深入了解的同学请关注我。
原文标题:计算机是怎样把数据通过网线传输出去的?
文章出处:【微信公众号:一口Linux】欢迎添加关注!文章转载请注明出处。
审核编辑:汤梓红
全部0条评论
快来发表一下你的评论吧 !