在mina中,针对NIO中的UDP通信session,其通过remoteAddress/session(key/value)中缓存至recycler中。
如果从acceptor收到一条udp报文,会先依据remoteAddress从recycler获取缓存的session,如果找到,则会session.fireMessageReceiver.
上述逻辑有个难以察觉的BUG!!!其没有考虑到full-cone NAT情况。在某些情况下,客户端会以相同的remoteAddress IP地址与server端不同的端口通信,这样无论在过滤连还是IoHandler中,都只会看到相同的session,其里面的localAddress只是创建时候的port,不一定是当前接收到此报文的真实port。