8
Direcciones IP, Números de Puertos y Sockets Dirección IP Una dirección IP es un número de 32 bits que identifica de manera lógica y jerárquica a una interfaz de un dispositivo (habitualmente una computadora) dentro de una red que utilice el protocolo IP (Internet Protocol). Direcciones MAC Dicho número es distinto de la dirección MAC que es un número hexadecimal asignado a la tarjeta o dispositivo de red por el fabricante. DHCP La dirección IP de una máquina puede cambiar con la conexión. A esta forma de asignación de dirección IP se denomina una dirección IP dinámica. DHCP (Dynamic Host Configuration Protocol) es un protocolo para asignar direcciones IP dinámicas. Dotted Quad Address En la expresión de direcciones IPv4 en decimal se separa cada octeto por un carácter ".". Cada uno de estos octetos puede estar comprendido entre 0 y 255, salvo algunas excepciones. Los ceros iniciales, si los hubiera, se pueden obviar. Por ejemplo: 164.12.123.65 Netmask Una dirección IP se descompone de forma arbitraria en una parte de red y una parte de máquina. Por

Direcciones ip

Embed Size (px)

Citation preview

Page 1: Direcciones ip

Direcciones IP, Números de Puertos y SocketsDirección IP

Una dirección IP es un número de 32 bits que identifica de manera lógica y jerárquica a una interfaz de un dispositivo (habitualmente una computadora) dentro de una red que utilice el protocolo IP (Internet Protocol).

Direcciones MAC

Dicho número es distinto de la dirección MAC que es un número hexadecimal asignado a la tarjeta o dispositivo de red por el fabricante.

DHCP

La dirección IP de una máquina puede cambiar con la conexión. A esta forma de asignación de dirección IP se denomina una dirección IP dinámica. DHCP (Dynamic Host Configuration Protocol) es un protocolo para asignar direcciones IP dinámicas.

Dotted Quad Address

En la expresión de direcciones IPv4 en decimal se separa cada octeto por un carácter ".". Cada uno de estos octetos puede estar comprendido entre 0 y 255, salvo algunas excepciones. Los ceros iniciales, si los hubiera, se pueden obviar. Por ejemplo: 164.12.123.65

Netmask

Una dirección IP se descompone de forma arbitraria en una parte de red y una parte de máquina. Por ejemplo 164.12.123 puede ser la parte de red y 65 la parte de máquina (host). Para describir en que punto se parte una IP se usa una máscara de red o netmask la cual es un número cuya representación binaria tiene unos en la parte de red.

Clases de Redes

Hay tres clases de direcciones IP que una organización puede recibir de parte de la Internet Corporation for Assigned Names and Numbers(ICANN): clase A, clase B y clase C.

Page 2: Direcciones ip

En una red de clase A, se asigna el primer octeto para identificar la red, reservando los tres últimos octetos (24 bits) para que sean asignados a los hosts.

En una red de clase B, se asignan los dos primeros octetos para identificar la red.

En una red de clase C, se asignan los tres primeros octetos para identificar la red.

Direcciones IPs Reservadas

Hay una serie de direcciones reservadas:

La dirección 0.0.0.0 es utilizada por las máquinas cuando están arrancando o no se les ha asignado dirección.

La dirección que tiene su parte de host a cero sirve para definir la red en la que se ubica. Se denomina dirección de red.

La dirección que tiene su parte de host a uno sirve para comunicar con todos los hosts de la red en la que se ubica. Se denomina dirección de broadcast.

Las direcciones 127.x.x.x se reservan para pruebas de retroalimentación (en términos CIDR la subred 127.0.0.0/8). Se denomina dirección de bucle local o loopback. Cualquier mensaje que se envía a una de estas direcciones es recibido por localhost.

Véase un ejemplo:

pp2@mimaquina:/tmp$ ssh 127.232.101.249The authenticity of host '127.232.101.249 (127.232.101.249)' can't be established.RSA key fingerprint is b6:39:26:69:c3:6e:39:f1:d4:70:36:6c:57:36:98:fa.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '127.232.101.249' (RSA) to the list of known hosts.

Page 3: Direcciones ip

Linux mimaquina.deioc.ull.es 2.6.18-5-686 #1 SMP Mon Dec 24 16:41:07 UTC 2007 i686You have new mail.Last login: Thu Apr 24 15:55:41 2008 from mimaquinapp2@mimaquina:~$

Rangos IP Reservados

Hay ciertas direcciones en cada clase de dirección IP que no están asignadas y que se denominan direcciones privadas. Las direcciones privadas pueden ser utilizadas por los hosts que usan traducción de dirección de red (NAT) para conectarse a una red pública o por los hosts que no se conectan a Internet. En una misma red no puede existir dos direcciones iguales, pero sí se pueden repetir en dos redes privadas que no tengan conexión entre sí o que se sea a través de NAT. Las direcciones privadas son:

Clase A: 10.0.0.0 a 10.255.255.255 (8 bits red, 24 bits hosts) Clase B: 172.16.0.0 a 172.31.255.255 (16 bits red, 16 bits hosts) Clase C: 192.168.0.0 a 192.168.255.255 (24 bits red, 8 bits hosts)

Classless Inter-Domain Routing

El sistema Classless Inter-Domain Routing (CIDR) permite que la máscara de red no tenga que terminar en una frontera de byte. Por ejemplo la dirección 216.240.32.0/27 indica que la máscara de red contiene 27 bits dando lugar a una red de tamaño 32.

