【问题标题】:Questions on how network cards in Windows work关于Windows中网卡如何工作的问题
【发布时间】:2012-06-20 02:35:30
【问题描述】:

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

我有两个假设。

1.

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

2.

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

我的假设是否正确?

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

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

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

【问题讨论】:

    标签: windows operating-system


    【解决方案1】:

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

    1) Layer 2 (Data Link) 硬件设备如何工作?

    2) 它与操作系统的network stack有什么关系

    ...和...

    3) 它与操作系统的内核级device driver有什么关系?

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

    '希望能有所帮助......至少有点......

    PS:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-29
      • 2016-09-30
      • 2021-12-05
      • 2020-08-08
      • 1970-01-01
      • 2022-01-22
      • 2013-08-07
      • 2011-10-29
      相关资源
      最近更新 更多