Соединяет ли сокет python в основном хост и клиент через Интернет, как компьютер с компьютером через VPN?

Я много искал об этом, но ничего не нашел. Я не особо пробовал использовать сокеты python, просто создал систему, в которой хост и клиент могут обмениваться сообщениями. Я хочу знать, когда клиент подключается к хосту через сокет python, устанавливает ли он соединение вне программы? Например, можем ли мы играть в любую сетевую игру после подключения через сокеты ??


person Prashant Ranjan    schedule 03.06.2020    source источник
comment
Да, это сокет TC / IP, как и любой другой.   -  person user207421    schedule 04.06.2020


Ответы (1)


Сокеты не привязаны к какому-либо языку; они являются логической конечной точкой, предлагаемой базовым API для пользовательского пространства. Вы можете создавать сокеты TCP / IP на любом языке, поддерживающем работу в сети.

«Я хочу знать, когда клиент подключается к хосту через сокет python, устанавливает ли он соединение и вне программы?»

Это зависит от того, на какой слой вы смотрите. Рассмотрим первые три уровня модели TCP / IP сверху (приложение, транспорт, сеть).

  • Уровень приложения: все, что лежит в основе Интернета, абстрагируется от уровня приложения. Теперь, если вы видите, установлено ли соединение вне вашей программы, это полностью зависит от того, какой протокол они используют. Если вы рассматриваете протокол HTTP, он в основном не имеет состояния или соединения (если файлы cookie игнорируются). Но если вы посмотрите на SSL, произойдут некоторые рукопожатия, и состояние сеанса поддерживается как на стороне клиента, так и на стороне сервера.

  • Транспортный уровень: два известных протокола на этом уровне - TCP и UDP. С TCP перед любой передачей данных TCP-соединение устанавливается путем трехстороннего рукопожатия. Но в случае UDP такой термин, как соединение, не определяется.

  • Уровень Интернета. Хотя широко известной и наиболее часто используемой сетевой архитектурой является Интернет, существуют и другие архитектуры, такие как ATM CBR и ATM ABR. Архитектура Интернета подпадает под категорию сетей дейтаграмм, что означает, что состояние не поддерживается, коммутаторы канального уровня или маршрутизаторы просто пересылают пакеты. Напротив, архитектура ATM подпадает под категорию сетей виртуальных каналов. Каждое соединение на сетевом уровне отслеживается для предоставления услуг. например, в случае ATM CBR, соединения контролируются для предоставления услуги с постоянной скоростью передачи, а в случае ATM ABR, соединения контролируются для предоставления услуги с минимальной скоростью передачи данных.

Здесь я только что резюмировал настройку соединения для первых трех слоев, и то же самое может произойти и с другими слоями.

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

person m0hithreddy    schedule 04.06.2020
comment
Спасибо за подробное объяснение! Допустим, у меня есть два скрипта на Python, и соединение установлено по UDP. И система спроектирована таким образом, что серверный сценарий ожидает получения определенного строкового сообщения от клиентского сценария перед закрытием сокета. Между тем, пока я не отправил это конкретное сообщение из клиентского скрипта, соединение все еще работает. Смогу ли я, скажем, сыграть в сетевую многопользовательскую игру, такую ​​как CS GO, с сервером и клиентом? - person Prashant Ranjan; 05.06.2020
comment
Ваш вопрос будет более конкретным, пока вы не начнете говорить об игре. Во-первых, в протоколе UDP нет ничего лучше соединения. Давайте просто возьмем ПТС и поговорим. В наши дни машины способны к многопроцессорному использованию. Если система способна устанавливать только одно соединение за раз, это означает, что мы находимся в каменном веке. Система может одновременно устанавливать несколько подключений; количество теоретически ограничено поддерживаемыми протоколами и количеством портов. Что касается игровой части, я не знаю, какой механизм принимает CSGO. Но я считаю, что он использует UDP. ›› - person m0hithreddy; 05.06.2020
comment
Теперь позвольте сказать, что CSGO использует порт UDP по умолчанию 56756, и если ваш сервер или клиент привязан к этому порту, вы отключаете CSGO этого конкретного узла для связи с другими узлами CSGO. Но если CSGO умен и если он может управлять коммуникациями, используя временные порты, то он может управлять, даже если ваш клиент и сервер работают. - person m0hithreddy; 05.06.2020
comment
Спасибо, это объясняет! - person Prashant Ranjan; 05.06.2020