В контексте bittorrent какая разница между трекерами http и udp? HTTP - это протокол прикладного уровня, а UDP - протокол транспортного уровня, поэтому концепции кажутся непересекающимися. Я нашел эту статью, но она не говорит, почему UDP быстрее, чем HTTP, это не имеет смысла, потому что HTTP может происходить по UDP.
1 ответ
Для объявления UDP - насколько я знаю - требуется один пакет вверх и один вниз. Постоянное соединение не согласовано или не установлено. Сервер не должен помнить, с какого ip: порта пришло объявление, только на короткое время он решает, что ответить.
HTTP-объявление, однако, работает через TCP-соединение. Это означает, что соединение необходимо согласовать, использовать, а затем разорвать. Все эти шаги требуют более двух пакетов: - согласование: один SYN вверх, SYN-ACK вниз и ACK вверх. - Использование. Если нам повезет, HTTP-запрос помещается в один восходящий пакет. Затем сервер отвечает пакетом ACK, а затем отправляет свой ответ в отдельном пакете. Затем клиент также отвечает пакетом ACK. Конечно, поскольку не клиент определяет, как поток TCP делится на пакеты, а ОС, и запрос, и ответ могут быть фрагментированы на несколько пакетов, каждый из которых требует ACK в ответ. Кроме того, другие сложности, такие как переполнение MTU, могут заставить сервер и клиент повторно посылать эти пакеты, фрагментированные в меньшие размеры. - Для разрыва соединения также требуется три пакета: FIN, FIN-ACK и ACK.
Итак, для HTTP-объявлений требуется как минимум 10 пакетов, но, возможно, больше, чем это, плюс некоторое ожидание, если сеть решит отбросить пакет. В течение всего этого времени сервер (и клиент тоже, но это не имеет большого значения для клиента, это не тот, кому приходится иметь дело со скоростью свыше тысячи объявлений в секунду) должен хранить детали соединения в оперативной памяти , При количестве объявлений, которые делает один клиент, разница незначительна (даже легкий просмотр генерирует больше трафика), но на стороне сервера он складывается в суммы, где 5-кратное уменьшение означает много.