“Conocimiento Sistemas>unix

¿Cuáles son las opciones de socket en UNIX?

2014/5/19
Las opciones de socket en UNIX son parámetros que controlan el comportamiento de un socket. Le permiten ajustar varios aspectos de la comunicación de la red, como el nivel de verificación de errores, la forma en que se transmiten los datos y el rendimiento general de su aplicación. Estas opciones se establecen utilizando la llamada y recuperación del sistema `setSockOpt ()` usando `getSockOpt ()`.

Las opciones de socket están organizadas por *niveles *y *nombres *. El nivel especifica la capa de protocolo a la que se aplica la opción, mientras que el nombre identifica la opción específica dentro de ese nivel. Los niveles comunes incluyen:

* `sol_socket`: Este nivel se aplica a todos los tipos de sockets. Las opciones en este nivel afectan el comportamiento general del socket. Los ejemplos incluyen:

* `so_reUSeaddr`: Permite vincularse a un puerto que ya está en el estado de Time_Wait. Útil para servidores que necesitan reiniciar rápidamente.

* `so_reusePort`: Permite que múltiples procesos se unan a la misma dirección y puerto. Útil para el equilibrio de carga y la agrupación del servidor.

* `so_broadcast`: Habilita el envío de mensajes de transmisión.

* `so_keepalive`: Permite las sondas Keep-Alive para detectar conexiones rotas.

* `so_linger`: Controla cómo se comporta el enchufe cuando se está cerrado. Permite el cierre elegante o el cierre inmediato.

* `so_sndbuf` y` so_rcvbuf`: Establezca los tamaños de búfer de envío y recepción, respectivamente. Ajustarlos puede mejorar el rendimiento.

* `so_error`: Recupera condiciones de error pendientes en el enchufe.

* `ipproto_ip`: Este nivel se aplica a los enchufes IPv4. Las opciones aquí influyen en cómo la capa IP maneja los paquetes. Los ejemplos incluyen:

* `ip_tos`: Establece el tipo de bits de servicio (TOS) en el encabezado IP. Utilizado para consideraciones de calidad de servicio (QoS).

* `ip_ttl`: Establece el valor de tiempo para vivir (TTL), lo que limita la vida útil de un paquete.

* `ipproto_ipv6`: Este nivel es similar a `ipproto_ip` pero para enchufes IPv6. Muchas opciones son análogas a sus contrapartes IPv4.

* `ipproto_tcp`: Este nivel se aplica a los enchufes TCP. Las opciones aquí controlan los comportamientos específicos de TCP. Los ejemplos incluyen:

* `tcp_nodelay`: Desactiva el algoritmo Nagle, que amortigua los paquetes pequeños antes de enviar. Útil para aplicaciones interactivas, pero puede reducir la eficiencia para las transferencias a granel.

* `ipproto_udp`: Este nivel se aplica a los enchufes UDP. Las opciones aquí son relativamente pocas en comparación con TCP.

Ejemplo (c):

Este ejemplo muestra cómo establecer la opción `So_reUSeaddr` usando` setSockOpt () `:

`` `C

#Include

#Include

#Include

#Include

#Include

#Include

#include

int main () {

int Sockfd;

struct sockaddr_in serv_addr;

int opt ​​=1; // para habilitar so_reusaaddr

sockfd =socket (AF_INET, SOCK_STREAM, 0);

if (Sockfd <0) {

perror ("error de apertura del socket");

salida (1);

}

if (setSockOpt (Sockfd, sol_socket, so_reUSeaddr, &opt, sizeof (opt)) <0) {

Perror ("SetSockopt falló");

salida (1);

}

// ... el resto de su código de socket ...

cerrar (Sockfd);

regresar 0;

}

`` `` ``

Este fragmento de código crea un socket TCP y establece la opción `So_reUSeaddr`. El manejo de errores se incluye para mostrar las mejores prácticas. Recuerde consultar las páginas manuales de su sistema (`Man 7 Socket`) para una lista completa de las opciones de socket disponibles y su uso. La disponibilidad y el comportamiento de opciones específicas pueden variar ligeramente dependiendo del sistema operativo y la versión del núcleo.

unix
Cómo hacer un tutorial de Unix
Cómo calcular mi nota media en UNIX
¿Cómo se mueve un archivo en UNIX usando el direccionamiento relativo?
¿Cuál es el mensaje en la línea de comando en UNIX?
Cómo apagar o reiniciar una máquina UNIX
¿Cuál es la diferencia entre y como se define en MIL-STD-2167A?
Cómo aprender el sistema operativo Unix
Cómo solucionar problemas de redes en Unix
Conocimiento de la computadora © http://www.ordenador.online