路由器如何路由连接?


1

路由器如何跟踪连接?当您发送http请求时,它会转到路由器,然后通过互联网发送到另一个路由器等;但是它如何知道去服务器,是否将端口转发到负载均衡器?最后当数据包返回时,它知道怎么回到电脑,因为数据包被发送回路由器而不是电脑?是否可以从路由器外部建立到路由器控制的PC的连接。你可以将数据包导入不直接连接到互联网的电脑吗?


您可以将任何答案都链接到OSI模型。 。 。
surfasb

Answers:


3

路由器通过网关或接口连接网络,简单地说:

Do I know where this packet should go?
  yes - is it one of mine?
    yes - send to appropriate interface.
    no  - send on to next gateway
  no  - return a packet saying unreachable

您的家庭路由器将运行连接跟踪软件 - 它将保留网络上的计算机在互联网上进行通信的连接列表。 因此,它将知道返回响应的地址和端口。

TCP数据包有一个特殊字段,可以包含原始机器的地址。 路由器使用称为伪装的东西来插入其返回地址,目标机器也包含它。这可以节省连接跟踪器上的一些工作,但也可以显示远程服务器的内部IP地址。

另一方面,返回UDP数据包依赖于路由器的连接跟踪器模块来返回对原始机器的响应。直到几年前才解决这个难题。

新的传入连接在连接跟踪器中没有任何条目,因此除非给出该类型数据包的特定转发指令,否则路由器将不知道将其发送到何处,并且您将在所有路由器中找到一种能够例如,指定网络上的哪台计算机将接收端口80的新请求。

TCP是一个复杂而令人惊奇的状态驱动协议,数据包不必采用相同的路由,可以分解成更小的部分,无序到达,纠错请求重新发送单个数据包,数据流可以是重新组装,两端的应用程序都没有意识到任何困难,除非它们太大而不影响性能。通过它获得了许多博士学位!


1
你写“路由器通过网关或接口连接网络,简单地说:”< - 除了路由器和网关几乎是一样的东西。 RFC 1812讨论了路由器,但它取代了RFC 1716,后者讨论了网关,因此它基本上是相同的设备。有些人可能会以某种方式对网关进行区分,但这并不重要,而且模糊不清。
barlop

2

要了解路由,首先应该了解路由 OSI模型 你也应该了解 CIDR

这将是相当基本的:

当数据包离开标准家庭网络上的计算机时,计算机知道它是专用网络并且由于CIDR而理解最终目的地在网络外部,因此将数据包发送到默认网关。默认网关查看IP并将其发送到路由器链,直到它到达目标网络(基于数据包报头中的IP信息),然后该网关将其转发到网络上的正确IP(有时这是基于在数据包详细信息的端口上,有时只是IP,具体取决于远端服务器/网络)。当发回请求的信息时,您的路由器知道它所到达的计算机,因为选择了标记会话的端口并且它知道该会话属于哪个私有IP。还有更多内容,但这是一个相当高级别的解释,以获得路由的概念。我相信别人会纠正我或加上这个。

对于您的问题的答案来说,是的,有可能,您只需要知道端点处的公共IP以及需要建立连接的端口。路由器将负责知道将该端口转发到哪台计算机以访问专用网络上的服务器(基于NAT规则)。


那么当两个私人电脑使用同一个端口时它是如何工作的呢?这只是会话和套接字的非常简化的解释吗?
Will03uk

如果它是端口80上的传出连接,则会创建会话,并且路由器将跟踪哪个私有IP打开哪个会话并适当地转发响应。如果它是到路由器后面的端口上的服务器的传入连接,则路由器将基于NAT规则转发。
MaQleod

@Will03uk进程使用端口,一个是src端口,一个是dst端口,因此即使它们是相同的端口,它们仍然是不同的。在实践中,一个端口是>(1023?1024?),它是客户端一端,另一个端口是服务器端一,低于或高于。例如80或8080
barlop

2

以下是路由的基本概述。

基本上,要实现的第一件事是有各种级别的路由器和路由。

路由的第一位实际上是由您的PC及其路由表完成的。路由表的一部分包含一个0.0.0.0的目标,它是一个捕获所有它不知道如何专门路由自己的东西,因此它将该流量发送到默认网关。路由表跟踪它所连接的本地网络,对于它不知道的任何内容,它使用该默认网关。

接下来是家用路由器和电缆调制解调器。两者的性质相似,因为它们非常基本。他们真的只知道他们两边的网络。他们还使用非常简单的路由表,并且对于他们不知道的任何东西也有类似的捕获所有路由,因此他们可以传递流量。