El módulo Net::Netmask

El módulo Net::Netmask nos permite calcular las diferentes partes de una máscara en notación CIDR:

pp2@nereida$ perl -MNet::Netmask -wde 0main::(-e:1): 0 DB<1> $x = Net::Netmask->new('216.240.32.0/27') DB<2> p $x->size() # Tamaño de la red32 DB<3> p $x->bits() # Número de bits en la máscara27 DB<4> p $x->hostmask() # Máscara de máquina0.0.0.31

Page 4: Direcciones ip

DB<5> p $x->base() # Primera dirección: red216.240.32.0 DB<6> p $x->broadcast() # Última: broadcast216.240.32.31 DB<7> p $x->mask() # Máscara de red255.255.255.224 DB<8> printf "%b",224 # 3 bits a uno11100000 DB<9> x $x # El objeto0 Net::Netmask=HASH(0x848e7e8) 'BITS' => 27 'IBASE' => 3639615488 DB<10> p $x->match('216.240.32.16') # Pertenece16 DB<11> p $x->match('216.240.29.16') # No pertenece0 DB<13> p "<".$x->match('216.240.32.0').">" <0 > DB<14> p $x->maxblock # Máscara de la dirección de base19 DB<18> @a = $x->enumerate # Enumerar direcciones DB<19> p "@a[0..3,-4..-1]" 216.240.32.0 216.240.32.1 216.240.32.2 216.240.32.3 \216.240.32.28 216.240.32.29 216.240.32.30 216.240.32.31 DB<20> @b = $x->inaddr() # zonas DNS DB<22> $" = "," DB<23> p "@b[-4..-1]",32.240.216.in-addr.arpa,0,31 DB<24>

Zonas

Una zona es una porción del espacio de nombres DNS cuya responsabilidad ha sido delegada a una organización.

Puertos y Sockets

Una vez que el mensaje llega a la IP de destino es necesario conocer a que programa/proceso hay que entregarlo. Esta es la función del número de puerto: un número de puerto es un número de 16 bits (de 1 a 65535) que sirve para identificar el proceso al que entregar el mensaje dentro de la máquina.

Socket

Page 5: Direcciones ip

Un socket es una interfaz de entrada-salida de datos que permite la intercomunicación entre procesos. Los procesos pueden estar ejecutándose en el mismo o en distintos sistemas, unidos mediante una red. Un identificador de socket es una pareja formada por una dirección IP y un puerto. Cuando un programa crea un socket puede solicitarle al sistema operativo que asocie un número de puerto con el socket.

Hay dos tipos de sockets que son especialmente importantes: Streams y Datagrams.

Sockets Stream

Los Sockets Stream son los más utilizados, hacen uso del protocolo TCP, el cual nos provee un flujo de datos bidireccional, secuenciado, sin duplicación de paquetes y libre de errores. La especificación del protocolo TCP se puede leer en la RFC-793 .

Sockets Datagram

Los Sockets Datagram hacen uso del protocolo UDP, el cual nos provee un flujo de datos bidireccional, pero los paquetes pueden llegar fuera de secuencia, pueden no llegar o contener errores. Se llaman también sockets sin conexión, porque no hay que mantener una conexión activa, como en el caso de sockets stream. Son utilizados para transferencia de información paquete por paquete.

Puertos TCP y UDP

De hecho hay dos conjuntos de números de puerto: uno para sockets TCP y otro para sockets UDP. Los números de puerto del 0 al 1023 están reservados para servicios bien conocidos. la mayor parte de los servicios usan bien TCP bien UDP pero hay algunos que pueden comunicar con los dos protocolos. Internet Corporation for Assigned Names and Numbers (ICANN) reserva habitualmente ambos números TCP y UDP para el mismo servicio.

Disponibilidad del Puerto

En algunas versiones de Unix los puertos del 49152 al 65535 se reservan para la asignación automática de conexiones cuando el número de puerto no se ha explicitado. Los restantes en el rango 1024 a 49151 estan libre para uso por nuestras aplicaciones. Es una buena idea comprobar que el número de puerto solicitado esta libre usando, por ejemplo, netstat :

pp2@unamaquina:~/Lbook$ netstat -tActive Internet connections (w/o servers)

Page 6: Direcciones ip

Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 unamaquina:www 200-112-136-16.bbt:3217 SYN_RECVtcp 0 0 unamaquina:www crawl12.exabot.co:35207 TIME_WAITtcp 0 0 unamaquina:www 122.red-83-58-106:10646 FIN_WAIT2tcp 0 0 unamaquina:42373 funchal:ssh ESTABLISHEDtcp 0 0 unamaquina:41987 funchal:ssh ESTABLISHEDtcp 0 0 unamaquina:55541 funchal:ssh ESTABLISHEDtcp 0 0 unamaquina:56452 fk-in-f147.google.c:www ESTABLISHEDtcp 0 0 unamaquina:56451 mg-in-f83.google.co:www ESTABLISHEDtcp 0 0 unamaquina:56462 mg-in-f83.google.co:www ESTABLISHED

Subsecciones

o Dirección IP Direcciones MAC DHCP Dotted Quad Address Netmask Clases de Redes Direcciones IPs Reservadas Rangos IP Reservados Classless Inter-Domain Routing El módulo   Net::Netmask Zonas Puertos y Sockets Socket Sockets Stream Sockets Datagram Puertos TCP y UDP Disponibilidad del Puerto

Page 7: Direcciones ip