RFC 3489 has been split into three different RFCs:
RFC 5389 is the basic STUN protocol. The basic protocol for the STUN binding request and binding response is basically the same as RFC 3489. The protocol header is updated with a magic cookie that takes up some transaction identifier field. Some STUN attributes are overridden. Several new ones were added (in particular, XOR_MAPPED_ADDRESS). Some changes to how STUN auth is executed. NAT behavior and discussion of classification has moved to RFC 5780.
RFC 5780 - "Study of Nat Behavior Using STUN." The main change in NAT type discovery was to distinguish between NAT port mapping behavior separately from NAT filtering behavior. While RFC 3489 will try to classify NAT into one of several encoders ("cone", "restricted port", "symmetric"), which was too general to describe NAT.
RFC 5769 - Just describe how the hexadecimal dump of several types of STUN messages will look like.
Out of curiosity, I think itβs useful to know if your application works for NAT. But how will knowing NAT behavior affect your code path?
Shameless plugin - use my STUN server code hosted on GitHub.
source share