勵志

勵志人生知識庫

stun原理

STUN(Session Traversal Utilities for NAT)協定是一種網路協定,用於實現NAT(網路地址轉換)環境下的端點發現和NAT類型識別。STUN協定允許位於NAT之後的設備找到其公網地址,並確定它位於哪種類型的NAT之後,以及NAT為本地連線埠綁定的Internet端連線埠,這些信息被用來在兩個處於NAT後的主機之間建立UDP通信

STUN協定基於客戶端-伺服器模型,客戶端(位於NAT後的設備)向伺服器傳送請求,伺服器則返迴響應。在STUN請求和回響中,包含了客戶端的IP位址連線埠號,以及NAT為該請求分配的連線埠號。伺服器接收到的源地址是通過NAT創建的映射地址,STUN伺服器將這個映射的源IP位址和連線埠複製到一個STUN綁定回響中,並傳送回給客戶端。

STUN協定最初在RFC3489中定義,後續RFC5389對其進行了擴展,支持TCP穿越。STUN報文格式包括一個20位元組的頭部,後面跟著若乾屬性。RFC3489和RFC5389定義的報文格式有所差別,主要體現在STUN Header的大小和內容上。

STUN協定的工作流程包括使用STUN獲取NAT映射後的地址,以及交換映射後的公網地址進行連通性檢測。STUN協定不僅支持UDP通信,還支持TCP通信,這使得它在穿越不同類型的NAT時更加靈活和高效。