我有一个关于 ARP 协议的问题。
在 ARP 请求中(通过 Wireshark 验证),它提供发送者 mac 和 ip 地址以及目标 mac 和 ip 地址,将目标 MAC 留空。在回复中,这个目标MAC被填充。我正在研究网络堆栈,目前正在实施 ARP。有人告诉我 ARP 是一个很好的“第一个”实施协议,所以我还没有其他功能。
Mac 地址(发送者 mac)内置于设备中,但(发送者)IP 地址由网络分配。我的理论是,我也许可以让目标 mac 成为我的 mac 地址来识别我自己的 IP 地址?但是,如果需要发送者 IP 才能发出 ARP 请求,那么我无法使用 ARP 解析我自己的 IP。
所以我有两个问题:
我也不确定计算机如何识别它所在的子网。例如,它如何知道路由器IP是什么? (通常为 192.168.1.1,但这仅适用于 C 类网络)。由于我是在虚拟化环境中进行操作系统开发,因此我还不需要将此程序化。
客户端执行 dhcp 请求 (bootp) 并询问 IP 地址、网络掩码和网关,或者由管理员通过配置进行设置。您可以选择要使用的地址,但如果您没有公共 IP 地址,则这些地址应位于专用范围内。如果大多数人使用网络提供商提供的路由器,则不必担心家庭网络设置。