TCP/IP: 在广域网(外网)上传输数据时会用到ARP协议吗?

发布于 2022-09-03 11:23:26 字数 694 浏览 12 评论 0

我的理解:在局域网(内网),同一网段的两台机器,比如A机器192.168.0.11给B机器192.168.0.22发数据的话是需要知道B的网卡地址的,这时候要用到ARP协议了。

首先我以上的理解应该没错吧?

问题1:那如果在外网上,两个公网IP(A和B)互发数据,这个时候ARP还需要吗?ARP做广播的话明显不可能,范围太广了,而且广播应该只是在局域网做的。

问题2:如果是一个A机器(外网ip)要给一个B机器(内网ip中的某一台机器)发送数据的话呢,需要ARP协议吗?换句话说,需要知道B的MAC地址吗?

问题3:一个路由管辖着一个网段(内网),对外的话这个路由其本身是有一个公网ip的,外网要向内网中的机器发数据,它只知道路由的公网ip,并不知道内网中电脑的ip,那如果上述两个问题要用到ARP协议的话,那么要得知一个内网ip的机器的MAC地址,这个时候是不是就要用到路由器的NAT地址转换功能了?

问题4:A向B发送以太网数据帧(ARP请求)的时候,以太网数据帧(含ip数据报)(ps:这两个以太网数据帧是不同的)是处于待发状态(还在A中),还是说已经到达B的网段的路由器了?B机器的ARP应答是发给A机器还是发给路由器?

tcp协议新手,之前有查过许多资料,但还是很难理清思路,所以问题可能有点杂,请多多包涵

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

任谁 2022-09-10 11:23:26

先明确两个事情:

  • MAC地址是在链路层上使用的地址,也就是以太网数据帧上

  • IP地址是在网络层上使用的地址,也就是TCP/IP帧。TCP/IP帧包装在以太网上面,所以当TCP/IP帧发送出去的时候需要由链路层再去确认MAC地址。

一个TCP包需要发送出去需要把它包装在以太网数据帧上面,也就意味着需要指明MAC地址,那么在还不知道目标主机MAC的情况下源主机就需要发送ARP请求来确定目的主机的MAC地址,在这段时间内以太网数据帧是没法发出去的(数据帧上的MAC都没设置怎么发?),也即等待(回答你的问题4).

外网不能直接和内网的IP通信,如果需要通信需要使用到NAT,NAT用于映射内外网的IP、端口关系,而IP和端口都是在网络层上的内容,只讨论这个的话暂时没有和MAC地址有直接的关系,需要将网络层上的数据通过以太网数据帧发送出去的时候才有MAC和ARP的事情。(问题2、3)

广域网上的主机并不是全部并联起来的,他们被无数的路由器和交换机划分成不同的子网,他们之间的数据(大部分,除非刚好就在同一个子网内)需根据路由策略经过不同的路由一级一级进行进行转发之后才能送到目标主机,而这一个个的子网你也可以简单的把它理解成局域网,ARP的确会在这个“局域网”内广播,但并不像你想象的整个网络上进行广播。
无论是公网还是局域网,链路层上的通信都需要MAC地址,也就意味着也可能需要ARP来确认MAC地址。只是对于主干网而言,为了提高安全性和效率,一般会做MAC和IP的静态绑定,减少ARP的次数。

网络的最精明之处就是路由,通过复用相同的模式将无数的小局域网变成大局域网,再将无数的大局域网联成庞大的广域网,而这些网络间的通信则使用路由策略来控制。

痞味浪人 2022-09-10 11:23:26
  1. ARP 是局域网内的协议 要是公网广播的话 那就广播风暴了

  2. 公网之间走路由 ip 层协议,局域网之间走交换机(如果网络不复杂的话),需要ARP知道MAC地址

  3. 看内网设计,内网的机器也可以获得独立的外网IP。如果没有独立外网IP的话,就需要NAT了

  4. ARP请求是广播协议,但是应答是直接返回到请求主机的。

青萝楚歌 2022-09-10 11:23:26

1.同网段基于二层通信;跨网段基于三层。
2.只需要知道同样目标地址的下一跳即可。
3.默认情况,外网的数据并不能直接发送至内网的非边界设备上。
4.ARP作用范围为同一个广播域内,会发送到广播地址上。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文