我试图弄清楚网卡在 Windows 中是如何工作的,以及数据是如何被中继的。
我有两个假设。
1.
- 数据由网卡接收。
- 然后卡将数据放入内部缓冲区,可能是双缓冲区或环形缓冲区。
- 卡累积数据直到达到一定数量,然后发送中断。
- Windows 将数据从卡复制到 RAM 并通知适当的处理程序。
2.
- 接收数据。
- 该卡使用 DMA 将数据放入 RAM。(DMA保证数据不会丢失,还是卡还需要自己的buffer?)
- 卡在将足够的数据放入 RAM 时触发中断。
- Windows 接收中断并将数据复制或公开给适当的处理程序。
我的任何一个假设都是正确的吗?
如果缓冲区已满,卡或 Windows 是否有任何消息?
在我的以太网控制器的 Windows 系统属性中,我可以看到名为“接收缓冲区”和“传输缓冲区”的属性,两者都设置为 256。 这是什么意思?
有没有关于这个主题的好文献?(我有 Tanenbaum 的现代操作系统,但它与 Windows 没有特别的关系。)