I understand how NAT works in case of communication between one, local host and a server with specific public IP address. The host is sending a request, it pushes the packet with destination IP address set to the value of servers IP address to the router . That LAN router "remember" that our host (identified by private IP address) is sending request to the server. So it is able to forward the response from a server to the proper host. (By the way, how does it distinguish responses from the server when multiple LAN hosts send requests at the same time?)
Now, lets say we have two hosts, based on two standard local networks on Internet, which are not related with eachother. Is it possible to these hosts to communicate with each other directly? (without any kind of servers between, providing the services to communicate?) In that situation, we dont need to send any kind of request between them.