所以我想知道,如果网络中存在隐藏单个设备IP的IP伪装,数据包如何知道其目的地,但其中一个线程向我解释了这一点:"基本上,客户端在网络地址翻译器(NAT(设备上注册其自己的本地地址和唯一端口;路由器";当发送请求时。因此,当服务器只回复公共ip地址时,它会使用保留端口来查看子网中发送信息的位置">
好吧,但这是怎么回事;请求";(我相信三向握手中的哪一个是SYN(知道他应该要求连接哪个设备吗?
示例:我想把一些数据发送到某个网络中的Computer1。该网络中还有3台计算机:Computer2、Computer3和Computer4。我与Computer1执行TCP连接的第一件事是3向握手(在此过程中,我将自己的本地地址和唯一端口放入NAT设备中,但Computer1仍然不知道我想连接他(
因此,从Computer1的角度来看:;某个设备在我的NAT路由器中发送了他的本地地址和唯一端口,因为他想连接我、Computer2、Computer3或Computer4(稍后可能会发送一些数据(但我怎么知道是我还是我的三个同事中的一个?在数据包标头中,只有我们路由器的IP地址">
我刚开始接触网络,看了几本教程,但仍然不明白。如果有人向我解释,我会很高兴,如果已经涵盖了,不要生我的气。
因此,从Computer1的角度来看:"某个设备在我的NAT路由器中发送了他的本地地址和唯一端口,因为他想连接我、Computer2、Computer3或Computer4(稍后可能会发送一些数据(。但是我怎么知道是我还是我三个同事中的一个呢?在数据包头中只有我们路由器的IP地址">
它不知道,也不在乎。它所需要做的就是能够向正确的始发机器发送响应。要做到这一点,它需要将数据包发送到一台知道并关心的机器,这就是NAT路由器。
NAT路由器是怎么知道的?因为它看到了创建请求的原始数据包的本地源地址。
服务器如何到达NAT路由器?它只是将响应包寻址到它接收到的请求的源地址,即NAT路由器的公共地址。
路由器使用转发表来确定数据包应该去哪里并被接收,从而完成这项任务。当数据包到达路由器时,它会查看目的地地址,以确定将数据包发送到哪里。基本上是一个精心策划的概念,所有路由器都可以计算,在发送和接收数据时,他们还可以保存日志,并在某些情况下与mac、设备、IP和DNS地址以及位置数据协调更新这些表。
就你的问题而言,你的3名同事通过同一路由器将数据包发送到目的地。每台计算机都有一个动态IP和分配给每台计算机的MAC地址。知道每个数据包来自路由器NAPT或IP伪装,它用这些数据更新翻译表。
这个问题在下文的不同背景下得到了回答。
来源:
-
https://superuser.com/questions/710132/how-does-a-packet-reach-its-destination/710148
-
https://superuser.com/questions/105838/how-does-router-know-where-to-forward-packet