1

第 2 层(以太网层)使用 ARP 协议识别 MAC 地址。它向整个网络发送一个问题,询问:“哪个 MAC 地址有 IP x?”。这就是它识别目标MAC地址的方式。

但是第 3 层(IP 层)是如何知道 IP 地址的呢?它不会从传输层(第 4 层)传递给它。仅传递端口号。

我希望我是具体的。提前致谢。

4

3 回答 3

3

有两个与数据包关联的 IP 地址,发送(也称为源)IP 和目标 IP。

发送 IP - 发送 IP 是微不足道的,它是用于传输数据包的网络接口的配置参数。它在现代网络中通过 DHCP 静态配置或更典型地配置。

目标 IP - 目标 IP 可能会稍微复杂一些,具体取决于目标计算机是本地计算机还是远程计算机。在这种情况下,远程意味着目标计算机与源计算机不在同一子网中。

对于远程目标,DNS 服务器用于名称<->IP 解析。DNS 允许人类使用我们的力量,例如 www.espn.com 的名称,而计算机可以使用他们的力量,IP 地址的位表示,例如 10.5.0.1。DNS 解析可以通过多种不同的方式进行配置,但基本上可以归结为检查本地缓存以查看是否存在先前的解析,如果不存在则查询一个或多个 DNS 服务器来解析请求。

如果目标机器是本地的,在同一个子网上,那么 ARP/RARP 用于 MAC<->IP 转换。在创建新的 ARP 请求(并因此使用网络带宽)之前,再次检查缓存,在这种情况下是 ARP 缓存。

我希望这有帮助。

于 2012-01-02T16:27:55.097 回答
2

但是第 3 层(IP 层)是如何知道 IP 地址的呢?它不会从传输层(第 4 层)传递给它。仅传递端口号。

这是不正确的。TCP 或 UDP 都有一个明确的bind()操作,它确实传递了一个 IP 地址。TCP 也有一个显式connect()操作,它也传递一个 IP 地址,以及一个隐式bind()操作,其中源 IP 地址是从单播 IP 路由表中计算出来的。

于 2014-10-20T09:17:35.840 回答
2

每一层都提供到上一层的接口。第 4 层正是通过这个接口发送第 3 层,即目标 IP 地址。第 5 层(应用层)将要与之通信的目标 IP 地址发送到第 4 层,第 4 层又将其发送到第 3 层。第 3 层将其包含在 IP 数据包中,并将此数据包传递给第 2 层(连同其他内容,如目的地的 MAC 地址等)

这就像在调用函数时提供参数一样。假设layer3提供的接口是send_packet(),layer4调用它,可能是,likesend_packet(srcIP, destIP)

于 2014-10-20T08:42:43.873 回答