The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Представлен SSH3, вариант протокола SSH, использующий HTTP/3, opennews (?), 17-Дек-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


37. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +/
Сообщение от Аноним (37), 17-Дек-23, 14:56 
Спрошу тебя как эксперта по TCP. Почему TCP (или его преемник) не реализован просто как надстройка над UDP? Ну то есть вот есть IP, UDP к нему добавляет порты. TCP к IP добавляет порты + машину состояний + поля для синхронизации машин состояний приёмника и передатчика. Таким образом получается, что функциональность TCP есть надмножество функциональности UDP. Перепроектирование TCP поверх UDP (назовём его TCP/UDP) позволит выбирать, где обрабатывать TCP/UDP-соединения, в юзерспейсе или в ядре. Структура пакета почти та же, только без портов, за которые уже UDP-слой отвечает. Какой именно протокол слушается на порту - определяется открытым сокетом. Открывается TCP/UDP сокет - он ведёт себя как TCP, открывается UDP-сокет - машину состояний реализует сам процесс. Поскольку это UDP, то никаких особых привилегий, как для отправки сырых IP пакетов, процессу не нужно.
Ответить | Правка | Наверх | Cообщить модератору

60. "Представлен SSH3, вариант протокола SSH, использующий HTTP/3"  +/
Сообщение от Аноним (26), 17-Дек-23, 17:25 
QUIC по большому счёту и является перепроектированием TCP поверх UDP. Если его "наивно" использовать, то там все те же параметры, что и для контроля потока TCP и используются, и даже те же самые алгоритмы контроля congestion: cubic, bbr.
И за порты там UDP и отвечает. В этом смысле система "практически" обратно совместима, с точки зрения "открыть сокет и писать". Собственно, библиотека QUIC не зря называется ngTCP2.

Естественно, при этом радость от QUIC не очень велика, хотя уже приятно, что можно выставлять некоторые флаги самому.
Что больше радует -- это что можно установить изначальное соединение "по tcp2", вести "сигнальный канал" с сохранением надёжности (но медленно), но параллельно открыть DATAGRAM-канал, и по нему уже слать данные с собственной коррекцией ошибок (или без неё). А для внешнего наблюдателя это всё равно будет всего-навсего "зашифрованный UDP поток".

Почему так было не сделано "давно"? Не знаю, я тогда не жил, но тогда казалось, что "правильная абстракция" -- это "номер протокола IP". В /etc/protocols куча всяких древних стандартов перечисленно. В каком-то смысле это казалось логичным -- ведь если какая-нибудь "фича" реализовывалась на уровне "системных протоколов", как, например, ipsec, то она "автоматом" распространялась на все протоколы уровнями выше, независимо от того, был там контроль доставки, или не было, были порты, или не было.

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру