Сокеты интернет-домена: TCP, UDP, SSL и TLS

Транспорты для сокетов интернет-домена: ssl://, tls://, sslv2:// и sslv3://.

Замечание: Транспорты sslv2:// и sslv3:// устарели. Документацию к этим транспортам сохранили только в целях обратной совместимости.

Замечание: Функции автоматически выберут транспорт tcp://, если другой не указали.

  • 127.0.0.1
  • fe80::1
  • www.example.com
  • tcp://127.0.0.1
  • tcp://fe80::1
  • tcp://www.example.com
  • udp://www.example.com
  • ssl://www.example.com
  • tls://www.example.com

Наряду с целевым адресом сокеты интернет-домена ожидают номер порта. При работе с функцией fsockopen() порт указывается вторым параметром и поэтому не влияет на формирование URL-адреса транспорта. При работе с функцией stream_socket_client() и другими функциями для работы с потоками, как и при работе с традиционными URL-адресами, номер порта указывается как суффикс — через двоеточие в конце транспортного URL-адреса.

  • tcp://127.0.0.1:80
  • tcp://[fe80::1]:80
  • tcp://www.example.com:80

Замечание: Числовые IPv6-адреса с номерами портов
Хотя во втором примере IPv4-адреса и имя хоста не изменились, за исключением добавления номера порта после двоеточия, IPv6-адрес обрамили квадратными скобками: [fe80::1]. Квадратные скобки помогают отличать двоеточия в IPv6-адресе и двоеточие, которое отделяет номер порта.

Транспорты ssl:// и tls://, которые доступны, только если PHP скомпилировали с поддержкой модуля openssl, — расширяют транспорт tcp:// для включения SSL-шифрования.

Транспорт ssl:// попытается согласовать безопасное SSL/TLS-соединение на основе протоколов и алгоритмов шифрования, доступных клиенту и удалённому хосту. Конкретные протоколы определяются конфигурацией библиотеки OpenSSL и параметрами функции stream_context_create() наподобие опции ssl.crypto_method.

Протоколы SSLv2 и SSLv3 устарели и небезопасны. Разработчики PHP и библиотеки OpenSSL больше не включают поддержку этих версий по умолчанию и настоятельно не рекомендуют обмениваться данным по устаревшим протоколам.