Вопрос: В чем разница между сокетами Unix и сокетами TCP / IP?


Это из этого ответа:

https://stackoverflow.com/questions/2482411/is-this-pdo-bug-fixed-now/2482424#2482424


73
2018-03-20 09:13


Источник




Ответы:


Разъем UNIX это механизм взаимодействия между процессами, который позволяет осуществлять двунаправленный обмен данными между процессами, запущенными на одном компьютере.

IP-розетки (особенно сокеты TCP / IP) - это механизм, позволяющий осуществлять связь между процессами по сети. В некоторых случаях вы можете использовать сокеты TCP / IP для общения с процессами, запущенными на одном компьютере (с использованием интерфейса loopback).

Сокеты домена UNIX знают, что они выполняются в одной и той же системе, поэтому они могут избежать некоторых проверок и операций (например, маршрутизации); что делает их быстрее и легче IP-гнезд. Поэтому, если вы планируете общаться с процессами на одном хосте, это лучший вариант, чем IP-сокеты.

Изменить: согласно Комментарий Нильса Тодтмана: Сокеты домена UNIX подчиняются разрешениям файловой системы, а TCP-сокеты могут управляться только на уровне фильтра пакетов.


137
2018-03-20 09:39



Возможно, добавьте, что сокеты домена UNIX подчиняются разрешениям файловой системы, а сокеты TCP - нет. В результате гораздо проще регулировать, какие пользователи имеют доступ к соке домена UNIX, чем для сокета TCP. - Nils Toedtmann
@pQd, чувак вы можете назвать его Unix IPC вместо Unix Sockets? - Pacerier
Сокеты @Pacerier Unix - это просто один из способов достижения unix IPC (совместно используемая Interprocess память среди других), поэтому было бы неверно вызывать unix-сокеты unix IPC. - fyquah95
Сокеты TCP также обрабатываются Unix? Сокеты TCP являются частью спецификации протокола TCP или любой протокол может использовать IP-сокеты? - Federico


Вы можете перечислить свои собственные локальные Unix-сокеты машины следующей командой:

netstat -a -p --unix

Повеселись!


20
2018-03-20 13:49



Сокеты Unix не существуют в Windows. netstat однако работает на Windows. - Mark Tomlin
@apache, аналогичная вещь в Windows под названием «Именованные трубы». - expert
Именованные каналы также присутствуют в Linux. - Sahil Singh
@expert, именованные каналы в Windows равны именованным каналам в Unix. Сокеты IPC в Unix не имеют эквивалентности в Windows - Pacerier
Обратите внимание, что одно отличие состоит в том, что именованные каналы могут подключаться только к одному клиенту (2 процесса, сообщающие общее количество). Сокеты UNIX, такие как IP-сокеты, могут иметь сразу несколько клиентов, каждый из которых получает отдельные ответы. - peterflynn