【问题标题】:How do packets know how to reach a destination?数据包如何知道如何到达目的地?
【发布时间】:2021-08-04 02:32:41
【问题描述】:

所以我想知道如果存在隐藏网络中单个设备 IP 的 IP 伪装,数据包如何知道其目的地,但其中一个线程向我解释了它: “基本上客户端在发送请求时注册它自己的本地地址和网络地址转换器上的唯一端口 (NAT)设备/“路由器”。所以当服务器回复时只有公共 IP 地址,它使用保留端口查看子网中的哪个位置发送信息。”

好的,但是这个“请求”(我相信是 3 次握手中的 SYN)如何知道他应该请求连接哪个设备?

示例: 我想在某个网络中向 Computer1 发送一些数据。该网络中还有 3 台计算机:Computer2、Computer3 和 Computer4。 我与 Computer1 执行 TCP 连接的第一件事是 3 次握手(在此期间我将自己的本地地址和唯一端口放入 NAT 设备中, Computer1 仍然不知道我想联系他

所以从 Computer1 的角度来看:“某些设备在我的 NAT 路由器中发送了他的本地地址和唯一端口,因为他想与我、Computer2、Computer3 或 Computer4 连接(并且可能稍后发送一些数据)。但是我怎么知道是我还是我的 3 位同事之一呢?在数据包头中只有我们路由器的 IP 地址。”

我是网络新手,看了几个教程,但还是不明白。如果有人向我解释,我会很高兴,如果它已经被覆盖,请不要对我生气。

【问题讨论】:

    标签: tcp routes packet nat handshake


    【解决方案1】:

    所以从 Computer1 的角度来看:“某个设备在我的 NAT 路由器中发送了他的本地地址和唯一端口,因为他想与我、Computer2、Computer3 或 Computer4 连接(并且可能稍后发送一些数据)。但是怎么做我知道是我还是我的 3 个同事之一?在数据包头中只有我们路由器的 IP 地址。”

    它不知道也不在乎。它需要做的就是能够向正确的原始机器发送响应。为此,它需要将数据包发送到知道并关心的机器,这就是 NAT 路由器。

    NAT 路由器是如何知道的?因为它看到了创建请求的原始数据包的本地源地址。

    服务器如何到达 NAT 路由器?它只是将响应数据包寻址到它收到的请求的源地址,这将是该 NAT 路由器的公共地址。

    【讨论】:

    • 感谢您的回复,我知道响应设备不必知道如何发送响应,NAT 会关心,但是您能解释一件事:如果没有 Computer1 的内部 IP 地址在数据包的标题中,发送到路由器的请求应该发送到所有 4 台计算机(因为数据包的标题中只有路由器的 IP 地址)并且所有 4 台计算机都应该发送响应,而不仅仅是 Computer1 对吗?它应该前往哪个设备的信息在哪里?
    • @maciej_skiba 响应只需要到达 NAT 路由器。那四台计算机永远看不到它,因为它们只连接到 NAT 路由器并相互连接。 NAT 路由器将其自己的 IP 地址视为该响应的目标 IP 地址,然后查找发送原始查询的计算机。然后它形成一个新的 IP 数据包,以原始源机器的本地 IP 地址作为目标,在本地网络上发送。 NAT 路由器会保存一张它们正在处理的“连接”表。
    【解决方案2】:

    路由器使用转发表来确定数据包的去向和接收位置,从而完成此任务。当数据包到达路由器时,它将查看目标地址以确定将数据包发送到哪里。基本上是一个所有路由器都可以计算的编排概念,在发送和接收数据时,它们还会保存日志并更新这些表,以配合 mac、设备、IP 和 DNS 地址以及在某些情况下的位置数据。

    就您的问题而言,您的 3 位同事通过同一路由器将数据包发送到目的地。每台计算机都有一个动态 IP 和分配给每台计算机的 MAC 地址。知道每个数据包来自路由器的 NAPT 或 IP 伪装,它使用此数据更新转换表。

    这个问题已经在下面的不同背景下得到了回答。

    来源:

    【讨论】:

    • 感谢您的回复,我仔细阅读了下面的链接。从我的计算机(通过我的 ISP)到服务器的整个路由过程对我来说很清楚,但当它不是具有指定 IP 的服务器而是网络中的计算机时,我会迷路:“路由器使用转发表来确定在哪里完成这项任务一个数据包应该去并被接收。当一个数据包到达路由器时,它将查看目标地址以确定将数据包发送到哪里“ - 但是数据包头中没有关于目标设备地址的信息。转发表如何知道数据包发往哪个设备?
    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 2019-12-13
    • 1970-01-01
    • 2018-07-16
    • 2020-04-23
    • 2012-08-09
    • 2013-04-28
    • 2013-11-14
    相关资源
    最近更新 更多