TCP-розетки розроблені так, щоб вони були надійними, тому загалом вони використовуються для ідентифікації сеансів. Такі протоколи, як SSH та ftp, роблять саме це.
HTTP розроблений таким, що не має статусу, і кожне з'єднання асоціюється лише з ресурсом для завантаження. Після завантаження ресурсу сокет TCP, на який їде запит HTTP, закривається. Первісна причина цього - простота. Але побічним ефектом є те, що сервери HTTP, що працюють на сучасних веб-сайтах, можуть обробляти набагато більше користувачів, ніж сервери на базі сокетів, як SSH або ftp.
Тому сокети не можна використовувати, оскільки HTTP закриє сокет після завантаження веб-сторінки.
Звичайно, сказати, що HTTP закриє сокет на ресурс, це надто спрощує речі, оскільки HTTP має такі функції, як конвеєрне з'єднання та стійкі з'єднання, які можуть завантажувати кілька ресурсів у сокет. Але це лише оптимізація. Після того, як все завантажено, ваш браузер закриє сокет через деякий час.
HTTP спочатку був розроблений як простий протокол для завантаження HTML-файлів. Старі браузери також можуть завантажувати HTML-файли з інших протоколів, таких як Gopher та ftp. Таким чином, не було жодної причини робити HTTP статним, оскільки HTML-файли - це просто прості текстові файли.
Після введення веб-форм і HTML-сторінок можуть надсилати дані назад на веб-сторінки сервера, для яких потрібні сеанси. Таким чином, файли cookie були створені для повторного введення стану в протокол без стану, який передається через стаціонарний рівень передачі, який передається через мережевий рівень без стану. Таким чином, повні шари додатків:
- Ethernet, Wifi тощо = без громадянства
- IP = без громадянства
- TCP = видатний
- HTTP = стан без громадянства
- HTTP + файли cookie = великі
У наші дні у нас є веб-розетки, які можуть зберігати один відкритий сокет від вашої веб-сторінки до сервера. Отже, за допомогою веб-сокетів ви можете знову використовувати сокети для ідентифікації користувача, оскільки сам веб-сокет є стаціонарним. Але в більшості випадків вам все одно знадобиться cookie для головної сторінки html, що завантажує javascript, що запускає websocket.