以太网通信是串行还是并行的?

从数字电路底层硬件信号传输的严格定义来看,以太网其实是一种同步时序逻辑。虽然它通过网线传输的是串行信号,但其数据编码中隐含了时钟信息。发送端会将时钟信号通过曼彻斯特编码或4B/5B编码嵌入到数据流中,接收端则通过锁相环技术从信号中提取出这个时钟。有了这个共同的同步时钟,接收方才能准确地判断每一位数据何时到来并正确读取,这本质上是依靠同步时钟来协调发送和接收动作的。

需要注意的是,即使是应用程序层面的所谓同步接口,在内核底层依然广泛使用了缓冲区技术。之所以称之为同步,主要是因为用户态程序到内核态的这一层通信逻辑上使用了同步等待的方式。因此,简单地问以太网是同步还是异步是不准确的,答案完全取决于你关注的层级:是底层的信号同步、系统级的缓冲异步,还是应用层的阻塞选择。

进一步从应用程序开发所使用的Socket接口类型来分类,以太网通信又明确分为同步和异步两种模式,也就是常说的阻塞和非阻塞模式。同步接口在尝试发送或接收数据且资源不可用时,会直接阻塞程序直到操作完成;而异步接口则不会阻塞,它会立即返回告诉你socket暂时不可用,并提示你使用epoll等机制来等待后续事件。这主要取决于开发者在编程时选择的是哪种I/O模型。

如果我们跳出纯粹的硬件电路视角,从计算机操作系统与硬件交互的软件接口层面来看,整个数据交换过程又呈现出异步的特征。因为计算机CPU并不会直接、逐位地操作网卡上正在发送的每一个比特数据,而是通过内存中的缓存机制来移交数据。数据先被放入网卡的缓冲区,或者从网卡缓冲区读取,这种有缓冲区的结构设计,使得发送和接收操作在系统层面表现为异步通信机制。