Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: dark_elf в Sep 02, 2016, 16:25



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

Поздрави


Титла: Re: Real time комуникация
Публикувано от: Demayl в 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


Титла: Re: Real time комуникация
Публикувано от: 4096bits в Sep 02, 2016, 22:20
Не виждам причина, ако една връзка не се ползва известно време, да се затвори от едната страна. В крайна сметка, ако няма трансвер в продължение да речем да десет минути или тридесет минути. При нужда се осъществява нова и се продължава. Времето за отговор обикновено е пренебрежимо малко. Ако има проблеми някъде по пътя, те ще се проявят тъй или иначе, независимо дали връзката е осъществена и е на изчакване или тепърва ще се прави.


Титла: Re: Real time комуникация
Публикувано от: dark_elf в Sep 03, 2016, 14:34
Не виждам причина, ако една връзка не се ползва известно време, да се затвори от едната страна. В крайна сметка, ако няма трансвер в продължение да речем да десет минути или тридесет минути. При нужда се осъществява нова и се продължава. Времето за отговор обикновено е пренебрежимо малко. Ако има проблеми някъде по пътя, те ще се проявят тъй или иначе, независимо дали връзката е осъществена и е на изчакване или тепърва ще се прави.
Не е съвсем така. Ако клиентът затвори връзката, а сървъра иска да му прати нещо няма да може. Какво става тогава?


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


Титла: Re: Real time комуникация
Публикувано от: dark_elf в Sep 04, 2016, 17:42
4096bits, съгласен съм с теб. Но при тази архитектура коя ти казваш, няма ли да има проблем със затворени портове и огнени стени.
Аз ги виждам така нещата:
Клиентът се свързва със сървъра и му казва, че слуша на адрес xx.xx.xx.xx:38994 и затваря връзката. Сървърът от своя страна си записва този адрес и при нужда се опитва да се свърже с клиента. Ако клиента разбере, че му е сменен адреса пак се свързва към сървъра и си казва новият адрес и порт.
Всичко е супер, ама по пътя има огнени стени и рутери. Ако порта на които слуша клиента е забранен някъде по пътя няма как сървърът да установи връзка с клиента.

Поздрави


Титла: Re: Real time комуникация
Публикувано от: dark_elf в Sep 09, 2016, 11:55
4096bits, няма ли да кажеш нещо допълнително по темата?


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


Титла: Re: Real time комуникация
Публикувано от: dark_elf в Sep 09, 2016, 16:46
Това с барането на рутера не е много оферта.
Добре де, на какъв принцип работят програми като skype и viber? Как минават през всички рутери и огнени стени в мрежата?


Титла: Re: Real time комуникация
Публикувано от: chen_dzen в Sep 09, 2016, 17:12
Skype ползва P2P архитектура. Не е кливнт-сървър.


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


Титла: Re: Real time комуникация
Публикувано от: Demayl в Sep 09, 2016, 17:39
dark_elf Така работи интернет. Как минава връзката ще трябва да прочетеш малко повечко. Архитектурата си е такава. Firewall  може да ти е проблем независимо от "архитектурата" която си представяш.
Най-добре си намери някъде pdf-i с Cisco CCNA и чети ( давам го за пример защото първата част е точно запознаване с работата на мрежите )


Титла: Re: Real time комуникация
Публикувано от: go_fire в Sep 09, 2016, 17:57
Skype ползва P2P архитектура.


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

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

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


-----
¹/ А после се оказа, че струва джобни ст.-инки, ама т'ва е друга тема.


Титла: Re: Real time комуникация
Публикувано от: ddantgwyn в Sep 09, 2016, 18:20
Skype ползва P2P архитектура. Не е кливнт-сървър.


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


Титла: Re: Real time комуникация
Публикувано от: chen_dzen в Sep 09, 2016, 18:28
Че, скайп съществува ли още ?  :D

Аз не мога да разбера идеята на занятието.
Още първият пост (след твоя) ти отговаря на всички въпроси.


Титла: Re: Real time комуникация
Публикувано от: 4096bits в Sep 09, 2016, 19:15
Skype ползва P2P архитектура.


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

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


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


-----
¹/ А после се оказа, че струва джобни ст.-инки, ама т'ва е друга тема.
Дай линкове за алтернативния клиент и протокола, моля те. Стана ми любопитно. Иначе Скайп минаваше през всичко да. Магия ми е на мен това. Вайбър за мен е вирус.

@dark_elf, защо не напишеш в две изречения конкретно, какво ти е нужно, за да не изпадаме тук в абстракции. Може някой да предложи конкретно решение, което да ти свърши работа. Има хора с опит тук. Аз летя в съвсем други сфери.


Титла: Re: Real time комуникация
Публикувано от: go_fire в Sep 09, 2016, 19:30
https://github.com/skypeopensource?tab=repositories

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

Магия няма. Работи на осемдесети порт, който няма как да се филтрира. И трафика е случаен, освен против проследяване, прави невъзможно да се създаде шаблон по съдържанието му. Това си се знаеше далеч преди блятката да го разцъка. Очевидно е.


