From what I have understood from multiple sources (web and other books) about the concept of NAPT (also called NAT overload or IP masquerading in Linux environment), if there is a scenario like the following:
when a packet arrives at the NAT box from the ISP, it is the DESTINATION PORT(and not the SOURCE PORT of the incoming packet) in the TCP header which is extracted and used as an index into the NAT box's mapping table to locate the proper entry in that table.
But in Tanenbaum's book (Computer Networks 5th edition) on page 454, chapter 5, it's said that it's the SOURCE PORT the one which is extracted from the TCP header of the incoming packet, but this make no sense to me since the SOURCE PORT of the incoming packet was the DESTINATION PORT of the outgoing packet and therefore there is no entry in the NAT table which matches it.
These two schemes are some of the sources found on the web which helped me in the study of the NAPT:
From what I seem to understand following the above scheme when the packet comes back it will have in the source port filed 110 and in the destination port field 14500. Then the value 14500 of the destination is extracted from the TCP header and is used to locate the first entry in the NAT table.