- Теоретически , это правильно.
- Обычные протоколы не используют это, потому что это неэффективно. Клиенту придется разделить потоки данных, чтобы они были различимы. Сервер должен был бы позаботиться об этом, например, упаковав каждый фрагмент данных в контейнер (XML, JSON, Bitorrent-подобный, Вы называете это). А контейнер - это просто ненужные накладные расходы, замедляющие передачу.
Почему нельзя просто открыть несколько сокетов TCP и отправить отдельные запросы по этим нескольким соединениям? Никаких накладных расходов здесь! О, это уже делается, например некоторыми современными веб-браузерами. Используйте wireshark
или tcpdump
для проверки пакетов и убедитесь сами.
Это нечто большее. Для установки сокета TCP требуется время (SYN, некоторое время, SYN + ACK, некоторое время, ACK ...). Кто-то считал, что сбрасывать соединение после каждого запроса - пустая трата времени, поэтому некоторые современные HTTP-серверы и клиенты используют Connection: keep-alive
, чтобы указать, что они хотят повторно использовать соединение.
Извините, но я думаю, что Ваши идеи великолепны, однако Вы можете найти их в RFC. Продолжай думать, но я уверен, что однажды Ты изобретешь что-то блестящее. См. Например здесь для оптимизированного битторрент-клиента.