Общение через интернет - PullRequest
       12

Общение через интернет

4 голосов
/ 10 августа 2011

Извините, если этот вопрос задавался ранее, но эту идею сложно сформулировать. Я могу понять, как два компьютера могут напрямую взаимодействовать, слушая открытые порты и отправляя информацию непосредственно на IP-адреса. Тем не менее, я хочу знать, как взаимодействуют такие приложения, как LogMeIn или чат (через порт 80, наверное, потому что он всегда открыт, но вы не можете его слушать), или даже игры (если они не открываются) порт). Если бы я догадался, я бы подумал, что они используют сторонний веб-сервер с базой данных, которая обеспечивает передачу информации между компьютером с помощью запросов «GET» и «POST». Это, вероятно, сделает связь асинхронной.

Мне все равно, если я получу плохую оценку по этому вопросу, пока я могу получить ответ, даже если это просто ссылка на другое место, где есть ответы. Кроме того, я работаю в основном в C ++ и знаком с протоколами TCP и HTTP.

Ответы [ 3 ]

3 голосов
/ 10 августа 2011

Да, обычно есть «сервер», к которому подключаются несколько клиентов.Сервер принимает сообщения от одного клиента и пересылает его одному или нескольким другим клиентам.Это почти всегда «асинхронно», но это может означать несколько вещей (независимо от того, выполняется ли это таким образом на клиенте или сервере, является ли сервер «управляемым событиями» или многопоточным и т. Д.).Сервер может быть веб-сервером, но существуют и другие типы (например, серверы Jabber, которые используют XMPP, обычно [или часто] на порту 5222).

Некоторые мессенджеры работают по HTTP (обычно порт 80, обычно открытый) и даже когда протокол обычно использует другой порт, «веб-шлюз» может быть записан для связи через порт 80 и HTTP, чтобы избежать проблем с другими портами, заблокированными, и он может перенаправить на «стандартный сервер» или повторно внедритьэто целиком.Особенно в корпоративных средах доступ в Интернет может осуществляться через прокси-сервер HTTP, поэтому единственным вариантом является использование шлюза или собственных приложений / протоколов обмена сообщениями HTTP.

Полагаю, важно правильно определить «сервер» для них.дискуссии.Часто этот термин используется для описания реального компьютера, сидящего в центре обработки данных или чего-то еще.Но когда мы говорим о «веб-сервере» или «jabber-сервере», мы обычно имеем в виду программное обеспечение daemon , которое является частью программного обеспечения, задачей которого является прослушивание клиентских подключений и обработка сообщений, которые он получает.

0 голосов
/ 10 августа 2011

Другой альтернативой является одноранговая сеть, где центральный сервер будет согласовывать прямое соединение между двумя клиентами и в основном служит в качестве арбитра для статуса клиентов и связанных с ними прямых ссылок, а не в качестве прокси или посредника.- пересылка сообщений между клиентами.Таким образом, клиент отправит запрос центральному серверу с просьбой о подключении к другому клиенту, и сервер найдет этого дополнительного клиента из пула клиентов, которые ищут других партнеров для подключения, и отправит информацию для каждого отдельного компьютера обратнопротивоположному клиенту, после чего клиенты сами установят прямую связь друг с другом.Как только одноранговое соединение между двумя клиентами установлено, сервер может затем поддерживать «статус» на клиентах и ​​связанных с ними соединениях (т. Е. Существует X компьютеров, которые извлекают данные с некоторого отдельного клиентского компьютера).*

0 голосов
/ 10 августа 2011

Вы правы, что обычно есть сервер, который передает информацию между клиентами. Так работает IRC и большинство онлайн-игр. А некоторые приложения используют HTTP только для того, чтобы избежать проблем с брандмауэром.

Вся связь в Интернете асинхронна по своей природе: после вызова функции для записи в сокет ваша программа продолжает работать, пока пакет перемещается к месту назначения.

...