Автор Тема: Real time комуникация  (Прочетена 10858 пъти)

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
Real time комуникация
« -: Sep 02, 2016, 16:25 »
Здравейте, колеги.
Интересно ми е какви похвати се използват за такъв тип комуникация.
Примерно като се отворят сокетите между клиентът и сървъра постоянно ли са отворени или се използва някаква друга механика?
Другото нещо е като се отвори сокет но не се пише по него заема ли ресурси от системата и колко дълго може да се държи отворен?

Поздрави
« Последна редакция: Sep 02, 2016, 16:48 от dark_elf »
Активен

Demayl

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: XUbuntu,FreeBSD
  • Window Manager: Xfce
    • Профил
    • WWW
Re: Real time комуникация
« Отговор #1 -: Sep 02, 2016, 17:54 »
1. За networking Socket значи комбинацията от IP-Port ( https://en.wikipedia.org/wiki/Network_socket )
2. Постоянно са отворени, докато една от страните не реши друго ( и ползваш TCP, което сигурно е случая ).
3. Заема пренебрежимо малко ресурси ( per connection ). OS си пази инфо за отворените TCP сесии + има keepalive пакети, които се пращат от за проверка дали connection-a е отворен.
    Може да стой отворен докато някой не прекъсне connection-a или стигнеш някой timeout ( default tcp by OS или на самия server, който ползваш )

Всичко е въпрос на брой connections за еденица време. Принципно има много зависимости. Примерно ако имаш TCP idle timeout на някой рутер/firewall etc, който е 300 секунди и при голям keepalive interval ( 1800 sec ) няма да ти държи open connections като няма предаване на данни. Тези стойности даже май бяха default. Ако на server-a ползваш някой тежък app и при всеки connection държиш отделен процес, тогава няма да имаш "система"   ;D
Затова трябва да се разровиш доста ако искаш да направиш нещо сносно  [_]3
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Real time комуникация
« Отговор #2 -: Sep 02, 2016, 22:20 »
Не виждам причина, ако една връзка не се ползва известно време, да се затвори от едната страна. В крайна сметка, ако няма трансвер в продължение да речем да десет минути или тридесет минути. При нужда се осъществява нова и се продължава. Времето за отговор обикновено е пренебрежимо малко. Ако има проблеми някъде по пътя, те ще се проявят тъй или иначе, независимо дали връзката е осъществена и е на изчакване или тепърва ще се прави.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
Re: Real time комуникация
« Отговор #3 -: Sep 03, 2016, 14:34 »
Не виждам причина, ако една връзка не се ползва известно време, да се затвори от едната страна. В крайна сметка, ако няма трансвер в продължение да речем да десет минути или тридесет минути. При нужда се осъществява нова и се продължава. Времето за отговор обикновено е пренебрежимо малко. Ако има проблеми някъде по пътя, те ще се проявят тъй или иначе, независимо дали връзката е осъществена и е на изчакване или тепърва ще се прави.
Не е съвсем така. Ако клиентът затвори връзката, а сървъра иска да му прати нещо няма да може. Какво става тогава?
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Real time комуникация
« Отговор #4 -: Sep 03, 2016, 18:23 »
Значи сървъра е обработвал твърде дълго "заявката". Ако случаят е малко по-различен, например сървъра да изпраща от време на време инфо за някакво състояние на нещо, значи другата страна също трябва да слуша на някой порт.
Никога не са ми допадали моделите клиент-сървър. Но дори да е така, сървърът просто може да чака, докато отново не бъде поискано това или бъде осъществена връзка с него.
Но най-добре е и двете страни да слушат. Пък и отделеният ресурс за това ще е нищожен. Не съм проверявал, колко памет и cpu са нужни за това, но сигурно са смешно малко. В крайна сметка, за да слушаш на някой порт не са нужни повече от десет реда код.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
Re: Real time комуникация
« Отговор #5 -: Sep 04, 2016, 17:42 »
4096bits, съгласен съм с теб. Но при тази архитектура коя ти казваш, няма ли да има проблем със затворени портове и огнени стени.
Аз ги виждам така нещата:
Клиентът се свързва със сървъра и му казва, че слуша на адрес xx.xx.xx.xx:38994 и затваря връзката. Сървърът от своя страна си записва този адрес и при нужда се опитва да се свърже с клиента. Ако клиента разбере, че му е сменен адреса пак се свързва към сървъра и си казва новият адрес и порт.
Всичко е супер, ама по пътя има огнени стени и рутери. Ако порта на които слуша клиента е забранен някъде по пътя няма как сървърът да установи връзка с клиента.

Поздрави
Активен

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
Re: Real time комуникация
« Отговор #6 -: Sep 09, 2016, 11:55 »
4096bits, няма ли да кажеш нещо допълнително по темата?
Активен

4096bits

  • Напреднали
  • *****
  • Публикации: 6152
    • Профил
Re: Real time комуникация
« Отговор #7 -: Sep 09, 2016, 15:10 »
Какво да кажа! Клиента може да провери, кои портове може да ползва. Ако не може никакви да ползва, трябва да се ръчне рутера. Също може да се направи безплатна регистрация в някой сайт който предлага dynamic dns ( има няколко дето вършат добра работа ) и да има постоянен адрес. Само трябва при свързване към интернет на компа/лаптопа да се свързва към сървъра им през няколко минути
Остава въпроса с порта. Ако рутера не го уважава, трябва рутера да се бара. Все пак, завиди в каква среда ще работи машината. Има фирми например, които само само 25-ти са отворили и нищо повече.
Честно, не ме бива много с мрежите. Може някой тук да се изкаже с нещо по-умно и по-конкретно. Аз например за да пращам поща директно от компа, трябваше да говоря с ISP-то ми, щото не можело от localhost
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
Re: Real time комуникация
« Отговор #8 -: Sep 09, 2016, 16:46 »
Това с барането на рутера не е много оферта.
Добре де, на какъв принцип работят програми като skype и viber? Как минават през всички рутери и огнени стени в мрежата?
Активен

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: Real time комуникация
« Отговор #9 -: Sep 09, 2016, 17:12 »
Skype ползва P2P архитектура. Не е кливнт-сървър.

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
Re: Real time комуникация
« Отговор #10 -: Sep 09, 2016, 17:24 »
Skype ползва P2P архитектура. Не е кливнт-сървър.
Това не е ли само при изпращане на файлове? Когато се логваш или си пишеш с няколко човека в общ чат май всичко отива към централен сървър.
Активен

Demayl

  • Напреднали
  • *****
  • Публикации: 104
  • Distribution: XUbuntu,FreeBSD
  • Window Manager: Xfce
    • Профил
    • WWW
Re: Real time комуникация
« Отговор #11 -: Sep 09, 2016, 17:39 »
dark_elf Така работи интернет. Как минава връзката ще трябва да прочетеш малко повечко. Архитектурата си е такава. Firewall  може да ти е проблем независимо от "архитектурата" която си представяш.
Най-добре си намери някъде pdf-i с Cisco CCNA и чети ( давам го за пример защото първата част е точно запознаване с работата на мрежите )
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 8780
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Real time комуникация
« Отговор #12 -: Sep 09, 2016, 17:57 »
Skype ползва P2P архитектура.


Беше. Доста отдавна не е. По-точно, от както ги взеха едни непрокопсаници.

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

Ъ, да има изписано доста за протокола им, а от някакво време вече има и алтернативен клиент. Ако искаш разгледай му кода. И пак казвам, че точно скъпият чат едва ли е лъжица за устата ти.


-----
¹/ А после се оказа, че струва джобни ст.-инки, ама т'ва е друга тема.
« Последна редакция: Sep 09, 2016, 18:01 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

ddantgwyn

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 1262
    • Профил
Re: Real time комуникация
« Отговор #13 -: Sep 09, 2016, 18:20 »
Skype ползва P2P архитектура. Не е кливнт-сървър.


Ползваше. Сега вече всичко минава през сървърите на Microsoft. С каква цел -- оставам на будното ви въображение да разбере ::)
Активен

the lamer's team honourable member

chen_dzen

  • Напреднали
  • *****
  • Публикации: 623
  • Distribution: Debian 6.0 Squeeze
  • Window Manager: GNOME
    • Профил
Re: Real time комуникация
« Отговор #14 -: Sep 09, 2016, 18:28 »
Че, скайп съществува ли още ?  :D

Аз не мога да разбера идеята на занятието.
Още първият пост (след твоя) ти отговаря на всички въпроси.
« Последна редакция: Sep 09, 2016, 18:56 от chen_dzen »
Активен