What are you talking about? App development occurs at Layer 5 and above, Transport happens at layer 4 and below. An App developer never needs to know what is going on at layer 3.
Nonsense. If I'm developing an app that wants to communicate between two end users, both of whom are behind NAT, of course I have to be aware of that. I either need to provide a server in the middle that relays packets between them, or I need to start being aware of STUN, wide-cone NAT, UPnP, giving users instructions for setting up port-forwarding, or any of the other additional work that's necessary to get around NAT.
Ok you sound like a developer. My advice is get a network guy to explain it to you because NAT is level 1 stuff for most network engineers.
That's funny. I was a developer, for a couple of years (credit-card processing on VAXen, DECNet, no IP at all!), a long time ago, now just a hobbyist / dabbler on that front.
I have, however, designed, built, and operated service provider networks up to a global scale in some form or another (ATM, MPLS, Internet, IPSec overlays) for around 20 years. In that time, I'd say the worst mistake we've collectively made as an industry is to put our heads in the sand, keep pushing NAT on end-users, and only build out IPv6 a decade or so late.
I understand NAT perfectly well, and I've worked with it in far more complex scenarios than the common end-user single address NAT overload / PAT. I know it's been going on for long enough that it seems to be how a lot of people expect the Internet to look. Neither of those means I have to like it.