I made a server / client application in C #.
My question is the following: let them say that the client is behind NAT (like a router) and is trying to connect to the server. From the point of view of the server, the server knows only the external IP address of the client. How do you determine exactly which computer sends these packets for NAT? I understand that port forwarding from the client-side router is a common way to solve these problems, but if you look at applications such as Skype, port forwarding is not required to establish a proper connection between the server and, like many other clients, for NAT. This question can be set and vice versa (IE: client for the server behind NAT).
I am new to socket programming, so I would like to hear any recommendations or materials that I can read in order to fully understand this material.
source share