两台电脑如何同步读取数据?

网络工程 第一层
2021-07-26 00:49:58

最近我试图了解数据是如何传输的。据我所知,数字数据可以通过电线以电压形式从一台计算机传输到另一台计算机。

但我不明白发射器计算机和接收器计算机如何对齐。从发射机电脑来说,它以频率A传输电压,接收机电脑怎么知道这个频率?即使它知道,如何确保频率始终对齐?似乎小的偏移会在累积时导致错误的信号解释。

请帮忙。

1个回答

一个好问题,但不容易回答。

通常,正如您所指出的,接收器需要知道发射器的时钟并与之同步。传输时钟有两种基本方法:

  • 显式,在单独的线路/通道上(常见于并行传输)
  • 嵌入式 - 时钟信号与用户数据结合并由接收器恢复(常见于串行传输,尤其是网络协议)

嵌入式时钟可以非常简单,例如使用曼彻斯特码的10 Mbit/s 以太网,该基本上用用户数据调制时钟:一位1传输为低-高,一位传输0高-低这确保了每个位内的电压/极性变化,并使时钟恢复变得容易。然而,就带宽而言,这是非常浪费的——传输比特率翻倍,开销为 50%。

更高效的线路代码是 8b/10b 与千兆以太网使用的 8 个用户比特(20% 开销)的两个比特开销,以及 64b/66b 与 10G 以太网和更快的使用仅 3% 的开销。

请注意,慢速串行链路也可以使用“商定”的比特率,该比特率在每一侧都是已知的。正如@Almeidajoao 所解释的,这些链接在某些无关位上重新同步。

时钟提供位同步您还需要字同步——找出一个字(通常是一个字节/八位字节)的开始位置。对于以太网,这是由起始帧定界符SFD 实现的。SFD 前面前导码只是交替位 - 10101010 10101010 10101010 10101010 10101010 10101010 10101010,确保时钟同步,然后是 SFD 10101011,它表示以太网帧的第一个八位字节的开始。

当然,还有更多的方法可以填满一本书。