A common way to realise a Load balancing is happening based on NAPT (Network Address Port Translation).
Client 1 Client 2 Client 3 SRC: 10.11.12.13:111 SRC: 10.11.12.13:222 SRC: 15.16.17.18:111 DST: 20.21.22.23:443 DST: 20.21.22.23:80 DST: 20.21.22.23:443 | | | |----------| | |----------| WAN ----------------------------------------------------------------------------- ↓ ↓ ↓ LAN |--------------------------------| | LB Session Table | WAN to LAN: |--------------------------------| Modifies Dest.-IP | Public Addr | Private Addr | (Public --> Private) Public IPv4 from ISP: |--------------------------------| 20.21.22.23 | 10.11.12.13:111 | 10.0.0.1:443 | LAN to WAN: | 10.11.12.13:222 | 10.0.0.2:80 | Modifies Source-IP | 15.16.17.18:111 | 10.0.0.3:443 | (Private --> Public) |--------------------------------| | | | |----------| | |----------| ↓ ↓ ↓ Server 1 Server 2 Server 3 SRC: 10.11.12.13:111 SRC: 10.11.12.13:222 SRC: 15.16.17.18:111 DST: 10.0.0.1:443 DST: 10.0.0.2:80 DST: 10.0.0.3:443
PS: Another possibility is using DNS, which circles on a list of server IP’s on each request.