Я много искал об этом, но ничего не нашел. Я не особо пробовал использовать сокеты python, просто создал систему, в которой хост и клиент могут обмениваться сообщениями. Я хочу знать, когда клиент подключается к хосту через сокет python, устанавливает ли он соединение вне программы? Например, можем ли мы играть в любую сетевую игру после подключения через сокеты ??
Соединяет ли сокет python в основном хост и клиент через Интернет, как компьютер с компьютером через VPN?
Ответы (1)
Сокеты не привязаны к какому-либо языку; они являются логической конечной точкой, предлагаемой базовым API для пользовательского пространства. Вы можете создавать сокеты TCP / IP на любом языке, поддерживающем работу в сети.
«Я хочу знать, когда клиент подключается к хосту через сокет python, устанавливает ли он соединение и вне программы?»
Это зависит от того, на какой слой вы смотрите. Рассмотрим первые три уровня модели TCP / IP сверху (приложение, транспорт, сеть).
Уровень приложения: все, что лежит в основе Интернета, абстрагируется от уровня приложения. Теперь, если вы видите, установлено ли соединение вне вашей программы, это полностью зависит от того, какой протокол они используют. Если вы рассматриваете протокол HTTP, он в основном не имеет состояния или соединения (если файлы cookie игнорируются). Но если вы посмотрите на SSL, произойдут некоторые рукопожатия, и состояние сеанса поддерживается как на стороне клиента, так и на стороне сервера.
Транспортный уровень: два известных протокола на этом уровне - TCP и UDP. С TCP перед любой передачей данных TCP-соединение устанавливается путем трехстороннего рукопожатия. Но в случае UDP такой термин, как соединение, не определяется.
Уровень Интернета. Хотя широко известной и наиболее часто используемой сетевой архитектурой является Интернет, существуют и другие архитектуры, такие как ATM CBR и ATM ABR. Архитектура Интернета подпадает под категорию сетей дейтаграмм, что означает, что состояние не поддерживается, коммутаторы канального уровня или маршрутизаторы просто пересылают пакеты. Напротив, архитектура ATM подпадает под категорию сетей виртуальных каналов. Каждое соединение на сетевом уровне отслеживается для предоставления услуг. например, в случае ATM CBR, соединения контролируются для предоставления услуги с постоянной скоростью передачи, а в случае ATM ABR, соединения контролируются для предоставления услуги с минимальной скоростью передачи данных.
Здесь я только что резюмировал настройку соединения для первых трех слоев, и то же самое может произойти и с другими слоями.
В заключение, устанавливается ли соединение вне ваших программ? Это зависит от всех вышеперечисленных факторов, какой протокол прикладного уровня вы используете, какой протокол транспортного уровня вы используете и какова основная сетевая архитектура ... и т. Д. И вы также можете увидеть сценарий, в котором установление соединения происходит в на сетевом уровне, но не на уровне приложений, вот где появляются все эти сетевые абстракции. Вы можете блаженно игнорировать основные детали!