Answers:
路由器通过网关或接口连接网络,简单地说:
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是一个复杂而令人惊奇的状态驱动协议,数据包不必采用相同的路由,可以分解成更小的部分,无序到达,纠错请求重新发送单个数据包,数据流可以是重新组装,两端的应用程序都没有意识到任何困难,除非它们太大而不影响性能。通过它获得了许多博士学位!
要了解路由,首先应该了解路由 OSI模型 你也应该了解 CIDR 。
这将是相当基本的:
当数据包离开标准家庭网络上的计算机时,计算机知道它是专用网络并且由于CIDR而理解最终目的地在网络外部,因此将数据包发送到默认网关。默认网关查看IP并将其发送到路由器链,直到它到达目标网络(基于数据包报头中的IP信息),然后该网关将其转发到网络上的正确IP(有时这是基于在数据包详细信息的端口上,有时只是IP,具体取决于远端服务器/网络)。当发回请求的信息时,您的路由器知道它所到达的计算机,因为选择了标记会话的端口并且它知道该会话属于哪个私有IP。还有更多内容,但这是一个相当高级别的解释,以获得路由的概念。我相信别人会纠正我或加上这个。
对于您的问题的答案来说,是的,有可能,您只需要知道端点处的公共IP以及需要建立连接的端口。路由器将负责知道将该端口转发到哪台计算机以访问专用网络上的服务器(基于NAT规则)。
以下是路由的基本概述。
基本上,要实现的第一件事是有各种级别的路由器和路由。
路由的第一位实际上是由您的PC及其路由表完成的。路由表的一部分包含一个0.0.0.0的目标,它是一个捕获所有它不知道如何专门路由自己的东西,因此它将该流量发送到默认网关。路由表跟踪它所连接的本地网络,对于它不知道的任何内容,它使用该默认网关。
接下来是家用路由器和电缆调制解调器。两者的性质相似,因为它们非常基本。他们真的只知道他们两边的网络。他们还使用非常简单的路由表,并且对于他们不知道的任何东西也有类似的捕获所有路由,因此他们可以传递流量。
一旦流量进入您的ISP以及更远的地方,您就会进入非常复杂的路由器,这些路由器具有许多允许多条路由的接口,并且具有非常复杂的路由表。这些路由器的成本可能高达500,000美元。他们大多使用BGP(边界网关协议)动态保持其路由表最新,因此他们可以找到最短的路由,如果沿着该路由的特定路由器发生故障,他们可以重新路由流量。他们定期与其他路由器通信,找出哪些路径是开放的,并根据它更新路由表。
http://en.wikipedia.org/wiki/Border_Gateway_Protocol#Basic_update_processing
至于流量如何回溯,当您发送数据包时,会有一个标题跟踪它来自何处以及它将去往何处。
我不确定你最后会问什么。
我试图回答这个老问题,希望能帮助某人寻找这样的东西。另外,如果我犯了任何错误,请告诉我。
为了使信息从您的计算机流向Internet上的Web服务器,有许多不同的组件,设备和算法在起作用,但我们将专注于使这成为可能的网络算法。
我认为主要有两种互联网技术可以在您的计算机和Internet Web服务器之间实现信息流动方面发挥最大作用。路由协议和NAT。
我们将关注IP数据包,因为它是路由协议和NAT工作的数据单元。
这是IP数据包从浏览器流向目标Web服务器的方式。
连接表主要使用源IP,源端口,目标IP和目标端口的组合来确保唯一性。显然,确定唯一性的最重要因素是源端口,因此,如果不同的内部主机尝试使用现有源端口,则路由器会更改该端口并注意连接表中的更改
除了这个问题,这应该回答你的所有问题, 是否可以从路由器外部建立到路由器控制的PC的连接。你可以将数据包直接发送到没有直接连接到互联网的电脑吗?
如果您知道路由器上用于特定Internet IP的NAT端口,并且您可以欺骗IP数据包并将其发送到路由器,而路由器的NAT端口打开,那么理论上它应该是可能的但我相信大多数路由器使用更多参数来识别IP数据包的唯一性和真实性。
我使用以下参考资料来构建我的答案: