HTTP через AF_UNIX: HTTP-соединение с сокетом unix

У нас есть HTTP-сервер, для которого у нас нормально работает HTTP-клиентское приложение (в Linux).

Но теперь нам нужно прослушивать сокеты домена Unix из нашего клиентского приложения. Так можно ли отправить / получить пакет httprequest, httpresponse из сокета домена unix?

Scenerio1: при подключении к localhost требуется устранить накладные расходы SSL, подключив HTTP к сокету unix вместо HTTPS к локальному порту.

В основном ищу стандартную кодировку пути сокета unix в URL-адресе HTTP.

Спасибо заранее.


person Rohit    schedule 08.02.2013    source источник


Ответы (1)


Пока ваш сокет является потоковым сокетом (SOCK_STREAM, а не SOCK_DGRAM), это технически возможно. В HTTP нет ничего, что требовало бы TCP / IP, ему просто нужен надежный двунаправленный поток.

Однако я никогда не видел HTTP-клиента, который знает, как подключиться к такому сокету. Я знаю, что не существует формата URL-адреса, который бы работал, если вам действительно нужно использовать URL-адрес для связи с сервером.

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

РЕДАКТИРОВАТЬ. Я только что видел ваше изменение, касающееся сопоставления localhost с сокетом UNIX. Это вполне возможно, вам просто нужно убедиться, что клиент знает, как найти путь к сокету UNIX, который следует использовать вместо подключения к 127.0.0.1:xxx

person Alnitak    schedule 08.02.2013
comment
@PowerPC Насколько я знаю (я смотрел), не существует определенной схемы URL-адресов для HTTP, которая позволяет вам указывать путь к сокету вместо имени хоста. Я знаю приложения (например, MySQL), которые используют подход простого преобразования localhost для использования сокета UNIX вместо TCP / IP. - person Alnitak; 08.02.2013
comment
И Curl, и Go теперь поддерживают это, например, недавно curl curl -v --unix-socket /var/run/docker.sock http:/containers/json будет разговаривать с Docker, у которого есть реализация Go через сокеты unix. - person Justin Cormack; 07.06.2016
comment
На Python для этой цели существует библиотека requests-unixsocket, использующая нестандартную схему. http+unix://%2Fpath%2Fto%2Fsocket/url-path - person Jean Hominal; 06.03.2020