Почему Tcp быстрее, чем http? - PullRequest
12 голосов
/ 26 октября 2011

У меня был разговор с моим менеджером, он сказал, что tcp работает быстрее, чем http, потому что tcp работает на уровне ниже, чем http.

Тогда я вспоминаю о OSI Model , которую яЯ учился в университете, так что я думаю, что он имел в виду, потому что http работает на прикладном уровне, а tcp работает на транспортном уровне (то есть на 2 уровня ниже), поэтому быстрее ...

Так что мои вопросы :

  1. Работают ли нижние уровни быстрее, чем верхние, потому что при передаче данных между двумя компьютерами требуется меньше уровней доступа?

  2. Если так, то это значит, что когда мы используем tcp (то есть с WCF), коммуникация будет начинаться на транспортных уровнях => до физического уровня => физического уровня другого компьютера => до транспортных уровней?Но я уверен, что данные все еще должны быть понятны приложению, поэтому они все равно должны перейти на прикладной уровень?

Заранее спасибо.

Ответы [ 3 ]

8 голосов
/ 26 октября 2011

Всегда выше слоя над TCP.Вопрос на самом деле в том, сколько накладных расходов добавляет материал выше TCP.HTTP является относительно коротким, потому что каждая передача требует кучу заголовков в запросе и ответе.Он также имеет тенденцию использоваться в режиме без сохранения состояния, при котором каждый запрос / ответ использует отдельный сеанс TCP.Keep-alives может улучшить сеанс на запрос, но не заголовки.

4 голосов
/ 26 октября 2011

Я заметил тэг WCF, поэтому я полагаю, вы сравниваете NetTcp, например, с BasicHttp.Как отметил @Marcelo Cantos, оба используют протокол TCP.

В то время как привязка BasicHttp использует HTTP для транспорта, сообщение сначала инкапсулируется в XML (что довольно многословно и требует данных), а затем отправляется через HTTP с использованием большого количества данных для заголовков.

Напротив, NetTcp использует (проприетарный?) Протокол, где кодировка и заголовки сообщений специально разработаны для уменьшения использования полосы пропускания.

В обычном сценарии вы не увидите никакой разницы, но при работе с большим количеством запросов или большими объемами данных (особенно двоичных данных, которые должны быть закодированы, чтобы соответствовать XML, что увеличивает его размер),вы можете получить выгоду, используя NetTcp.

3 голосов
/ 26 октября 2011

Вы правы: TCP и HTTP - это протоколы, которые работают на разных уровнях.

В общем: для того, чтобы приложения могли использовать сеть, они должны работать на уровне приложений.Скорость прохождения любого данного протокола зависит от накладных расходов, которые он требует.HTTP обычно работает по протоколу TCP, поэтому для него требуются все издержки TCP, все накладные расходы уровней TCP и все накладные расходы, которые требует сам HTTP (у него довольно большие заголовки).

ВыПо сути сравниваем яблоки с апельсинами, сравнивая скорости TCP и HTTP.Имеет больше смысла сравнивать TCP с UDP и другими протоколами транспортного уровня, а HTTP и FTP с другими протоколами прикладного уровня.

...