请让我知道我的理解上的差距在哪里。有很多空白,所以请不要犹豫,填写或纠正它们。
据我所知,在接收数据包并触发 ARP、IP 或其他进程时,硬件级别会发生以下情况:
- 信号被发送到路由器并被 UART 或 DUART 检测到。
- DUART 向 CPU 发送中断,以便它可以将位流更改为可读字节。
- UART 从信号转换的字节(以 11 位的形式:1 个起始位、8 个数据位和 2 个停止位)然后发送到串行接口适配器驱动程序。
- 然后从 HD 触发串行接口适配器的设备驱动程序并将其带入 RAM 存储器。
- 设备驱动程序使串行接口“虚拟化”。串行接口适配器的这种虚拟化获取接收到的字节,并将它们放入“帧”格式中,以便像 ARP 这样的进程能够理解。例如,它可能会将它放在以太网框架中。
- 串行接口的虚拟化位于缓冲区(队列)中。当虚拟化位于队列的前面时,设备驱动程序会根据数据包的“协议类型”调用正确的进程(同样是 ARP、IP 等)。
- 然后 CPU 将该程序从 HD 调用到 RAM 中,并将该程序写入分配给该进程的“堆”,以便它可以理解数据包并对该数据包执行所需的操作。
我知道的很模糊的地方是串行接口适配器的设备驱动程序的作用和队列的作用。另外,我知道所有操作都是由 CPU 驱动的,我只是认为在每个步骤中重复它有点多余。
现在请告诉我在描述接收数据包时路由器硬件级别发生的情况时我的理解有什么问题或我遗漏的任何步骤。