Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

netstat -a -p --unix

Радоваться, веселиться!

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

Сокет TCP / IP используется для связи в сетях TCP / IP. Подключенный сокет TCP идентифицируется сочетанием локального IP-адреса, локального порта, удаленного IP-адреса и удаленного порта. Прослушивающий TCP-сокет идентифицируется локальным портом и, возможно, локальным IP-адресом. AIUI, по крайней мере, на сокетах TCP / IP Linux всегда приводит к генерации и декодированию пакетов TCP / IP, даже если клиент и сервер находятся на одном компьютере.

С другой стороны, сокет домена unix (иногда сокращенный до сокета unix) работает на одной машине. Прослушивающие сокеты находятся в иерархии файловой системы, и доступ к ним может контролироваться разрешениями файловой системы.

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


Сокеты TCP тоже обрабатываются Unix?

Конечно

Сокеты TCP являются частью спецификации протокола TCP

Спецификации интернет-протокола имеют тенденцию касаться только того, что происходит в сети, спецификация TCP содержит определение Socket, но это определение отличается от того, как этот термин используется в «API сокетов».

«API сокетов» в том виде, в каком мы его знаем, был введен BSD, но позже был скопирован повсеместно и включен как часть стандарта posix. Базовые вещи для сокетов TCP и UDP, как правило, одинаковы на разных платформах, но более сложные вещи и вещи, которые взаимодействуют с другими частями ОС, различаются, например, в unix-подобных системах сокет идентифицируется дескриптором файла и может быть прочитанными / записанными файловыми API, это не относится к Windows.

Некоторые расширения API сокетов были задокументированы в RFC, но эти RFC являются только «информационными».

или любой протокол может использовать IP-сокеты?

Когда приложение явно создает сокет с помощью функции «сокет» (сокеты также создаются функцией accept), оно передает три параметра: «домен», «тип» и «протокол». Между ними эти три параметра могут использоваться для выбора множества различных типов розеток.

  • domain выбирает семейство используемых протоколов / адресов, например AF_INET для ipv4, AF_INET6 для ipv6, AF_Unix для путей файловой системы unix и т. Д.
  • Тип выбирает семантику связи, основными из которых являются датаграмма и поток, но есть и другие, более специализированные типы.
  • протокол выбирает протокол для использования, если он установлен на 0, будет использоваться протокол по умолчанию для комбинации домена и типа.