Титла: Re: Real time комуникация
Публикувано от: makeme в Sep 09, 2016, 23:11
В днешно време всичко "модерно" има поведение на вирус :) Просто хората искат да им е лесно и безплатно* и от там големите компании се възползват по всички фронтове. Така, че мисля е сериозен. :)
Лично аз много харесвам за чат tox модела, даже имам инсталлнат тук qtox (да си го гледам само :) ) , но как да го ползвам, като никой не го (и не вярвам някога) да го ползва, понеже като им кажеш на хората, че профилът им седи локално и те гледат кат тръбЪ. А като им кажеш, че профил означава данни и в противен случай ги даваш на някой и те се обръщат на другата страна.


Титла: Re: Real time комуникация
Публикувано от: go_fire в Sep 09, 2016, 23:13
Както казах доклада е някъде в blogspot-a му от преди пет години. Но си изрових и връзката към торента:

http://pirateunblocker.xyz/torrent/6442887/

п.п. Украиносите с триста зора биха, вече имаме оправдание утре оти ще сме осми.


Титла: Re: Real time комуникация
Публикувано от: chen_dzen в Sep 09, 2016, 23:33
Стига бе човек кви данни ми говориш. Ше ме подслушват? Или  ще ми видят емотиконите които изпращам към приятелката ми преди лягане. Забавлявате ме...  ;D :D ;D


Титла: Re: Real time комуникация
Публикувано от: mkkostov в Sep 09, 2016, 23:35
http://www.linux.org.ru/news/internet/12855297
https://www.opennet.ru/opennews/art.shtml?num=45074
Тук пише за алтернативния клиент за Skype.


Титла: Re: Real time комуникация
Публикувано от: ddantgwyn в Sep 09, 2016, 23:43
Дай линкове за алтернативния клиент и протокола, моля те. Стана ми любопитно. Иначе Скайп минаваше през всичко да. Магия ми е на мен това. Вайбър за мен е вирус.

https://skype-open-source2.blogspot.ru/2016/09/first-in-world-skype-network-compatible.html ($2)


Титла: Re: Real time комуникация
Публикувано от: makeme в Sep 09, 2016, 23:50
Стига бе човек кви данни ми говориш. Ше ме подслушват? Или  ще ми видят емотиконите които изпращам към приятелката ми преди лягане. Забавлявате ме...  ;D :D ;D

Разбира се, че зависи от употребата, но при положение, че през чата ти минават днеска 200-300 юсъри и пароли (мой ден) за какво ли не от бази данни до root достъп до сървъри, взимаш да се замисляш.


Титла: Re: Real time комуникация
Публикувано от: chen_dzen в Sep 10, 2016, 00:55
Стига бе човек кви данни ми говориш. Ше ме подслушват? Или  ще ми видят емотиконите които изпращам към приятелката ми преди лягане. Забавлявате ме...  ;D :D ;D

Разбира се, че зависи от употребата, но при положение, че през чата ти минават днеска 200-300 юсъри и пароли (мой ден) за какво ли не от бази данни до root достъп до сървъри, взимаш да се замисляш.
Всеки си преценя риска, но да заявяваш, че даден софтуер е вирус, и то в този отговорен форум, даже без да се аргументираш е слабо казано несериозно.

пп: Моето уважение, но поведение на вирус, няма. Защото съм имал вируси и не се държат по този начин.
Ппп: Няма повече да спамя темата.


Титла: Re: Real time комуникация
Публикувано от: dark_elf в Sep 10, 2016, 08:56
Така, така. Темата доста се разми. Интересно ми беше да разбера какви методики и средства се използват за такъв вид комуникация. Въртеше ми се една идея, но сега като гледам нещата въобще не са толкова тривиални.
Благодаря на всички за коментарите.


Титла: Re: Real time комуникация
Публикувано от: Naka в Sep 10, 2016, 12:38
Върти ми се нещо в главата за UPnP протокол. Не го разбирам и може да давам грешна следа.
Но си спомням че го използваха в една игра да се свързат към сърверите и
http://www.scorched3d.co.uk/phpBB3/viewtopic.php?f=4&t=4361

Сега като си погледнах моя обикновен съвременен Тп-линк това UPnP е включено по дефаулт.
Така че това може да е едно от решенията ако ти трябва отворен порт да се направи заявка към ротера да го отвори.


Титла: Re: Real time комуникация
Публикувано от: go_fire в Sep 10, 2016, 13:21
Е то щом ще е така, ето и нещо покрай ГНУ:

 http://www.nongnu.org/gzochi/

Цитат
Concurrency, data persistence, and network communications. A very thin client library can be embedded to provide connectivity for client applications written in any language.


Титла: Re: Real time комуникация
Публикувано от: 4096bits в Sep 10, 2016, 23:06
Който иска да си го ползва Вайбъра.  ;D
Но нека се запита поне веднъж, за какво им е да пазят на сървърите им инфо за всичките контакти в телефона, имена, номера, имейл адреси и прочее, за геолокацията и всякакви такива. Не ми се четат глупостите им. Та, като си отговори на този въпрос, ще си отговори сам и на този, дето ми го задава. Та до 2014-та всичко това се е пазело там некриптирано с линкове към всеки един ресурс. Сега не зная, какво е положението. Който иска инфо, знае къде да търси.