es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿El protocolo gRPC oculta las conexiones locales?

Estoy jugando con ejemplos de python que vienen con grpc en el directorio de ejemplos \python*, por ejemplo, helloworld. Noté algo interesante: cuando inicio el servidor (en localhost puerto 50051) y luego el cliente, no veo una conexión TCP establecida (con ss -tnep), sin embargo, sí veo el intercambio de paquetes con tcpdump.

Por otro lado, si simplemente hago telnet localhost 50051, el comando ss muestra la conexión. ¿Acaso grpc de alguna manera oculta la conexión cuando se hace a través de localhost, tal vez algún tipo de optimización? ¿O es esto una característica específica de Linux que es explícitamente habilitada por grpc?

Agradecería algunos comentarios que me ayuden a entender esto mejor, ¡gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es posible que grpc esté utilizando un socket de dominio Unix para la comunicación cuando tanto el cliente como el servidor se están ejecutando en la misma máquina local. Los sockets de dominio Unix son una forma de comunicación entre procesos (IPC, por sus siglas en inglés) que permite a los procesos comunicarse entre sí localmente sin la sobrecarga de TCP/IP. Esto podría explicar por qué no ves una conexión TCP utilizando ss -tnep, pero sí ves intercambio de paquetes con tcpdump.

    También es posible que grpc esté utilizando la interfaz de bucle TCP (127.0.0.1), que es una dirección IP especial que se refiere al host local. Esto explicaría por qué puedes ver la conexión TCP utilizando telnet localhost 50051, pero no con ss -tnep (ya que ss solo muestra conexiones TCP en direcciones que no son de bucle).

    En general, el mecanismo exacto que grpc utiliza para la comunicación local puede depender de las opciones de configuración específicas utilizadas al configurar el servidor y el cliente. También es posible que grpc esté utilizando una combinación de sockets de dominio Unix y conexiones TCP de bucle, dependiendo de los detalles del patrón de comunicación.

Comments are closed.