一旦流量进入您的ISP以及更远的地方,您就会进入非常复杂的路由器,这些路由器具有许多允许多条路由的接口,并且具有非常复杂的路由表。这些路由器的成本可能高达500,000美元。他们大多使用BGP(边界网关协议)动态保持其路由表最新,因此他们可以找到最短的路由,如果沿着该路由的特定路由器发生故障,他们可以重新路由流量。他们定期与其他路由器通信,找出哪些路径是开放的,并根据它更新路由表。

http://en.wikipedia.org/wiki/Border_Gateway_Protocol#Basic_update_processing

至于流量如何回溯,当您发送数据包时,会有一个标题跟踪它来自何处以及它将去往何处。

我不确定你最后会问什么。


最后,我只是想知道你是否可以与没有直接连接到互联网的私人电脑建立TCP连接
Will03uk

@ Will03uk是的,你可以,例如您可以在LAN中的计算机上设置Web服务器 192.168.1.4 并拉上互联网电缆,你会看到它,你可以看到wireshark中的通信
barlop

2

我试图回答这个老问题,希望能帮助某人寻找这样的东西。另外,如果我犯了任何错误,请告诉我。

为了使信息从您的计算机流向Internet上的Web服务器,有许多不同的组件,设备和算法在起作用,但我们将专注于使这成为可能的网络算法。

我认为主要有两种互联网技术可以在您的计算机和Internet Web服务器之间实现信息流动方面发挥最大作用。路由协议和NAT。

我们将关注IP数据包,因为它是路由协议和NAT工作的数据单元。

  1. 当从您的浏览器发送到Internet服务器的IP数据包到达家庭路由器时,它会被检查并且其源IP从原始发送器的本地LAN IP更改为家庭路由器的公共IP的IP,然后路由到目标IP。这个翻译记录在 连接表 这是NAT的工作
  2. 如果目的地是路由器公共IP网络的一部分,则将其发送到该IP,否则将根据路由表对其进行评估以进行匹配。如果路由器找不到它,它会将数据包转发到自己的默认网关。此过程将继续,直到最终路由器找到匹配项。 这是路由协议发挥作用的地方
  3. 如果未找到路由,则会向源主机发送ICMP Destination Unreachable-Host Unreachable消息。
  4. 一旦找到最终主机,它就接受它解封装的IP数据包,处理其中包含的请求,然后发回响应。响应将在其目标IP中具有源路由器的IP。
  5. 响应将遵循请求之后的相同过程,直到它到达发起者。请注意,当数据包采用某条路线到达目的地时,它们不一定必须采用相同的路线。
  6. 一旦到达目标Internet IP,路由器就会将传入流量与其连接表进行匹配,执行反向转换,然后将数据包转发到相应的计算机。

这是IP数据包从浏览器流向目标Web服务器的方式。

Router Connection Tracking Flowchart

  • 有4个连接,因为我认为我打开的页面使用4个不同的请求来构建页面。
  • 启动连接的客户端可以使用任何可用的源端口。此端口将暂时保留使用,直到两台机器同意关闭连接。 IANA建议对这些所谓的“短暂端口”使用49152到65535的范围。 Web服务器通常在端口80(HTTP流量的默认端口)上运行,因此客户端将发送其请求以查看到该端口的网页。
  • 在家用路由器中,泳道是路由器连接表的快照。
  • 在SuperUser服务器中,泳道是与服务器建立的连接的快照。

连接表主要使用源IP,源端口,目标IP和目标端口的组合来确保唯一性。显然,确定唯一性的最重要因素是源端口,因此,如果不同的内部主机尝试使用现有源端口,则路由器会更改该端口并注意连接表中的更改

除了这个问题,这应该回答你的所有问题, 是否可以从路由器外部建立到路由器控制的PC的连接。你可以将数据包直接发送到没有直接连接到互联网的电脑吗?

如果您知道路由器上用于特定Internet IP的NAT端口,并且您可以欺骗IP数据包并将其发送到路由器,而路由器的NAT端口打开,那么理论上它应该是可能的但我相信大多数路由器使用更多参数来识别IP数据包的唯一性和真实性。

我使用以下参考资料来构建我的答案:


0

我不确定我是否正确理解这一点,但我会尽力猜测。你问“是否有可能与路由器控制的电脑建立连接?”我假设你指的是远程访问。你可以使用像vnc或远程桌面那样的东西。如果您正在谈论通过互联网连接的两台电脑,那么请查看VPN。如果你的意思是从另一个分配一个IP,那么这将是一个服务器/客户端连接,而在WAN上它必须是类似VPN的东西。

TCP数据包包含数据包内LAN目标的信息。


我会澄清我的问题,谢谢
Will03uk

0

你在这里谈论的不是真正的路由,而是由“防火​​墙”或路由器执行的网络地址转换,以及路由。路由器/防火墙保持源和目标地址的状态表(映射)以及通过它的会话端口。正常路由不执行此转换并且是无状态的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.