Кіріспе

Желілік протокол және байланысты функциялар

STUN (Session Traversal Utilities for NAT; бастапқыда Желілік адрес аударғыштар арқылы пайдаланушы деректер протоколының (UDP) қарапайым өтуі) – нақты уақыт дауыстық, бейне, хабарлама және басқа да интерактивті байланыс қолданбаларында желілік адрес аударғыш (NAT) шлюздерін өтү үшін стандартталған әдістер жиынтығы, соның ішінде желілік протокол. STUN – бұл басқа протоколдар, мысалы, Интерактивті байланыс орнату (ICE), Сессияны бастау протоколы (SIP) және WebRTC қолданатын құрал. Ол хосттарға желілік адрес аударғышының бар-жоғын анықтауға және NAT-тың қашықтағы хосттарға арналған қолданбаның пайдаланушы деректер протоколы (UDP) ағыны үшін бөлген, әдетте ашық, Интернет протоколы (IP) адресі мен порт нөмірін табуға мүмкіндік береді. Протоколға NAT-тың қарама-қарсы (ашық) жағында орналасқан үшінші тарап желілік серверінің (STUN серверінің) көмегі қажет, әдетте ол – жалпыға ортақ Интернет. STUN алғаш рет RFC 3489-да жарияланды; атауы RFC 5389 ретінде жарияланған әдістердің жаңартылған жиынтығының сипаттамасында өзгертілді, бірақ акроним сақталды.

Тарих

STUN алғаш рет RFC 3489 құжатында жарияланды. Бастапқы спецификация NAT мінез-құлқын, адрес және порттарды байланыстыру ерекшеліктеріне сәйкес сипаттауға арналған алгоритмді ұсынды. Бұл алгоритм жеткілікті сенімді емес және тек қолданыстағы NAT құрылғыларының бір бөлігіне ғана қолданылады. Алгоритм – бұл қолданбамен орындалатын бірнеше сынақтардан тұрады. Егер диаграммадағы жол қызыл түсті қораппен аяқталса, UDP байланысы мүмкін емес, ал сары немесе жасыл түсті қораппен аяқталса, байланыс мүмкін. RFC 3489 әдістері өндірістік желілерде кездесетін түрлі NAT жүзеге асырулары мен қолдану сценарийлеріне жауап беру үшін тым сенімсіз болып шықты. STUN протоколы мен әдісі RFC 5389 құжатында жаңартылды, бастапқы спецификациялардың көп бөлігі әдістердің ішкі жиынтығы ретінде сақталды, бірақ қалғандары алынып тасталды. Тақырыбы сол аббревиатураны сақтап, RFC 5389 ретінде жарияланған әдістердің жаңартылған жиынтығының спецификациясында өзгертілді.

Дизайн

