sách gpt4 ai đã đi

Mạng cấp thấp trong assembler (tương thích x86)

In lại 作者:行者123 更新时间:2023-12-02 20:14:37 36 4
mua khóa gpt4 Nike

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

1 Câu trả lời

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

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

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

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

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

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

36 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com