/ / Flujo de llamadas TCP en el kernel de Linux - linux, sockets, tcp, linux-kernel

Flujo de llamadas TCP en el kernel de Linux - linux, sockets, tcp, linux-kernel

Estoy tratando de obtener el flujo de llamadas TCP dentro de laKernel de Linux con una versión 3.8 para diferentes API de espacio de usuario, tales como conectar, enlazar, escuchar y aceptar. ¿Puede alguien proporcionarme un diagrama de flujo para llamadas de flujo? Pude encontrar el flujo de datos mediante las API de envío y recuperación.

Otra pregunta, cuando un cliente se conecta a un servidor, el servidor crea un nuevo socket para ese cliente para esa conexión específica devuelta por el accept API. Mi pregunta, ¿el kernel de Linux mantiene alguna relación entre el socket de escucha y el socket derivado de él en alguna tabla hash bind o no?

Respuestas

1 para la respuesta № 1

1ª pregunta:

http://www.danzig.jct.ac.il/tcp-ip-lab/ibm-tutorial/3376c210.html

Todas las conferencias en Haifux son clásicas:

http://www.haifux.org/lectures/172/netLec.pdf

http://www.haifux.org/lectures/217/netLec5.pdf

Y esto es del autor / mantenedor original en linux networking:

http://vger.kernel.org/~davem/skb.html

http://vger.kernel.org/~davem/tcp_output.html

http://vger.kernel.org/~davem/tcp_skbcb.html

2ª pregunta: Sí, todas las conexiones existentes se mantienen en una tabla crítica: tcp_hashinfo. Su "dirección de memoria se puede leer desde / proc / kallsyms." Crítica "porque la lectura requiere un bloqueo, así que no intente caminar sobre la mesa aunque tenga la dirección. Use símbolos exportados globalmente como "inet_lookup_listener" o "inet_lookup_established" para caminar por la tabla en su lugar.

Más información aquí:

¿Cómo identificar un socket específico entre User Space y Kernel Space?


1 para la respuesta № 2

Diagramas de flujo? ¿Diagramas de flujo? De ninguna manera. Nos encantaría tenerlos, pero no existen, pero puede revisar el código; Parches felizmente revisados.

Un socket devuelve un descriptor de archivo; el procesoLa tabla de descriptores de archivos mantiene la asociación entre el socket y las otras estructuras de datos del kernel. El descriptor de archivos hace que esta sea una operación de indexación de matriz simple, no se necesita hash.