Tema 11
Aplicaciones distribuidas
Contenido
Aplicaciones distribuidas
Telnet
FTP (
File Transfer Protocol)
HTTP (
HiperText Transfer Protocol)
DNS (Domain Name System)
DNS (Domain Name System)
Telnet
Telnet (
TELecommunication NETwork
) es un protocolo que
permite la conexión remota desde un cliente a un servidor (RFC
854, 855)
Útil para la
administración remota de sistemas UNIX
en modo terminal
(texto)
Los clientes se conectan al puerto 23 de TCP de los servidores
telnet y envían al servidor
comandos UNIX que se ejecutarán en el
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
3
telnet y envían al servidor
comandos UNIX que se ejecutarán en el
servidor
Datos en formato ASCII codificados en 8 bits
Conexión bidireccional
No
proporciona
seguridad
Los datos se envían sin cifrar
Comandos de telnet
Los clientes telnet usan los siguientes comandos para
conectar y desconectar del servidor
?
mostrar ayuda
close
Cerrar sesión Telnet
display
Mostrar la configuración de la conexión en pantalla (tipo de terminal y
puerto)
entorno
Para definir las variables del entorno del sistema operativo
entorno
Para definir las variables del entorno del sistema operativo
logout
Para cerrar la sesión
mode
Cambia entre los modos de transferencia ASCII (transferencia de un
archivo como texto) y los modos BINARIOS (transferencia de un
archivo en modo binario)
open
Abre otra conexión de la actual
quit
Sale de la aplicación Telnet
Ejemplo
Establecimiento de la conexión
$user> telnet manwe.ainulindale.es.
Trying 192.168.0.12...
Connected to manwe.ainulindale.es.
Escape character is '^]'.
Debian GNU/Linux 2.2 manwe.ainulindale.es
login: carlos
Password:
Last login: Wed Nov 7 18:20:19 2001 from iluvatar on pts/0
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
5
Last login: Wed Nov 7 18:20:19 2001 from iluvatar on pts/0
Linux Manwe 2.4.4 #14 Fri Oct 19 14:09:15 CEST 2001 i586
unknown
No mail.
Comandos UNIX
$telnet>
Cierre de conexión
Ejemplo:
conexión al puerto 80 usando telnet
Establecimiento de la conexión
$user>telnet
www.esqsoft.globalservers.com
80
Trying 64.136.56.122...
Connected to www.esqsoft.globalservers.com.
Escape character is '^]'.
Petición de la página
Petición de la página
www.esqsoft.globalservers.com/index.html
GET /index.htm HTTP/1.1
host: www.esqsoft.globalservers.com
<line feed>
Respuesta
HTTP/1.1 200 OK
FTP (File Transfer Protocol)
FTP
es un protocolo
cliente-servidor
para la transferencia de ficheros sobre TCP
(
RFC 114,765,959,2228,2428
)
El
servidor
utiliza dos puertos
well-known
:
20/TCP DATA Port
Conexión de datos
21/TCP Control Port
Conexión de control
El
cliente
debe abrir dos puertos cualesquiera mayores que 1024
Una vez establecida la conexión el cliente envía una serie de órdenes o
comandos FTP
al servidor y el servidor responderá con el resultado
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
7
comandos FTP
al servidor y el servidor responderá con el resultado
La conexión de datos es bidireccional
FTP admite
dos modos de conexión
:
Modo activo
Modo pasivo
Todo el intercambio de información entre cliente y servidor se realiza en texto
plano
Aplicaciones que cifran todo el tráfico: SSH, SFTP, SCP
Ejemplo
Establecimiento de la conexión
$user> ftp sonne.uiuc.edu
Connected to sonne.uiuc.edu
220 sonn FTP server (SunOS 4.1) ready
Name (ux.uiuc.edu:krol): krol
send login name krol
331 password required for krol
Password:
type the password, it isn’t echoed
Password:
type the password, it isn’t echoed
230 user krol logged in
Comandos FTP --- Transferencia de información
ftp> get source-file
Cierre de conexión
Lista de comandos FTP
!
Asociado a comando local
$
Ejecuta Macro
?
Imprime información de ayuda local
account
Envia comando a la cuenta del servidor remoto
append
Concatena un archivo
ascii
Para configurar y transferir archivos tipo ascii
bell
Sonido de campanilla cuando el comando se ha completado
binary
Para configurar y transferir archivos tipo binario
bye
Finalización de la sesión de ftp y salirse
case
Mapeo de letras iguales
cd
Cambiarse de directorio en el servidor remoto
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
9
cd
Cambiarse de directorio en el servidor remoto
cdup
Cambiarse al directorio padre en el servidor remoto
chmod
Cambio de permisos en el servidor remoto
close
Finalizar la sesión ftp
cr
Retorno de carro
delete
Borrar un archivo en el servidor remoto
debug
Configura modo de supresión de errores
dir
Lista contenido de directorio remoto
disconnect
Finalizar la sesión ftp
form
Configurar formato de transferencia de archivo
get
Recibir archivo o traerlo al servidor local
Lista de comandos FTP
idle
Configurar el tiempo disponible en el lado remoto
image
Para configurar y transferir archivos tipo binario
lcd
Cambiarse de directorio en el servidor local
ls
Lista el contenido de el directorio remoto
macdef
Define una macro
mdelete
Borrar varios archivos
mdir
Lista contenido de varios directorios remotos
mget
Recibe varios archivos
mkdir
Crear un directorio en la máquina remota
mls
Lista contenido de varios directorios remotos
mode
Configura el modo de transferencia
mode
Configura el modo de transferencia
modetime
Modo de reloj
mput
Envia varios archivos
newer
Recibe el archivo remoto si es ms nuevo que el de la máquina local
nmap
Configura nombre de archivo de acuerdo a plantilla
nlist
Lista el contenido de varios directorios remotos
ntrans
Configura tabla de traducción para mapeo de nombres de archivos
open
Abre conexión remota
Lista de comandos FTP
rmdir
Borrar un directorio de la máquina remota
runique
Activa/Desactiva almacenamiento único sobre los archivos locales
send
Enviar un archivo al servidor remoto
site
Envia un comando específico a la máquina remota/TD>
size
Muestra el tamaño de un archivo
status
Muestra el status local
struct
Configura la estructra de la transferencia de los archivos
system
Muestra el tipo del sistema remoto
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
11
system
Muestra el tipo del sistema remoto
sunique
Activa/desactiva almacenamiento único sobre la máquina remota
tenex
Transferencia de archivos de tipo tenex
trace
Activa/desactiva trazado de transferencia de paquetes
type
Configura el tipo de archivo a transferir
user
Envia información de usuario nuevo
umask
Configura el sistema de permisos en el lado remoto
Modo activo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Modo activo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
PORT 1050
Modo activo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
PORT 1050
Modo activo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
PORT 1050
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
15
ACK
Modo activo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
PORT 1050
ACK
Ejemplo FTP activo
testbox1: {/home/p-t/slacker/public_html} %
ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker):
slacker
--->
USER slacker
331 Password required for slacker.
Password:
TmpPass
--->
PASS XXXX
230 User slacker logged in.
--->
SYST
215 UNIX Type: L8
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
17
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ls
ftp: setsockopt (ignored): Permission denied
--->
PORT 192,168,150,80,14,178
200 PORT command successful.
--->
LIST
150 Opening ASCII mode data connection for file list.
drwx--- 3 slacker
users
104 Jul 27 01:45 public_html
226 Transfer complete.
ftp>
quit
--->
QUIT
221 Goodbye.
Comandos FTP enviados al servidor
Modo pasivo
Puerto de
datos: 20
Puerto de
control: 21
Puerto de
datos: 1080
Puerto de
datos: 1050
Modo pasivo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
Puerto de
datos: 1080
PASV
Modo pasivo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
Puerto de
datos: 1080
PASV
Modo pasivo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
Puerto de
datos: 1080
PASV
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
21
ACK
Modo pasivo
Puerto de
datos: 1050
Puerto de
control: 1051
Puerto de
datos: 20
Puerto de
control: 21
Puerto de
datos: 1080
PASV
ACK
Connect
puerto 1080
testbox1: {/home/p-t/slacker/public_html} %
ftp -d testbox2
Connected to testbox2.slacksite.com.
220 testbox2.slacksite.com FTP server ready.
Name (testbox2:slacker):
slacker
--->
USER slacker
331 Password required for slacker.
Password:
TmpPass
--->
PASS XXXX
230 User slacker logged in.
--->
SYST
215 UNIX Type: L8
Ejemplo FTP pasivo
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
215 UNIX Type: L8
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
passive
Passive mode on.
ftp>
ls
PASV
227 Entering Passive Mode (192,168,150,90,195,149).
--->
LIST
150 Opening ASCII mode data connection for file list.
drwx--- 3 slacker
users
104 Jul 27 01:45 public_html
226 Transfer complete.
ftp>
quit
--->
QUIT
221 Goodbye.
23
Comandos FTP enviados al servidor
Protocolo HTTP
HyperText Transfer Protocol
se usa en
web
para transferir hipertexto
(páginas HTML con hiperenlaces)
Paradigma cliente-servidor
Orientado a transacciones
Una transacción es un mensaje de petición y respuesta
El servidor usa el
puerto TCP 80
para aceptar conexiones entrantes
Protocolo
sin estado
Cookies
Cookies
Existen cuatro versiones de HTTP (la primera de ellas no es estándar de
Internet)
HTTP 0.9
Sólo soporta el comando GET
Petición: métodos
Se establece una conexión al host al puerto 80 del servidor
Línea de petición:
<Método><espacio><URIsolicitado><espacio><protocolo>\r\n
Donde
método
:
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
GET
solicita una página WEB
HEAD
solicita la cabecera de una página Web
POST
envía datos a una aplicación Web
PUT
solicita almacenar una página web
DELETE
solicita el borrado de una página web
TRACE
incluye los datos de la petición en la respuesta
OPTIONS
devuelve los métodos HTTP soportados para una URL
CONNECT
convierte la conexión en un túnel TCP/IP para facilitar la
comunicación cifrada
Petición: URI
Cada servicio Web contiene una
URI
(Uniform Resource
Identifier) que identifica unívocamente un recurso
URL
(Uniform Resource Locator)
Especificado en
RFC 1630
,
1738
,
1808
Incluyen la localización del recurso (
hostname+pathname
)
El formato general de una URL es:
esquema://máquina/directorio/archivo
esquema://máquina/directorio/archivo
Ejemplo:
http://www.arcos.inf.uc3m.es/~infosd
URN
(Uniform Resource Name)
Especificado en
RFC 2141
Nombres de recursos que no incluyen su localización
<URN> ::= "urn:" <NID> ":" <NSS>
Petición: protocolo
donde
protocolo
HTTP/1.0
HTTP/1.1
HTTP/1.2
Ejemplo de petición
GET /index.html HTTP/1.1
Respuesta
Contenido de la respuesta:
<protocolo> <código>
<cabeceras>
<recurso>
donde
protocolo
es aquel que entiende el servidor
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
donde
protocolo
es aquel que entiende el servidor
HTTP/1.0
HTTP/1.1
HTTP/1.2
donde
recurso
es el recurso solicitado en la petición (en
HTML)
Cabeceras
HTTP define una serie de
cabeceras válidas
para los
mensajes de
petición
y
respuesta
Permiten definir
parámetros
de los mensajes
En
HTTP 1.0
las cabeceras son
opcionales
En
HTTP 1.1
algunas cabeceras son
obligatorias
:
En el
cliente
: Host y User-Agent
En el
cliente
: Host y User-Agent
En el
servidor
:
Content-type, Content-Length, Date
Listado completo de cabeceras:
Códigos de respuesta:
http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
Clasificados en
5 grupos
1
xx: Mensaje de información
100 Continue
101 Switching Protocols
2
xx: Mensajes de éxito
200 OK
201 Created
5
xx: Mensajes de
error en el servidor
500 Internal Server Error
501 Not Implemented
503 Service Unavailable
505 HTTP Version Not
Supported
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
31
202 Accepted
3
xx: Mensajes de redirección
301 Moved Permanently
302 Found
4
xx: Mensajes de error en el cliente
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not found
Ejemplo: HTTP
Navegador
www.uc3m.es
1) Petición
2) Respuesta
1)
Petición:
2)
Respuesta:
1)
Petición:
GET
/index.html HTTP/1.1
Host: www.example.com
User-Agent: nombre-cliente
[Línea en blanco]
2)
Respuesta:
HTTP/1.1 200 OK
Date: Fri, 31 Dec 2003 23:59:59 GMT
Content-Type: text/html
Content-Length: 1221
<html>
<body>
<h1>Página www.uc3m.es</h1>
(Contenido) . . .
DNS
DNS (
Domain Name System
) es el servicio de nombres
usado en Internet (
RFC 1034, RFC 1035
)
Usa el
puerto 53
de UDP o TCP
Permite la
resolución de nombres
para la localización de
recursos en Internet
Asocia información a cada nombre de dominio y subdominio
La información más común es la dirección IP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
La información más común es la dirección IP
Permite también el
registro
de los nombres y su
eliminación
Estructura
en árbol
Basada en
dominios
y
subdominios
Los nombres de los recursos se inscriben dentro de dominios o
subdominios
Base de datos
distribuida
y
jerárquica
que almacena información de
los nombres de dominios y subdominios
Nombres de dominios
Un
nombre de dominio
es una secuencia de “etiquetas” separadas por
puntos “.”
Cada etiqueta representan un nivel del árbol
Cada etiqueta identifica un conjunto de equipos en la red
Ejemplos de nombres de primer nivel o
nivel superior
COM (Organizaciones comerciales)
EDU (Instituciones de Educación)
GOV (Instituciones del Gobierno)
MIL (Grupos Militares)
MIL (Grupos Militares)
NET (Centros de soporte de la red)
ORG (Otras organizaciones)
ARPA (Dominio temporal de ARPANET)
ES (España)
UK (Reino Unido)
MX (Méjico)
IANA
(Internet Assigned Numbers Authority) es la organización con autoridad para
Dominios de primer y segundo nivel
Root server
Dominios de primer
nivel
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
35
Nombrado en Internet
Ejemplos
de dominios, subdominios y máquinas:
fi.upm.es: dominio
datsi.fi.upm.es: dominio
roble.datsi.fi.upm.es: máquina
zape.fi.upm.es: máquina
es
be
upm
cec
upc
fi
dg13
etsii
ac
datsi
root
Historia de DNS
Inicialmente la traducción de nombres de máquina a
direcciones IP se almacenaba en un único archivo
denominado
HOSTS.txt
Un archivo centralizado
Problema de
crecimiento (
escalabilidad
)
“Un servidor que en 1993 recibía 10 peticiones por minuto recibía
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
“Un servidor que en 1993 recibía 10 peticiones por minuto recibía
en 1995 250 peticiones por segundo”
Servidores muy cargados
Poca capacidad de crecimiento
Problema grave en aplicaciones Web
Uso de DNS
Protocolo
cliente-servidor
Búsquedas
recursivas
e
iterativas
El uso de DNS en Internet es
transparente
para los clientes
Cuando una aplicación cliente necesita la dirección IP de un nombre de
dominio inicia una operación denominada resolución de nombre
Ejemplo:
http://www.uc3m.es
Ejemplo:
http://www.uc3m.es
Cada máquina cliente en Internet mantiene un archivo
/etc/hosts
con las relaciones
máquina – dirección IP
Generalmente, no almacenan la información relativa a las direcciones IP
Los clientes usan una memoria caché para almacenar las IP de nombres
Resolución de nombres
El cliente intenta resolver localmente mirando
/etc/hosts
Si encuentra la IP asociada al nombre
Devuelve la IP a la aplicación
127.0.0.1 localhost
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
39
Devuelve la IP a la aplicación
Sino
Resuelve el nombre preguntando al servidor en
/etc/resolv.conf
domain lab.inf.uc3m.es
search lab.inf.uc3m.es
nameserver 163.117.142.236
Los servidores mantienen
registros
con distintos tipos de
información
Formato
de los registros (definido en
RFC 1035
):
donde
Configuración en el servidor
NAME TYPE
CLASS TTL
LENGTH
DATA
donde
NAME
Nombre del recurso
TYPE
Tipo de registro
TTL
Time to Live
, número de segundos que los servidores de
DNS pueden mantener ese registro en caché
CLASS
Clase del registro. IN especifica Internet
LENGTH
Longitud del campo de datos
Tipos de registros
A
1 a host address
AAAA
a host address IPv6
NS
2 an authoritative name server
MD
3 a mail destination (Obsolete - use MX)
MF
4 a mail forwarder (Obsolete - use MX)
CNAME
5 the canonical name for an alias
SOA
6 marks the start of a zone of authority
MB
7 a mailbox domain name (EXPERIMENTAL)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
41
MB
7 a mailbox domain name (EXPERIMENTAL)
MG
8 a mail group member (EXPERIMENTAL)
MR
9 a mail rename domain name (EXPERIMENTAL)
NULL
10 a null RR (EXPERIMENTAL)
WKS
11 a well known service description
PTR
12 a domain name pointer
HINFO
13 host information
MINFO
14 mailbox or mail list information
MX
15 mail exchange
Ejemplo
; zone fragment example.com
; mail servers in the same zone
; will support email with addresses of the format
; user@example.com
$TTL 2d ; zone default = 2 days or 172800 seconds
$ORIGIN example.com.
example.com. IN SOA ns1.example.com. root.example.com. (
2003080800 ; serial number
3h ; refresh = 3 hours
15M ; update retry = 15 minutes
3W12h ; expiry = 3 weeks + 12 hours
3W12h ; expiry = 3 weeks + 12 hours
2h20M ; minimum = 2 hours + 20 minutes
)
IN MX 10 mail ; short form
; the line above is functionally the same as the line below
; example.com. IN MX 10 mail.example.com.
; any number of mail servers may be defined
IN MX 20 mail2.example.com.
; use an external back-up
Algoritmo
La aplicación cliente
solicita una página
web
www.dominio.subdominio.net
DNS 1
Algoritmo
1) Búsqueda en local
/etc/hosts
Algoritmo
www.dominio.subdominio.net
DNS 1
1) Búsqueda en local
/etc/hosts
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
2) Si existe
Devolver IP
Algoritmo
www.dominio.subdominio.net
DNS 1
1) Búsqueda en local
/etc/hosts
2.2) Si no existe
Preguntar al servidor
de DNS
resolv
Algoritmo
www.dominio.subdominio.net
DNS 1
1) Búsqueda en local
/etc/hosts
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
2.2) Si no existe
Preguntar al servidor
de DNS
3) Búsqueda en local
resolv
(www.uc3m.es,
direccion-DNSI)
Algoritmo
www.dominio.subdominio.net
DNS 1
1) Búsqueda en local
/etc/hosts
2.2) Si no existe
Preguntar al servidor
de DNS
3) Búsqueda en local
IP
resolv
Algoritmo
www.dominio.subdominio.net
DNS 1
1) Búsqueda en local
/etc/hosts
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
2.2) Si no existe
Preguntar al servidor
de DNS
3) Búsqueda en local
3.2) Si NO existe
Preguntar al siguiente
servidor de DNS
resolv
(www.uc3m.es,
direccion-DNSI)
IP
Algoritmo
www.dominio.subdominio.net
DNS 1
DNS 2
DNS N
1) Búsqueda en local
/etc/hosts
2.2) Si no existe
Preguntar al servidor
de DNS
resolv
Correo electrónico
Servicio de red que permite a los usuarios enviar y recibir
mensajes
Elementos:
Dirección de correo
Proveedor de correo
Interfaz de usuario
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
51
Interfaz de usuario
Cliente de correo
Thunderbird
Outlook
Correo Web
Gmail
Direcciones de correo electrónico
Cada usuario de correo electrónico tiene una o varias direcciones de correo en la
red
Las direcciones tienen típicamente el siguiente formato:
usuario@dominio
Ejemplo:
sescolar@arcos.inf.uc3m.es
Se envían mensajes de correo a usuarios identificados mediante direcciones de
correo electrónico
El formato de los mensajes:
El formato de los mensajes:
Envoltorio
Cabecera
From: indica quién envía el mensaje.
To: destinatario del mensaje, puede no aparecer
Subject: Asunto del mensaje. Es conveniente que aparezca aunque no imprescindible
Cuerpo
Historia del correo electrónico
En
1971
Ray Tomlinson
incorporó el uso de la arroba (@)
Eligió la arroba como divisor entre el usuario y la computadora
en la que se aloja la casilla de correo porque no existía la
arroba en ningún nombre ni apellido
Los primeros sistemas de correo electrónico simplemente
consistían en protocolos de transferencia de archivos
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
53
consistían en protocolos de transferencia de archivos
incluyendo en la primera línea del archivo contenía la dirección
del destinatario
En
1982
se diseñó el primer sistema para intercambiar
correos electrónicos en ARPANET
RFC 821.
Protocolo de transmisión SMTP
Todos son protocolos del nivel de aplicación (usan TCP)
Basado en modelo cliente-servidor
De envió y retransmisión de mensajes
SMTP
Puertos por defecto: 25
Puerto seguro: 465 (no oficial)
Protocolos usados en correo electrónico
Puerto seguro: 465 (no oficial)
De acceso a los mensajes de correo
POP3
Puertos por defecto: 110
Puerto seguro: 995
IMAP4
SMTP
Simple Mail Transfer Protocol (RFC 821,2821,5321)
es el
protocolo de intercambio de correo electrónico entre máquinas u
otros dispositivos (PDAs, móviles, etc.)
Basado en el modelo
cliente-servidor
Usa el puerto
25 de TCP
Inicialmente, basado en texto
MIME (Multipurpose Internet Mail Extensions)
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
55
MIME (Multipurpose Internet Mail Extensions)
Participantes:
Protocolo SMTP
: especifica el formato del mensaje de correo electrónico
que se transmite entre dos MTAs
Programa cliente
: realiza la interacción con el usuario y la MTA.
Ejemplos: Evolution, Eudora, Outlook
Agente de transferencia de mensajes
(MTA): El mas utilizado en UNIX
SMTP y POP3, IMAP
Formato de los mensajes SMTP
Cliente y servidor intercambian los siguientes mensajes:
Las
peticiones
de los clientes:
Donde
ORDEN
es un comando de SMTP
Donde
TEXTO
es una línea de texto ASCII de longitud máxima 1000
caracteres
ORDEN
TEXTO
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
57
Las
respuestas
del servidor:
Donde
CODIGO
es un número de tres dígitos (xxx) indicando error o éxito
2XX
la orden se ejecutó con éxito
3XX
la orden está pendiente de ejecutarse
4XX
error en la ejecución
5XX
condición de error permanente
Donde
TEXTO
es una frase con la descripción del CODIGO
Órdenes de SMTP
HELO
abre una sesión con el servidor
MAIL FROM
origen del mensaje
RCPT TO
destinatario del mensaje
DATA,
comienzo del mensaje, éste finalizará cuando haya una línea
únicamente con un punto.
QUIT
cierra la sesión
RSET
aborta la transacción en curso
SEND
inicia una transacción para enviar el mensaje a una máquina
SEND
inicia una transacción para enviar el mensaje a una máquina
terminal
Protocolo SMTP
El cliente solicita
una conexión al
puerto 23
Cliente SMTP
Servidor SMTP
Protocolo SMTP
Servidor SMTP
220 Service Ready
El servidor acepta
(código 220) o bien
rechaza la conexión
(código 421)
El cliente solicita
una conexión al
puerto 23
Cliente SMTP
Protocolo SMTP
Servidor SMTP
El servidor acepta
(código 220) o bien
rechaza la conexión
(código 421)
El cliente envía
HELO
220 Service Ready
El cliente solicita
una conexión al
puerto 23
Cliente SMTP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
61
(código 421)
El cliente envía
HELO
Protocolo SMTP
Servidor SMTP
El servidor acepta
(código 220) o bien
rechaza la conexión
(código 421)
El cliente envía
220 Service Ready
HELO
El cliente solicita
una conexión al
puerto 23
Cliente SMTP
(código 421)
El cliente envía
HELO
El cliente envía
Protocolo SMTP
Servidor SMTP
El servidor acepta
(código 220) o bien
rechaza la conexión
(código 421)
El cliente envía
220 Service Ready
HELO
El cliente solicita
una conexión al
puerto 23
Cliente SMTP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
63
(código 421)
El cliente envía
HELO
250 OK
El servidor
comprueba el
formato de la
dirección
HELO
El cliente envía
Protocolo SMTP
Servidor SMTP
El servidor acepta
(código 220) o bien
rechaza la conexión
(código 421)
El cliente envía
220 Service Ready
HELO
El cliente solicita
una conexión al
puerto 23
Cliente SMTP
(código 421)
El cliente envía
HELO
250 OK
El servidor
comprueba el
formato de la
dirección
HELO
El cliente envía
Protocolo SMTP
Servidor SMTP
El servidor acepta
250 OK
Cliente SMTP
Protocolo SMTP
Servidor SMTP
El cliente se prepara para
DATA
El servidor acepta
250 OK
Cliente SMTP
El cliente se prepara para
enviar los datos del mensaje
DATA
Protocolo SMTP
Servidor SMTP
DATA
El servidor acepta
250 OK
El cliente se prepara para
Cliente SMTP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
67
DATA
El servidor dice al
cliente que envíe
los datos
354 Start mail
input, end with
<CRLF>.<CRLF>
354 Start mail input, end
with <CRLF>.<CRLF>
El cliente se prepara para
enviar los datos del mensaje
Protocolo SMTP
Servidor SMTP
DATA
El servidor acepta
250 OK
El cliente se prepara para
Cliente SMTP
DATA
El servidor dice al
cliente que envíe
los datos
354 Start mail
input, end with
<CRLF>.<CRLF>
354 Start mail input, end
with <CRLF>.<CRLF>
El cliente se prepara para
enviar los datos del mensaje
DATA
Protocolo SMTP
Servidor SMTP
El cliente envía línea a línea el
cuerpo del mensaje
Cliente SMTP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
69
El cliente envía última línea:
Protocolo SMTP
Servidor SMTP
El cliente envía línea a línea el
cuerpo del mensaje
Cliente SMTP
El cliente envía última línea:
<CRLF>.<CRLF>
El servidor indica
OK
Protocolo SMTP
Servidor SMTP
El cliente envía línea a línea el
cuerpo del mensaje
Cliente SMTP
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
71
El cliente envía última línea:
<CRLF>.<CRLF>
El servidor indica
OK
250 OK
El cliente envía el último
mensaje:
Ejemplo
S:
220
Servidor ESMTP
C:
HELO
miequipo.midominio.com
S:
250
Hello, please to meet you
C:
MAIL FROM
: yo@midominio.com
S:
250
Ok
C:
RCPT TO
: destinatario@sudominio.com
S:
250
Ok
C:
DATA
S:
354
End data with <CR><LF>.<CR><LF>
C: Subject: Campo de asunto
C: From: yo@midominio.com
C: To: destinatario@sudominio.com
C:
C: Hola,
C: Esto es una prueba.
C: Adiós.
MIME
MIME
(
Multipurpose Internet Mail Extensions
) es una
especificación dirigida al intercambio de datos distinto a texto de
forma transparente para el usuario. (RFC 2045, RFC 2046, RFC
2047, RFC 4288, RFC 4289 y RFC 2077)
En general, las extensiones de MIME van encaminadas a soportar:
Texto en conjuntos de caracteres distintos de US-ASCII;
Adjuntos que no son de tipo texto;
Cuerpos de mensajes con múltiples partes (multi-part);
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
73
Cuerpos de mensajes con múltiples partes (multi-part);
Información de encabezados con conjuntos de caracteres distintos de
ASCII.
Codificaciones usadas:
7bit
Quoted printable (basado en 7bit)
base64 (basado en 7bit)
POP3
POP3(
Post Office Protocol
) protocolo usado para obtener los
mensajes de correo electrónico almacenados en un servidor
remoto (RFC 1939)
Permite a los usuarios con conexiones intermitentes ó muy lentas
descargar su correo electrónico
mientras tienen conexión y
revisarlo posteriormente incluso estando desconectados
Funcionamiento:
un cliente que utilice POP3 se conecta,
un cliente que utilice POP3 se conecta,
obtiene todos los mensajes,
los almacena en la computadora del usuario como mensajes nuevos,
los elimina del servidor
y finalmente se desconecta.
Sistema de autenticación:
Ejemplo de dialogo POP3
S: <wait for connection on TCP port 110>
C: <open connection>
S: +OK POP3 server ready <1896.697170952@dbc.mtview.ca.us>
C: APOP mrose c4c9334bac560ecc979e58001b3e22fb
S: +OK mrose's maildrop has 2 messages (320 octets)
C: STAT
S: +OK 2 320
C: LIST
S: +OK 2 messages (320 octets)
S: 1 120
S: 2 200
S: .
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García
75
S: .
C: RETR 1
S: +OK 120 octets
S: <the POP3 server sends message 1>
S: .
C: DELE 1
S: +OK message 1 deleted
C: RETR 2
S: +OK 200 octets
S: <the POP3 server sends message 2>
S: .
C: DELE 2
S: +OK message 2 deleted
C: QUIT
S: +OK dewey POP3 server signing off (maildrop empty)
C: <close connection>
Ejemplo de POP3 sin APOP
C: USER mrose
S: +OK User accepted
C: PASS tanstaaf
IMAP
IMAP (
Internet Message Access Protocol
) protocolo de red de acceso
a mensajes electrónicos almacenados en un servidor.
Mediante IMAP se puede tener acceso al correo electrónico desde cualquier
equipo que tenga una conexión a Internet.
La versión actual es la 4.1 (
RFC 3501
)
Usa el puerto bien conocido 143
IMAP fue diseñado por Mark Crispin en 1986 como un protocolo para
el
acceso al correo electrónico
.
Características:
F. García-Carballeira, Mª. Soledad Escolar, Luis Miguel Sánchez, Fco. Javier García