0

我试图弄清楚网卡在 Windows 中是如何工作的,以及数据是如何被中继的。

我有两个假设。

1.

  1. 数据由网卡接收。
  2. 然后卡将数据放入内部缓冲区,可能是双缓冲区或环形缓冲区。
  3. 卡累积数据直到达到一定数量,然后发送中断。
  4. Windows 将数据从卡复制到 RAM 并通知适当的处理程序。

2.

  1. 接收数据。
  2. 该卡使用 DMA 将数据放入 RAM。(DMA保证数据不会丢失,还是卡还需要自己的buffer?
  3. 卡在将足够的数据放入 RAM 时触发中断。
  4. Windows 接收中断并将数据复制或公开给适当的处理程序。

我的任何一个假设都是正确的吗?

如果缓冲区已满,卡或 Windows 是否有任何消息?

在我的以太网控制器的 Windows 系统属性中,我可以看到名为“接收缓冲区”和“传输缓冲区”的属性,两者都设置为 256。 这是什么意思?

有没有关于这个主题的好文献?(我有 Tanenbaum 的现代操作系统,但它与 Windows 没有特别的关系。)

4

1 回答 1

1

您的问题包含(至少!)三个非常非常广泛的主题:

1)第 2 层(数据链路)硬件设备如何工作?

2)它与操作系统的网络堆栈有什么关系

... 和 ...

3)它与操作系统的内核级设备驱动程序有什么关系?

下一个链接实际上与您的原始问题成 180 度(API 级别相对较高,您的问题与最低软件级别有关),但是查看 .Net API 以了解“事情如何工作”的观点并没有什么坏处:

'希望这会有所帮助......至少有一点......

PS:

Linux 是关于实现网络堆栈的大量信息:所有内核源代码和所有设备驱动程序都是完全可用的,并且有很好的文档记录。

于 2012-06-19T18:29:58.760 回答