Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TCP/IP堆栈中的链路层是否根据目的地'导出要接收数据包的NIC的MAC地址;谁的IP地址?_Tcp - Fatal编程技术网

TCP/IP堆栈中的链路层是否根据目的地'导出要接收数据包的NIC的MAC地址;谁的IP地址?

TCP/IP堆栈中的链路层是否根据目的地'导出要接收数据包的NIC的MAC地址;谁的IP地址?,tcp,Tcp,我试图了解TCP/IP堆栈中不同层的功能,我只是想澄清一下链路层如何派生NIC的MAC地址来接收数据包。这本身不是TCP/IP的功能。相反,在IPv4中使用ARP(地址解析协议)将目标IP地址转换为正确的MAC地址 这是由堆栈完成的,首先通过比较目标和配置的网络掩码来确定传递是否是本地的(在子网内)。如果是本地的,ARP将用于在链路层生成广播帧,试图将已知的IP地址解析为已知的MAC地址 另一方面,如果确定目的地IP地址不在本地子网上,则将使用ARP协议在链路层发送广播ARP,以根据配置的路由表

我试图了解TCP/IP堆栈中不同层的功能,我只是想澄清一下链路层如何派生NIC的MAC地址来接收数据包。

这本身不是TCP/IP的功能。相反,在IPv4中使用ARP(地址解析协议)将目标IP地址转换为正确的MAC地址

这是由堆栈完成的,首先通过比较目标和配置的网络掩码来确定传递是否是本地的(在子网内)。如果是本地的,ARP将用于在链路层生成广播帧,试图将已知的IP地址解析为已知的MAC地址

另一方面,如果确定目的地IP地址不在本地子网上,则将使用ARP协议在链路层发送广播ARP,以根据配置的路由表发现应使用的路由器的MAC地址


使用IPv6,ARP被消除,并被使用ICMP6上的邻居发现协议的多播(更具体地说,请求节点多播)所取代。

@user9156115如果这回答了您的问题,请接受答案。