Во-первых, перестаньте говорить SSL. Его преемником является TLS, и в январе ему исполнится 20 лет.
TLS - это протокол, обычно устанавливаемый поверх TCP (другие варианты также могут использовать UDP), который предоставляет помимо функций TCP некоторые новые функции, касающиеся аутентификации конечных точек, а также конфиденциальности и целостности транспорта.
В некотором смысле вы можете понять, что он находится между TCP и протоколом приложений более высокого уровня, таким как HTTP.
Другими словами, вы можете использовать многие другие протоколы поверх TLS: у вас есть все связанные с электронной почтой протоколы (SMTP, IMAP, POP и т. Д.), Вы можете использовать FTP поверх него (хотя, вероятно, в настоящее время это не очень хорошая идея) XMPP для связи в реальном времени и т. Д.
Короче говоря, любой протокол, использующий TCP, может использовать TLS с некоторой адаптацией.
Так что HTTP является одним из примеров среди других. HTTP находится между HTTP-клиентом и HTTP-сервером или для краткости веб-сервером.
Браузер - это HTTP-клиент. Один из многих. Когда вы используете curl
или wget
, вы также являетесь клиентом HTTP. Поэтому, если какой-либо HTTP-клиент получает доступ к ссылке http://
, он сначала выполняет рукопожатие TLS, после подключения TCP и перед началом выполнения действий, действительно связанных с протоколом HTTP.
У вас есть специализированные библиотеки, работающие с TLS, так что не всем программам нужно заново все об этом перекодировать, поскольку это также сложно.