第2层(以太网层)使用ARP协议识别MAC地址。它向整个网络发送一个问题:“哪个MAC地址具有IP x?”。这就是它识别目标MAC地址的方式。
但是第3层(IP层)如何知道IP地址?它不从传输层(第4层)传递给它。只传递端口号。
我希望我具体。提前谢谢。
答案 0 :(得分:2)
有两个与数据包关联的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缓存。
我希望这会有所帮助。
答案 1 :(得分:2)
但是第3层(IP层)如何知道IP地址?它不从传输层(第4层)传递给它。只传递端口号。
这不正确。 TCP或UDP都有明确的bind()
操作,确实传递了IP地址。 TCP还具有显式connect()
操作,该操作还传递IP地址,以及隐式bind()
操作,其中源IP地址是从单播IP路由表计算的。
答案 2 :(得分:1)
每个图层都为上面的图层提供了一个界面。通过该接口,layer4发送目标IP地址layer3。 layer5(应用层)将它想要与之通话的目标IP地址发送到layer4,而layer4又将其发送到layer3。 Layer3将其包含在IP数据包中,并将此数据包传递给layer2(以及目的地的MAC地址等其他内容。)
就像在调用函数时给出参数一样。假设layer3提供的接口是send_packet()
,layer4调用它,可能就像send_packet(srcIP, destIP)