2
I understand that STUN does not work with "symmetric" NATs. They assign (i.e. replace the address on the network layer and store the information in a forwarding table) a different port for every connection/server. So once a computer behind a NAT knows the public IP/port it used for the STUN server, it will be useless for a communication with another server because then the NAT will assign a new port.
The book on WebRTC which I am reading right now says there are also other cases when STUN does not work and a TURN server (relay server with a publicly known, static IP address) is needed.
Which are those cases?
EDIT: I can only think of the case when a router reassigns a port after some time, in which case a STUN server will have to be contacted again and for a small time in between it will be not known why no packets come back from the other server, causing delay in real time communication