2010-08-19 8 views
5

No puedo entender o captar algo; lo que significa programar en una capa más baja en la programación del socket. Estoy acostumbrado a trabajar con sockets de sistema tcp/udp /. Estos están todos envueltos en sus propias especificaciones de protocolo ... que, según entiendo, lo haría funcionar en la capa de aplicación en la pila.Programación del zócalo en el nivel bajo

En el proyecto en el que estoy, he visto algunos archivos que son "nombrados" LinkLayer, TransportLayer ... pero no veo más llamadas que llamadas de socket estándar .... send/recv/seletct ...

¿El hecho de que esté configurando las opciones de un socket significa que está programando en un nivel inferior? ¿Está solo restringido a eso? ¿O hay otras API que le otorgan acceso en la representación en kernel?

Respuesta

9

Normalmente, esto se refiere al uso de sockets SOCK_RAW, lo que requiere que ensamble sus propios encabezados de paquetes, calcule sumas de comprobación, etc. Aún utiliza send/recv/etc. pero ahora usted es responsable de asegurarse de que cada bit esté en el lugar correcto.

Puede usar sockets SOCK_RAW para implementar protocolos distintos de TCP o UDP, o para hacer cosas con los protocolos de Internet que las interfaces de mayor nivel no admiten (como ajustar el TTL de sus paquetes para implementar algo como traceroute).

2

Esto generalmente significa trabajar en una OSI-Layer inferior, por ejemplo, no enviar directamente flujos TCP o paquetes UDP, sino crear paquetes propios IP o incluso Ethernet u otros protocolos de capa baja que, en el caso normal, ser manejado por el sistema operativo.

Esto se puede hacer a través de opciones de socket específicas que le permiten recibir o enviar datos en cualquier capa, incluso en la capa 2 (Enlace de datos).

Cuestiones relacionadas