Есть ли разница между «сокетом» или «транспортом», или они взаимозаменяемы? Я спрашиваю только потому, что вижу много библиотек, которые, кажется, делают одно и то же, но немного отличаются только тем, как работает имя / методы / свойства / классы.
Насколько я понимаю, «сокет» — это поток, соединяющий серверы / сетевые устройства вместе, а «транспорт» — это схема, используемая соединением (например, TCP — это транспорт).
Есть ли разница между «сокетом» или «транспортом», или они
взаимозаменяемы?
До сих пор я не встречал слово transport
как одно слово. Я всегда читал транспортный слой везде через транспорт. Я бы попросил вас за внешние ссылки который вы цитируете (и запутываетесь). Даже в сетевой библиотеке Java я никогда не слышал и не читал о транспорте как о независимой экзистенциальной сущности (в рамках моего ограниченного опыта)!
Я спрашиваю только потому, что вижу много библиотек, которые делают то же самое
вещь, но отличаются немного только тем, как называется
функции / методы / свойства / классы.
Я думаю, что вы запутались из-за TLS / SSL. Здесь TLS является преемником SSL. Вы не должны соотносить сокет и транспорт с этим. Кстати, TLS / SSL — протоколы прикладного уровня.
Насколько я понимаю, «сокет» — это поток, соединяющий серверы / сеть
Устройства вместе и «транспорт» — это схема, используемая соединением
(Например, TCP — это транспорт).
Ваши оба утверждения неверны (по крайней мере, сначала наверняка)! Сокет не поток; TCP не транспорт, а транспортный протокол TCP / IP.
Проще говоря, сетевой сокет является конечной точкой соединения через компьютерную сеть. Внутренние сокеты часто являются просто целыми числами, которые определяют, какое соединение использовать. Сокеты не должны иметь адрес (например, только для отправки данных), но если программа связывает сокет с адресом, сокет можно использовать для получения данных, отправленных на этот адрес.
Принимая во внимание, что транспортный уровень представляет собой концептуальное разделение методов в многоуровневой архитектуре протоколов в сетевом стеке в наборе протоколов Интернета и взаимодействии открытых систем (OSI). Наиболее известным транспортным протоколом TCP / IP является протокол управления передачей (TCP)
Я думаю, что вы задали этот вопрос, потому что PHP использует эти концепции в замешательстве. Например определение транспорта и концепция потоковые розетки.
Я не программист PHP, но из того, что я заметил, его имена не очень интуитивно понятны.
В операционных системах сокет — это API-интерфейс операционной системы, позволяющий приложениям взаимодействовать через определенный протокол.
В сетевых и операционных системах есть две многоуровневые модели связи: OSI и TCP / IP. В обоих из них есть транспортный уровень, который работает над сетевым уровнем. Основная функциональность этого транспортного уровня заключается в мультиплексировании услуг, предоставляемых сетевым уровнем, между различными TSAP (точками доступа транспортных служб), используемыми различными приложениями (работающими на прикладном уровне в модели TCP / IP). Некоторые примеры протоколов транспортного уровня: TCP, UDP, SCTP. Концепция TSAP — это то, что мы знаем как порты TCP / UDP / SCTP.
Существуют разные типы сокетов: сокеты потоков и дейтаграмм (соответственно TCP и UDP), необработанные сокеты, сокеты доменов Unix, сокеты пакетов (в Linux) и т. Д.
Теперь сокет AF_INET может быть сокетом потока для TCP (потому что он ориентирован на поток) или сокетом дейтаграммы для UDP Одно объяснение здесь.
В частности, в TCP и UDP сокет определяется кортежем (исходный IP-адрес, исходный порт, IP-адрес назначения, порт назначения).
SSL и TLS работают выше TCP (есть кое-что и для UDP, но …), и можно сказать, что это протоколы прикладного уровня, но здесь разделительная линия не так ясна. Некоторые языки более высокого уровня, Java и другие, имеют защищенные сокеты с использованием SSL или TLS.
Из того, что я прочитал в упомянутых ссылках, PHP имеет концепцию потоковых сокетов, которая отличается от общей концепции сокетов операционной системы. Они абстрагируют вас от пустого сокета операционной системы. Сокет потока позволяет вам выбирать различные транспорты (tcp, udp, ssl, unix и т. Д.). Я предполагаю, что это относится к различным механизмам (не только протоколам, но и механизмам, таким как сокеты Unix) транспортировки данных, и если вы читаете в потоковые розетки вы увидите, что за кулисами он открывает сокет реального потока для TCP, так называемого «транспорта», и сокет дейтаграммы для UDP, так называемого «транспорта».
Теперь называть его потоковым сокетом для транспорта udp — сбивает с толку. Я не знаю, если PHP заставляет вас видеть сокет UDP как сокет, ориентированный на поток, в этом случае это имело бы смысл (я оставляю эту часть ответа какому-то эксперту по PHP).
Наконец, я надеюсь, что после этого объяснения вы сделаете вывод, что сокет и транспорт не являются взаимозаменяемыми понятиями, как в общих понятиях операционных систем, так и в PHP.