sistemas distribuidos :: sesión 05 - sockets
TRANSCRIPT
SISTEMAS DISTRIBUIDOS
Sesión 05 – DNS, ARP, Sockets
DNS
Aplicación
DNS
Domain Name System
base de datos distribuida y jerárquica que
almacena información asociada a nombres de
dominio en redes como Internet
El uso más común es la asignación de nombres de
dominio a direcciones IP
google.com -> 209.85.225.105
Componentes
Cliente
Servidor
Zona de Autoridad
DNS
DNS
Tipos de registros DNS
A – google.com -> 209.85.225.105
CNAME - docs.google.com -> writely.l.google.com
NS – google.com -> ns1.google.com
MX – google.com -> google.com.s9a2.psmtp.com
DNS
nslookup
> google.com
Server: resolver1.opendns.com
Address: 208.67.222.222
Non-authoritative answer:
Name: google.com
Addresses: 209.85.225.106, 209.85.225.99,
209.85.225.103, 209.85.225.147
209.85.225.105, 209.85.225.104
DNS
> set type=all
> google.com
Server: resolver1.opendns.com
Address: 208.67.222.222
Non-authoritative answer:
google.com internet address = 209.85.225.99
google.com internet address = 209.85.225.103
google.com internet address = 209.85.225.147
google.com internet address = 209.85.225.105
google.com internet address = 209.85.225.104
google.com internet address = 209.85.225.106
google.com MX preference = 200, mail exchanger = google.com.s9a2.psmtp.com
google.com MX preference = 300, mail exchanger = google.com.s9b1.psmtp.com
google.com MX preference = 100, mail exchanger = google.com.s9a1.psmtp.com
google.com MX preference = 400, mail exchanger = google.com.s9b2.psmtp.com
google.com nameserver = ns1.google.com
google.com nameserver = ns2.google.com
google.com nameserver = ns3.google.com
google.com nameserver = ns4.google.com
DNS > google.com ns1.google.com
Server: ns1.google.com
Address: 216.239.32.10
google.com internet address = 74.125.227.20
google.com internet address = 74.125.227.18
google.com internet address = 74.125.227.17
google.com internet address = 74.125.227.16
google.com internet address = 74.125.227.19
google.com nameserver = ns4.google.com
google.com MX preference = 300, mail exchanger = google.com.s9b1.psmtp.com
google.com MX preference = 200, mail exchanger = google.com.s9a2.psmtp.com
google.com nameserver = ns2.google.com
google.com MX preference = 100, mail exchanger = google.com.s9a1.psmtp.com
google.com nameserver = ns1.google.com
google.com MX preference = 400, mail exchanger = google.com.s9b2.psmtp.com
google.com text =
"v=spf1 include:_netblocks.google.comip4:216.73.93.70/31 ip4:216.73.93.
72/31 ~all"
google.com nameserver = ns3.google.com
google.com
primary name server = ns1.google.com
responsible mail addr = dns-admin.google.com
serial = 1425952
refresh = 7200 (2 hours)
retry = 1800 (30 mins)
expire = 1209600 (14 days)
default TTL = 300 (5 mins)
ARP
Red
ARP
Addres Resolution Protocol
responsable de encontrar la dirección hardware (MAC) que corresponde a una determinada dirección IP
se envía un paquete (ARP request) a la dirección de difusión de la red que contiene la dirección IP por la que se pregunta
se espera a que esa máquina (u otra) responda (ARP reply) con la dirección Ethernet que le corresponde
Cada máquina mantiene una caché con las direcciones traducidas para reducir el retardo y la carga
ARP
arp -a
Interface: 192.168.0.102 --- 0x2
Internet Address Physical Address Type
192.168.0.1 00-26-5a-b2-60-58 dynamic
192.168.0.103 00-25-00-41-13-7e dynamic
SOCKETS
SOCKETS
concepto abstracto por el cual dos programas pueden intercambiar cualquier flujo de datos Posiblemente en equipos separados físicamente
Un socket queda definido por una dirección IP, un protocolo de transporte y un número de puerto
TCP 192.168.0.1:2345
Para que dos programas puedan comunicarse entre sí es necesario que se cumplan ciertos requisitos:
Que un programa sea capaz de localizar al otro.
Que ambos programas sean capaces de intercambiarse cualquier secuencia datos relevantes a su finalidad
SOCKETS
Para ello son necesarios los tres recursos que
originan el concepto de socket:
Un protocolo de comunicaciones, que permite el
intercambio de octetos
Una dirección del Protocolo de Red, que identifica
una computadora
Un número de puerto, que identifica a un programa
dentro de una computadora
SOCKETS
Existen básicamente dos tipos de sockets
los orientados a conexión
ambos programas deben conectarse entre ellos con un
socket
hasta que no esté establecida correctamente la conexión,
ninguno de los dos puede transmitir datos.
Protocolo TCP
los no orientados a conexión
no es necesario que los programas se conecten
Cualquiera de ellos puede transmitir datos en cualquier
momento, independientemente de que el otro programa
esté "escuchando" o no
protocolo UDP
SOCKETS
Arquitectura cliente – servidor
Servidor
Debe estar arrancado y en espera de que otro quiera
conectarse a él
Nunca da "el primer paso" en la conexión
tiene la información y la "sirve" al que se la pida
Ej: Apache
Cliente
es el que da el primer paso
Solicita la información para procesarla
Ej: Firefox
SOCKETS
Operaciones de sockets TCP
Servidor
Apertura de un socket [socket()]
Avisar al sistema operativo [bind()]
atender dicha conexión [listen()]
aceptar las conexiones [accept()]
Escribir y leer datos [write(), read()]
Cierre de la comunicación [close()]
Cliente
Apertura de un socket [socket()]
Solicitar conexión [connect()]
Escribir y leer datos [write(), read()]
Cierre de la comunicación [close()]
SOCKETS
Operaciones de sockets UDP
Servidor
Abrir un socket [socket()]
Asociar un socket a un puerto [bind()]
Leer mensaje [recvfrom()]
Responder mensaje [sendto]
Cliente
Abrir un socket [socket()]
Asociar un socket a un puerto [bind()]
Enviar mensaje [sendto]
Leer respuesta [recvfrom()]