NAT
From Hackepedia
Network Address Translation (NAT) is used to translate the source or destination of an IP packet as a policy at a router or firewall. NAT implementations have to keep a state in order to identify where to translate return traffic to. Imagine a network that uses private networks (RFC 1918) and needs to speak to the public Internet. The gateway has a public IP address and needs to change source addresses from the private network to it, and return traffic must be translated back.
NAT is a workaround implemented due to IP version 4 address space shortages. IP version 6 should hopefully bury this hack (it hasn't see natally).