.\" -*- coding: UTF-8 -*- .\" Copyright 1999, Andi Kleen .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-1-para .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ip 7 "8 Febrero 2026" "Linux man\-pages 6.18" .SH NOMBRE ip \- Implementación del protocolo IPv4 en Linux .SH SINOPSIS .nf .\" .B #include -- does not exist anymore .\" .B #include -- never include \fB#include \fP \fB#include \fP \fB#include \fP/* contiene a los anteriores */ .P \fItcp_socket\fP\fB = socket(AF_INET, SOCK_STREAM, 0);\fP \fIudp_socket\fP\fB = socket(AF_INET, SOCK_DGRAM, 0);\fP \fIraw_socket\fP\fB = socket(AF_INET, SOCK_RAW, \fP\fIprotocolo\fP\fB);\fP .fi .SH DESCRIPCIÓN Linux implementa el Protocolo de Internet (Internet Protocol, IP), version 4, descrito en RFC\ 791 y RFC\ 1122. \fBip\fP contiene una implementación de multidestino del Nivel 2 según el RFC\ 1112. También contiene un enrutador IP incluyendo un filtro de paquetes. .P La interfaz del programador es compatible con la de los conectores BSD. Consulte \fBsocket\fP(7) para más información sobre conectores. .P Los conectores IP se generan mediante \fBsocket\fP(2): .P .in +4n .EX socket(AF_INET, socket_type, protocolo); .EE .in .P Los tipos de conector válidos serían \fBSOCK_STREAM\fP para un conector de flujo, \fBSOCK_DGRAM\fP para abrir un conector de datagrama y \fBSOCK_RAW\fP para abrir un conector \fBraw\fP(7) que accede al protocolo IP directamente. .P \fIprotocol\fP representa el protocolo IP en el encabezado IP que se envía o recibe. Valores validos para \fIprotocol\fP serían: .IP \[bu] 3 0 y \fBIPPROTO_TCP\fP para conectores de flujo \fBtcp\fP(7); .IP \[bu] 0 y \fBIPPROTO_UDP\fP para conectores de datagrama \fBudp\fP(7); .IP \[bu] \fBIPPROTO_SCTP\fP para conectores de flujo \fBsctp\fP(7); y .IP \[bu] \fBIPPROTO_UDPLITE\fP para conectores de datagrama \fBudplite\fP(7). .P Para \fBSOCK_RAW\fP puede definir un protocolo IP válido según el IANA tal como se define en el RFC\ 1700. .P Cuando un proceso quiere recibir nuevos paquetes de entrada o conexiones, debe enlazar un conector a una dirección de la interfaz local usando \fBbind\fP(2). Sólo se puede ligar un conector IP a un par (dirección, puerto) dado. Cuando en la llamada a \fBbind\fP se especifica \fBINADDR_ANY\fP, el conector será ligado a \fItodas\fP las interfaces locales. Cuando se llama a \fBconnect\fP(2) con un conector no enlazado, el conector será automáticamente ligado a un puerto aleatorio libre cuya dirección local sea \fBINADDR_ANY\fP. .P Una dirección local de conector TCP que haya sido enlazada, no estará disponible durante un cierto tiempo después de que se cierre, a menos que se haya activado la opción \fBSO_REUSEADDR\fP. Se debe tener cuidado al usar esta opción ya que hace que TCP sea menos fiable. .SS "Formato de las direcciones" An IP socket address is defined as a combination of an IP interface address and a 16\-bit port number. The basic IP protocol does not supply port numbers, they are implemented by higher level protocols like \fBudp\fP(7) and \fBtcp\fP(7). On raw sockets \fI.sin_port\fP is set to the IP protocol. .P See \fBsockaddr_in\fP(3type). .P \&\fI.sin_family\fP is always set to \fBAF_INET\fP. This is required; in Linux 2.2 most networking functions return \fBEINVAL\fP when this setting is missing. \&\fI.sin_port\fP contains the port in network byte order. The port numbers below 1024 are called \fIprivileged ports\fP (or sometimes: \fIreserved ports\fP). Only a privileged process (on Linux: a process that has the \fBCAP_NET_BIND_SERVICE\fP capability in the user namespace governing its network namespace) may \fBbind\fP(2) to these sockets. Note that the raw IPv4 protocol as such has no concept of a port, they are implemented only by higher protocols like \fBtcp\fP(7) and \fBudp\fP(7). .P \&\fI.sin_addr\fP is the IP host address. The \fI.s_addr\fP member of the \fBin_addr\fP(3type) structure contains the host interface address in network byte order. \fBin_addr\fP(3type) should be assigned one of the \fBINADDR_*\fP values (e.g., \fBINADDR_LOOPBACK\fP) using \fBhtonl\fP(3) or set using the \fBinet_aton\fP(3), \fBinet_addr\fP(3), \fBinet_makeaddr\fP(3) library functions or directly with the name resolver (see \fBgethostbyname\fP(3)). .P .\" Leave a loophole for XTP @) Las direcciones IPv4 se dividen en direcciones unidestino, de difusión y multidestino. Las direcciones unidestino especifican una única interfaz de un anfitrión, las direcciones de difusión especifican todos los anfitriones de una red y las direcciones multidestino identifican a todos los anfitriones de un grupo multidestino. Sólo se pueden enviar datagramas a o recibir datagramas de direcciones de difusión cuando está activa la opción de conector \fBSO_BROADCAST\fP. En la implementación actual, los conectores orientados a conexión sólo pueden usar direcciones unidestino. .P Dese cuenta que la dirección y el puerto se almacenan siempre en orden de red. En particular, esto significa que necesita llamar a \fBhtons\fP(3) con el número que se ha asignado al puerto. Todas las funciones de manipulación de dirección/puerto en la biblioteca estándar trabajan en orden de red. .SS "Direcciones especiales y reservadas" Hay varias direcciones especiales: .TP \fBINADDR_LOOPBACK\fP (127.0.0.1) siempre hace referencia al equipo local a través del dispositivo loopback; .TP \fBINADDR_ANY\fP (0.0.0.0) representa dirección para vinculación de sockets; .TP \fBINADDR_BROADCAST\fP (255.255.255.255) A packet addressed to \fBINADDR_BROADCAST\fP through a socket which has \fBSO_BROADCAST\fP set will be broadcast to all hosts on the local network segment, as long as the link is broadcast\-capable. .TP Dirección con el número más alto .TQ Dirección con el número más bajo .\" commit 58fee5fc83658aaacf60246aeab738946a9ba516 En cualquier subred IP conectada localmente no punto a punto con un tipo de enlace que admita transmisiones, la dirección con el número más alto (por ejemplo, la dirección .255 en una subred con máscara de red 255.255.255.0) se designará como dirección de transmisión. No es práctica asignarla a una interfaz individual y solo se podrá direccionar con un socket en el que se haya configurado la opción \fBSO_BROADCAST\fP. Históricamente, los estándares de Internet también han reservado la dirección con el número más bajo (por ejemplo, la dirección .0 en una subred con máscara de red 255.255.255.0) para transmisión, aunque suele considerarse 'obsoleta' para este propósito. Algunas fuentes también se refieren a esto como 'dirección de red'. A partir de la versión 5.14 de Linux , se trata como una dirección de unidifusión ordinaria y se puede asignar a una interfaz. .P Los estándares de Internet tradicionalmente también han reservado varias direcciones para usos particulares, aunque Linux ya no las trata de manera especial. .TP [0.0.0.1, 0.255.255.255] .TQ [240.0.0.0, 255.255.255.254] .\" commit 96125bf9985a75db00496dd2bc9249b777d2b19b .\" commit 1e637c74b0f84eaca02b914c0b8c6f67276e9697 Las direcciones en estos intervalos (0/8 y 240/4) están reservadas globalmente. Desde Linux 5.3 y Linux 2.6.25, respectivamente, las direcciones 0/8 y 240/4, distintas de \fBINADDR_ANY\fP y \fBINADDR_BROADCAST\fP, se tratan como direcciones de unidifusión ordinarias. Estas direcciones se consideraron siempre reservadas y, tradicionalmente, los equipos no pueden interoperar con ellas. .TP [127.0.0.1, 127.255.255.254] Las direcciones en este intervalo (127/8) se tratan como direcciones de loopback similares a la dirección loopback local estandarizada \fBINADDR_LOOPBACK\fP (127.0.0.1); .TP [224.0.0.0, 239.255.255.255] Las direcciones en este rango (224/4) están dedicadas al uso de multidifusión. .SS "Opciones de los conectores" See \fBIPPROTO_IP\fP(2const). .SS "Interfaces /proc" See \fBproc_sys_net_ipv4\fP(5). .SS Ioctls Todas las ioctls descritas en \fBsocket\fP(7) se aplican a \fBip\fP. .P .\" FIXME Add a discussion of multicasting Las ioctls para configurar los parámetros de los dispositivos genéricos se describen en \fBnetdevice\fP(7). .SH ERRORES .\" FIXME document all errors. .\" We should really fix the kernels to give more uniform .\" error returns (ENOMEM vs ENOBUFS, EPERM vs EACCES etc.) .TP \fBEACCES\fP El usuario intentó ejecutar una operación sin los permisos necesarios. Estos incluyen: enviar un paquete a una dirección de transmisión sin tener configurado el indicador \fBSO_BROADCAST\fP; enviar un paquete a través de una ruta \fIprohibida\fP; modificar la configuración del firewall sin privilegios de administrador (la capacidad \fBCAP_NET_ADMIN\fP); enlazar a un puerto privilegiado sin privilegios de administrador (la capacidad \fBCAP_NET_BIND_SERVICE\fP). .TP \fBEADDRINUSE\fP Se ha intentado el enlace a una dirección ya en uso. .TP \fBEADDRNOTAVAIL\fP Se ha solicitado una interfaz inexistente o la dirección fuente solicitada no es local. .TP \fBEAGAIN\fP La operación se bloquearía sobre un conector bloqueante. .TP \fBEALREADY\fP Ya se está realizando una operación de conexión sobre un conector no bloqueante. .TP \fBECONNABORTED\fP Se ha cerrado la conexión durante un \fBaccept\fP(2). .TP \fBEHOSTUNREACH\fP Ninguna entrada válida de la tabla de enrutamiento coincide con la dirección de destino. Este error puede ser provocado por un mensaje ICMP procedente de un enrutador remoto o por la tabla local de enrutamiento. .TP \fBEINVAL\fP Se ha pasado un argumento inválido. Para las operaciones de envío, éste se puede producir al enviar a una ruta \fIblackhole\fP. .TP \fBEISCONN\fP Se ha llamado a \fBconnect\fP(2) sobre un conector ya conectado. .TP \fBEMSGSIZE\fP El datagrama es mayor que una MTU de la ruta y no puede ser fragmentado. .TP \fBENOBUFS\fP .TQ \fBENOMEM\fP No hay suficiente memoria libre. Esto a menudo significa que la reserva de memoria está limitada por los límites del búfer de conectores, no por la memoria del sistema, aunque esto no es coherente al 100%. .TP \fBENOENT\fP Se ha llamado a \fBSIOCGSTAMP\fP sobre un conector en donde no han llegado paquetes. .TP \fBENOPKG\fP No se ha configurado un subsistema del núcleo. .TP \fBENOPROTOOPT\fP .TQ \fBEOPNOTSUPP\fP Se han pasado opciones de conector inválidas. .TP \fBENOTCONN\fP La operación solo está definida en un conector conectado pero el conector no está conectado. .TP \fBEPERM\fP El usuario no tiene permiso para establecer una prioridad alta, cambiar la configuración o enviar señales al proceso o grupo solicitado. .TP \fBEPIPE\fP La conexión ha sido cerrada o cancelada por el otro extremo. .TP \fBESOCKTNOSUPPORT\fP El conector no está configurado o se ha solicitado un tipo de conector desconocido. .P Los protocolos superpuestos pueden generar otros errores. Vea \fBtcp\fP(7), \fBraw\fP(7), \fBudp\fP(7) y \fBsocket\fP(7). .SH NOTAS Debe tenerse especial precaución con la opción \fBSO_BROADCAST\fP: no tiene privilegios en Linux y es fácil sobrecargar la red con transmisiones descuidadas. Para nuevos protocolos de aplicación, es preferible utilizar un grupo de multidifusión en lugar de transmisión. Se desaconseja la radiodifusión. Consulte RFC 6762 para ver un ejemplo de un protocolo (mDNS) que utiliza el enfoque de multidifusión más moderno para comunicarse con un grupo abierto de hosts en la red local. .P El empleo de la opción de nivel \fBSOL_IP\fP en conectores no es portable. Las pilas basadas en BSD emplean el nivel \fBIPPROTO_IP\fP .P \fBINADDR_ANY\fP (0.0.0.0) y \fBINADDR_BROADCAST\fP (255.255.255.255) son neutrales en el orden de bytes. Esto hace que \fBhtonl\fP(3) no tenga ningún efecto sobre ellos. .SS Compatibilidad Por compatibilidad con Linux 2.0, todavía se soporta la sintáxis obsoleta \fBsocket(AF_INET, SOCK_PACKET, \fP\fIprotocol\fP\fB)\fP para abrir un conector de paquetes (\fBpacket\fP(7)). Se recomienda no usar esta sintaxis y debería reemplazarse por \fBsocket(AF_PACKET, SOCK_RAW, \fP\fIprotocol\fP\fB)\fP. La principal diferencia es la nueva estructura de direcciones \fIsockaddr_ll\fP para la información genérica de la capa de enlace en lugar de la antigua \fBsockaddr_pkt\fP. .SH ERRORES Hay demasiados valores de error inconsistentes. .P El error utilizado para diagnosticar el agotamiento del intervalo de puertos efímeros difiere entre las distintas llamadas al sistema que pueden asignar puertos efímeros (\fBconnect\fP(2), \fBbind\fP(2), \fBlisten\fP(2), \fBsendto\fP(2). .P .\" .P .\" Some versions of glibc forget to declare .\" .IR in_pktinfo . .\" Workaround currently is to copy it into your program from this man page. No se han descrito las ioctls para configurar las opciones de interfaz específicas de IP y las tablas ARP. .P .\" .SH AUTHORS .\" This man page was written by Andi Kleen. Recibir la dirección de destino original con \fBMSG_ERRQUEUE\fP en \fImsg_name\fP mediante \fBrecvmsg\fP(2) no funciona en algunos núcleos de Linux 2.2. .SH "VÉASE TAMBIÉN" \fBIPPROTO_IP\fP(2const), \fBrecvmsg\fP(2), \fBsendmsg\fP(2), \fBbyteorder\fP(3), \fBcapabilities\fP(7), \fBicmp\fP(7), \fBipv6\fP(7), \fBnetdevice\fP(7), \fBnetlink\fP(7), \fBraw\fP(7), \fBsocket\fP(7), \fBtcp\fP(7), \fBudp\fP(7), \fBip\fP(8) .P The kernel source file \fIDocumentation/networking/ip\-sysctl.rst\fP. .P RFC\ 791 para la especificación IP original. RFC\1122 para los requerimientos IPv4 para lo anfitriones. RFC\ 1812 para los requeremientos IPv4 para los enrutadores. .PP .SH TRADUCCIÓN La traducción al español de esta página del manual fue creada por Juan Piernas , Miguel Pérez Ibars y Marcos Fouces . .PP Esta traducción es documentación libre; lea la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD. .PP Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a .MT debian-l10n-spanish@lists.debian.org .ME .