STUN – екі байланыс нүктесі арасындағы жолда орналасқан желілік адресті аударушыларды (NAT) анықтау және олар арқылы өту үшін байланыс протоколдарының құралы. Ол жеңіл клиент-сервер протоколы ретінде іске асырылады, оған тек қарапайым сұраныс және жауап компоненттері қажет, ал үшінші тарап сервері ортақ, оңай қолжетімді желіде, әдетте Интернетте орналасады. Клиенттік бөлік пайдаланушының байланыс бағдарламасында, мысалы, Интернет-протокол арқылы дауыс беру (VoIP) телефоны немесе жылдам хабар алмасу клиенті ретінде іске асырылады. Негізгі протокол мынадайша жұмыс істейді: Клиент, әдетте жеке желіде жұмыс істейді, қоғамдық Интернеттегі STUN серверіне байланыс сұрау жібереді. STUN сервері клиенттің IP-адресі мен порт нөмірін қамтитын сәтті жауаппен жауап береді, бұл сервердің көзқарасынан байқалады. Нәтиже эксклюзивті немесе (XOR) операциясы арқылы жасырылады, бұл қосымша қабат шлюздерінің (ALG) пакет мазмұнын аударуын болдырмау үшін жасалады, олар NAT-тің баламалы әдістерімен өтуге тырысып, пакеттерді тереңінен тексеруді жүргізеді. STUN хабарламалары пайдаланушылық деректерді жіберу протоколының (UDP) пакеттерінде жіберіледі. UDP сенімді тасымалдауды қамтамасыз етпегендіктен, сенімділік STUN сұраныстарын қосымша бақыланатын қайта жіберу арқылы қамтамасыз етіледі. STUN серверлері жауап беруде сенімділік механизмін қолдамайды. Егер сенімділік міндетті болса, беруді басқару протоколы (TCP) пайдаланылуы мүмкін, бірақ бұл қосымша желілік жүктемеге әкеледі. Қауіпсіздікке сезімтал қолданбаларда STUN тасымалдау қабатының қауіпсіздігі (TLS) арқылы тасымалдануы және шифрлануы мүмкін. Қолданба белгілі бір әріптеспен байланыс үшін қолайлы STUN серверін автоматты түрде анықтау үшін домендік атаулар жүйесіне (DNS) UDP үшін (stun) немесе TCP/TLS үшін (stuns) сервердің (SRV) ресурстық жазбасын сұрау арқылы анықтай алады, мысалы, stun.udp.example.com. STUN серверінің стандартты тыңдау порты UDP және TCP үшін 3478, ал TLS үшін 5349 болып табылады. Егер сервердің іске асырылуы TLS және STUN пакеттерін мультиплекстеуге қабілетті болса, TLS TCP портында да жұмыс істей алады. Егер DNS сұрауы арқылы STUN сервері табылмаса, стандарт адрестік жазбалар (A немесе AAAA) үшін мақсатты домендік атауды сұрауды ұсынады, олар әдепкі порт нөмірлерімен пайдаланылады. TLS протоколымен шифрлаудан басқа, STUN арнайы STUN пакеттері арқылы аутентификация және хабарламаның тұтастығын тексеру механизмдерін де қамтиды. Клиент өзінің сыртқы адресін бағалағаннан кейін, оны жеке адрестің орнына сыртқы NAT адресін бөлісу арқылы әріптестермен байланыс үшін кандидат ретінде пайдалана алады, себебі жеке адрес қоғамдық желідегі әріптестер үшін қолжетімді емес. Егер екі байланыс жасайтын тарап әртүрлі жеке желілерде орналасқан болса, әрқайсысы NAT артында, олар арасындағы ең жақсы байланыс жолын анықтау үшін үйлестіруі керек. Кейбір NAT мінез-құлқы қоғамдық байланыс орнатылған кезде де тараптардың байланысын шектеуі мүмкін. Аралық байланыс орнату (ICE) протоколы екі тарап арасындағы ең жақсы байланыс жолын анықтау үшін құрылымдық механизмді ұсынады. Сессияны бастау протоколының (SIP) кеңейтімдері екі хост арасында қоңырауды орнату кезінде ICE пайдалануды қамтамасыз ету үшін анықталған.

Шектеулер

Желілік мекенжай аудармасы әртүрлі мекенжай және порттарды бейнелеу схемалары арқылы іске асырылады, ешқайсысы да стандартталмаған. STUN – барлық NAT қолданыс сценарийлеріне қолданылатын дербес NAT-тің шешімі емес және барлығымен де дұрыс жұмыс істемейді. Бұл басқа әдістердің бірі және NAT-тен өтуде басқа протоколдарға көмектесетін құрал, ең бастысы – ретрансляциялық NAT (TURN) және интерактивті байланыс орнату (ICE). STUN NAT-тің үш түрімен жұмыс істейді: толық конус NAT, шектелген конус NAT және порт бойынша шектелген конус NAT. Шектелген конус немесе порт бойынша шектелген конус NAT болған жағдайда, клиент соңғы нүктеге пакет жібергеннен кейін ғана NAT соңғы нүктеден клиентке пакеттерді жіберуге рұқсат береді. STUN симметриялық NAT (екі тарапты NAT деп те аталады)пен жұмыс істемейді, ол көбінесе ірі компаниялардың желілерінде кездеседі. STUN серверінің IP-даресі соңғы нүктеден өзгеше болғандықтан, симметриялық NAT жағдайында STUN сервері үшін NAT бейнесі соңғы нүктеге қарағанда басқаша болады. TURN симметриялық NAT-пен жақсы нәтижелер береді.