UDP клиент - отворени портове?

Така че в момента използвам само TCP за моите клиенти - те се свързват със сървъра, отварят сокет и свободно получават пакети. Но какво ще стане, ако реша да използвам и UDP в играта си? Ще трябва ли да отварят портове? Например, ако използват обикновен WiFi, мога ли да изпратя UDP на клиента, без да има проблем с отварянето на портове?

Благодаря.


person Eli    schedule 09.07.2011    source източник


Отговори (1)


TCP и UDP са само два примера за реализации на транспортния слой. И двете използват термина „порт“, за да определят кое приложение трябва да получава входящи пакети, но те могат да бъдат маршрутизирани/филтрирани по различен начин от рутери/суичове/защитни стени/и т.н.

Така че отговорът е не. Ще имате подобни проблеми с отварянето на портове. Само с изключение на „TCP порт xxx трябва да бъде отворен“, трябва да поискате „UDP порт xxx трябва да бъде отворен“.

В повечето домашни мрежи правилата на защитната стена позволяват изходящи пакети (заявки) към всеки отдалечен порт (на вашия сървър например, където този порт трябва да бъде отворен). И когато такъв пакет премине през рутер - той създава временно правило, за да позволи отговорите да се върнат към локалния порт, от който е заявен пакетът.

И така, нормалният сценарий е следният:

  1. Пакетът произхожда от домашен компютър с IP 5.5.5.5. Да приемем, че има изходен UDP порт 55555, изходен IP адрес 5.5.5.5 и целеви порт 8888.
  2. Пакетът достига до домашния рутер. Докато върви отвътре - рутерът му позволява да премине и създава правило, да речем за 2 минути, за да разреши пакети, насочени към 5.5.5.5 към UDP порт 55555.
  3. Пакетът достига корпоративния рутер преди вашия сървър. Има правило за предаване на пакети за порт 8888, така че пакетът може да премине.
  4. Вашият сървър получава пакета и го обработва. В отговор той създава пакет за IP 5.5.5.5 и UDP порт 55555.
  5. Корпоративният рутер позволява да се отговори.
  6. Домашният рутер позволява реакцията да върви според временно правило.
  7. Вашият компютър получава отговора.

Корпоративните компютри и рутери често са по-ограничителни, за да се гарантира сигурността, така че втората точка може да ограничи пакета, ако вашият потребител (IP 5.5.5.5) е в корпоративна мрежа.

Много е опростено, тъй като в действителност почти винаги има неща като NAT и правилата са по-сложни... Но като цяло дава представа как работи вътрешно.

person Ivan Danilov    schedule 09.07.2011
comment
Така че, ако ще имам проблеми с UDP порта, същите проблеми ще бъдат и на TCP? Така че всъщност няма особено значение за мен, така че мога да добавя UDP... Но повечето потребители използват ли защитна стена на рутера? Защото този клиент е клиент на игра. Приложение за iOS. Не искам всеки потребител, който иска да играе в играта, да трябва да отваря портове. - person Eli; 09.07.2011
comment
@Eli - прочетете отново този отговор и след това го прочетете отново, докато или разберете какво казва, или имате конкретен въпрос за него. Току-що повторихте отговора на Иван под формата на въпрос, което ме кара да мисля, че не сте му обърнали достатъчно внимание. - person msw; 09.07.2011
comment
Вижте актуализацията на моя отговор. Администраторът на вашия сървър за игри е единственият, който трябва да отваря портове през повечето време. И да - повечето потребители използват защитни стени на рутера. Това е просто правилото по подразбиране дори на най-простите домашни рутери - да се разрешат изходящи пакети и да се блокират входящите, освен тези, които са дошли като отговор на предишен изходящ пакет. - person Ivan Danilov; 09.07.2011
comment
@msw Актуализирах отговора си точно след като Ели публикува коментара си. Така че е добре :) - person Ivan Danilov; 09.07.2011
comment
Добре - значи го разбрах. Просто проверявам - повечето потребители няма да имат проблем с отварянето на портовете, нали? - person Eli; 09.07.2011
comment
Ако комуникират с централен сървър - не, няма. Ако искат да комуникират директно помежду си без централен сървър изобщо - ще имат проблеми. - person Ivan Danilov; 09.07.2011
comment
@IvanDanilov Това беше наистина полезно, винаги съм бил объркан от това. Можете ли да ми препоръчате някоя книга, която обяснява тези основи по-подробно? - person bubakazouba; 18.03.2015
comment
@user74670 Бих препоръчал курс на Cisco CCNA и книги, препоръчани заедно с него. Дава достатъчно познания за разбиране на повечето проблеми в домашната или малка офис мрежа. - person Ivan Danilov; 18.03.2015