我看到应用程序通过UDP将数据包发送到某个端口上的IP并接收响应.响应到哪个端口?(顺便说一下,如果没有端口转发到我的电脑,路由器怎么知道响应是针对我的电脑的呢?)
问候,Neo_b
响应分配的端口取决于应用程序.UDP是完全无状态的,因此在触发数据包之后,应用程序可以预期响应的唯一方法是它知道另一端将发送一个.根据UDP应用程序的不同,为了简单起见,我希望响应会出现在同一个端口上 - 对于TCP这样的协议来说并非如此,因为TCP具有故意随机(和高)的源端口.
为了回答你的第二个问题,许多路由器,甚至廉价的家用路由器,都进行状态包检测(SPI).这样的事情可能会发生,但如果我要离开,我就会被纠正:
[设置与客户端,路由器,Internet,服务器的阶段.]
客户端发出UDP数据包.
路由器将UDP数据包传递到Internet.
路由器记住客户端向服务器发送了UDP数据包,并在其内存中建立了映射.
服务器可能在同一端口上发送UDP数据包.
路由器接收数据包,并检查映射以找到最近与服务器通信的客户端.
Router将数据包传递给客户端.
我想,这是如何实现的,特定于路由器,但这是我对其工作原理的理解.