wcf networking tcp osi

wcf - ¿Por qué Tcp más rápido que http?



networking osi (3)

Noté la etiqueta de WCF, así que supongo que estás comparando NetTcp con, por ejemplo, BasicHttp. Como señaló @Marcelo Cantos, ambos manejan el protocolo TCP.

Mientras que BasicHttpbinding usa HTTP para el transporte, un mensaje primero se encapsula en XML (que es bastante prolijo y ansioso de datos) y luego se envía a través de HTTP, usando muchos datos para los encabezados.

Por el contrario, NetTcp utiliza un protocolo (¿propietario?), Donde la codificación del mensaje y los encabezados están específicamente diseñados para reducir el uso del ancho de banda.

En un escenario común, no verá ninguna diferencia, pero cuando se trata de muchas solicitudes o grandes cantidades de datos (especialmente datos binarios, que deben codificarse para que quepan en XML, lo que aumenta su tamaño), puede obtener beneficios al usar NetTcp.

Tuve una discusión con mi gerente, dijo que tcp es más rápido que http porque tcp es trabajar en una capa más baja que http.

Luego recuerdo sobre el Modelo OSI que aprendí en la universidad, así que creo que lo que quiso decir es que el trabajo http en la capa de aplicación pero el tcp funcionan en la capa de transporte (que está 2 capas por debajo), es más rápido ...

Entonces mi pregunta es :

  1. ¿Las capas inferiores funcionan más rápido que las capas superiores porque hay menos capas a las que se debe acceder cuando se hacen transferencias de datos entre dos computadoras?

  2. Si es así, eso significa que cuando usemos tcp (es decir, con WCF), la comunicación se iniciará en las capas de transporte => abajo a la capa física => la capa física de otro equipo => hacia arriba para transportar las capas? Pero a pesar de que la aplicación aún necesita comprender los datos, ¿todavía tendrá que pasar a la capa de aplicación?

Gracias por adelantado.


Siempre hay una capa por encima de TCP. La pregunta es realmente acerca de la cantidad de sobrecarga que agrega el material por encima del TCP. HTTP es relativamente grueso porque cada transmisión requiere un manojo de cruzado de encabezado tanto en la solicitud como en la respuesta. También tiende a usarse en un modo sin estado, por lo que cada solicitud / respuesta usa una sesión TCP separada. Keep-Alives puede mejorar la sesión por solicitud, pero no los encabezados.


Tiene razón: TCP y HTTP son protocolos que operan en diferentes capas.

En general: para que las aplicaciones utilicen la red, necesitan operar en la capa de aplicación. La velocidad que va un protocolo dado depende de la sobrecarga que demanda. HTTP normalmente opera a través de TCP, por lo que requiere toda la sobrecarga de TCP, toda la sobrecarga de las capas en TCP y toda la sobrecarga que HTTP requiere (tiene algunos encabezados bastante grandes).

En esencia, comparas manzanas con naranjas al comparar las velocidades de TCP y HTTP. Tiene más sentido comparar TCP versus UDP frente a otros protocolos de capa de transporte, y HTTP vs FTP frente a otros protocolos de capa de aplicación.