gpt4 book ai didi

assembly - 汇编程序中的低级网络(兼容 x86)

转载 作者:行者123 更新时间:2023-12-02 20:14:37 33 4
gpt4 key购买 nike

我希望用汇编程序编写一个可启动程序,能够发送和接收网络数据包。我不想使用任何库,我想自己创建它(并在这样做的同时学习)。不幸的是,我无法找到有关最低级别的网卡通信(发送原始套接字)的任何信息。我相信有必要使用 OUTIN 指令,尽管我找不到有关分配给网卡的端口的任何信息(或如何找到它,如果它并不总是相同)。有人能指出我正确的方向吗? ;-)

最佳答案

这是一个需要解决的相当大的问题。即使达到“原始套接字”的程度也需要相当多的工作。

首先,使用现代 BIOS,您的网卡通常不会默认配置,因此您需要处理 PCI configuration将其配置为具有一些对处理器可见的端口。这将为您提供让 CPU 与网卡实际通信的基本能力。

其次,您必须找到一些有关它所使用的特定芯片组的文档,以便您知道如何读取和写入网络数据。对于一些较旧的卡来说,这非常容易,但大多数较新的卡都充当带有分散/聚集硬件的总线主控器。即使对它们进行编程以执行简单的传输也并非易事。但这完全取决于硬件。

第三,您需要开发 IP 堆栈的重要部分,以便能够使用原始套接字。在硬件级别,您基本上有两种功能:接收任何到达的数据包,并将数据包发送到指定的 MAC 地址 - 或其他硬件地址,如果您的卡不是(并且看起来/行为不像)以太网。

接下来的几层将是 ARP resolver (让您使用 IP 地址而不是 MAC 地址)和 DNS 客户端(这样您就可以使用正常的地址名称而不是点分四边形之类的名称。除此之外,您可能还想构建知道如何创建/理解的软件IP datagrams .

关于assembly - 汇编程序中的低级网络(兼容 x86),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3621932/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com