miércoles, 11 de diciembre de 2013

PROTOCOLO DE INTERNET

Introducción al correo electrónico
El correo electrónico es considerado el servicio más utilizado de Internet. Por lo tanto, la serie de protocolos TCP/IP ofrece una gama de protocolos que permiten una fácil administración del enrutamiento del correo electrónico a través de la red. 
El protocolo SMTP
El protocolo SMTP (Protocolo simple de transferencia de correo) es elprotocolo estándar que permite la transferencia de correo de un servidor a otro mediante una conexión punto a punto. 
Éste es un protocolo que funciona en línea, encapsulado en una trama TCP/IP. El correo se envía directamente al servidor de correo del destinatario. El protocolo SMTP funciona con comandos de textos enviados al servidor SMTP (al puerto 25 de manera predeterminada). A cada comando enviado por el cliente (validado por la cadena de caracteres ASCII CR/LF, que equivale a presionar la tecla Enter) le sigue una respuesta del servidor SMTP compuesta por un número y un mensaje descriptivo. 
A continuación se describe una situación en la que se realiza una solicitud para enviar correos a un servidor SMTP:
·         Al abrir la sesión SMTP, el primer comando que se envía es el comandoHELO seguido por un espacio (escrito <SP>) y el nombre de dominio de su equipo (para decir "hola, soy este equipo"), y después validado por Enter (escrito <CRLF>). Desde abril de 2001, las especificaciones para el protocolo SMTP, definidas en RFC 2821, indican que el comando HELO sea remplazado por el comando EHLO.
·         El segundo comando es "MAIL FROM:" seguido de la dirección de correo electrónico del remitente. Si se acepta el comando, el servidor responde con un mensaje "250 OK".
·         El siguiente comando es "RCPT TO:" seguido de la dirección de correo electrónico del destinatario. Si se acepta el comando, el servidor responde con un mensaje "250 OK".
·         El comando DATA es la tercera etapa para enviar un correo electrónico. Anuncia el comienzo del cuerpo del mensaje. Si se acepta el comando, el servidor responde con un mensaje intermediario numerado 354 que indica que puede iniciarse el envío del cuerpo del mensaje y considera el conjunto de líneas siguientes hasta el final del mensaje indicado con una línea que contiene sólo un punto. El cuerpo del correo electrónico eventualmente contenga algunos de los siguientes encabezados:
·         Date (Fecha)
·         Subject (Asunto)
·         Cc
·         Bcc (Cco)
·         From (De)

Si se acepta el comando, el servidor responde con un mensaje "250 OK". 
A continuación se describe un ejemplo de transacción entre un cliente (C) y un servidor SMTP (S): 

S: 220 smtp.commentcamarche.net SMTP Ready C: EHLO machine1.commentcamarche.net S: 250 smtp.commentcamarche.net C: MAIL FROM:<webmaster@commentcamarche.net> S: 250 OK C: RCPT TO:<meandus@meandus.net> S: 250 C: RCPT TO:<tittom@tittom.fr> S: 550 No such user here C: DATA S: 354 Start mail input; end with <CRLF>.<CRLF> C: Subject: Hola C: Hola Meandus: C: ¿Cómo andan tus cosas? C: C: ¡Nos vemos pronto! C: <CRLF>.<CRLF> S: 250 C: QUIT R: 221 smtp.commentcamarche.net closing transmission




Las especificaciones básicas del protocolo SMTP indican que todos los caracteres enviados están codificados mediante el código ASCII de 7 bits y que el 8º bit sea explícitamente cero. Por lo tanto, para enviar caracteres acentuados es necesario recurrir a algoritmos que se encuentren dentro de las especificaciones MIME:
·         base64 para archivos adjuntos
·         quoted-printable (abreviado QP) para caracteres especiales utilizados en el cuerpo del mensaje



Por lo tanto, es posible enviar un correo electrónico utilizando un simple telnet al puerto 25 del servidor SMTP: 
telnet smtp.commentcamarche.net 25

(El servidor indicado anteriormente no existe. Intente reemplazarcommentcamarche.net por el nombre de dominio de su proveedor de servicios de Internet. 


A continuación se brinda un resumen de los principales comandos SMTP: 

Comando
Ejemplo
Descripción
HELO (ahora EHLO)
EHLO 193.56.47.125
Identificación que utiliza la dirección IP o el nombre de dominio del equipo remitente
MAIL FROM:
MAIL FROM: originator@domain.com
Identificación de la dirección del remitente
RCPT TO:
RCPT TO: recipient@domain.com
Identificación de la dirección del destinatario
DATA
DATA message
Cuerpo del correo electrónico
QUIT
QUIT
Salida del servidor SMTP
HELP
HELP
Lista de comandos SMTP que el servidor admite




Todas las especificaciones del protocolo SMTP se encuentran definidas en RFC 821 (desde abril de 2001, las especificaciones del protocolo SMTP se encuentran definidas en RFC 2821). 

El protocolo POP3
El protocolo POP (Protocolo de oficina de correos), como su nombre lo indica, permite recoger el correo electrónico en un servidor remoto (servidor POP). Es necesario para las personas que no están permanentemente conectadas a Internet, ya que así pueden consultar sus correos electrónicos recibidos sin que ellos estén conectados. 
Existen dos versiones principales de este protocolo, POP2 y POP3, a los que se le asignan los puertos 109 y 110 respectivamente, y que funcionan utilizando comandos de texto radicalmente diferentes. 
Al igual que con el protocolo SMTP, el protocolo POP (POP2 y POP3) funciona con comandos de texto enviados al servidor POP. Cada uno de estos comandos enviados por el cliente (validados por la cadena CR/LF) está compuesto por una palabra clave, posiblemente acompañada por uno o varios argumentos, y está seguido por una respuesta del servidor POP compuesta por un número y un mensaje descriptivo. 
A continuación se brinda un resumen de los principales comandos POP2: 

Comandos POP2
Comando
Descripción
HELLO
Identificación que utiliza la dirección IP del equipo remitente
FOLDER
Nombre de la bandeja de entrada que se va a consultar
READ
Número del mensaje que se va a leer
RETRIEVE
Número del mensaje que se va a recoger
SAVE
Número del mensaje que se va a guardar
DELETE
Número del mensaje que se va a eliminar
QUIT
Salida del servidor POP2




A continuación se brinda un resumen de los principales comandos POP3: 

Comandos POP3
Comando
Descripción
USER identification
Este comando permite la autenticación. Debe estar seguido del nombre de usuario, es decir, una cadena de caracteres que identifique al usuario en el servidor. El comando USER debe preceder al comando PASS.
PASS password
El comando PASS permite especificar la contraseña del usuario cuyo nombre ha sido especificado por un comando USER previo.
STAT
Información acerca de los mensajes del servidor
RETR
Número del mensaje que se va a recoger
DELE
Número del mensaje que se va a eliminar
LIST [msg]
Número del mensaje que se va a mostrar
NOOP
Permite mantener la conexión abierta en caso de inactividad
TOP <messageID> <n>
Comando que muestra n líneas del mensaje, cuyo número se da en el argumento. En el caso de una respuesta positiva del servidor, éste enviará de vuelta los encabezados del mensaje, después una línea en blanco y finalmente las primeras n líneas del mensaje.
UIDL [msg]
Solicitud al servidor para que envíe una línea que contenga información sobre el mensaje que eventualmente se dará en el argumento. Esta línea contiene una cadena de caracteres denominada unique identifier listing (lista de identificadores únicos) que permite identificar de manera única el mensaje en el servidor, independientemente de la sesión. El argumento opcional es un número relacionado con un mensaje existente en el servidor POP, es decir, un mensaje que no se ha borrado.
QUIT
El comando QUIT solicita la salida del servidor POP3. Lleva a la eliminación de todos los mensajes marcados como eliminados y envía el estado de esta acción.



Por lo tanto, el protocolo POP3 administra la autenticación utilizando el nombre de usuario y la contraseña. Sin embargo, esto no es seguro, ya que las contraseñas, al igual que los correos electrónicos, circulan por la red como texto sin codificar (de manera no cifrada). En realidad, según RFC 1939, es posible cifrar la contraseña utilizando un algoritmo MD5 y beneficiarse de una autenticación segura. Sin embargo, debido a que este comando es opcional, pocos servidores lo implementan. Además, el protocolo POP3 bloquea las bandejas de entrada durante el acceso, lo que significa que es imposible que dos usuarios accedan de manera simultánea a la misma bandeja de entrada. 
De la misma manera que es posible enviar un correo electrónico utilizando telnet, también es posible acceder al correo entrante utilizando un simple telnet por el puerto del servidor POP (110 de manera predeterminada): 
telnet mail.commentcamarche.net 110

(El servidor indicado anteriormente no existe. Intente reemplazarcommentcamarche.net por el nombre de dominio de su proveedor de servicios de Internet.) 

S: +OK mail.commentcamarche.net POP3 service S: (Netscape Messaging Server 4.15 Patch 6 (built Mar 31 2001)) C: USER jeff S: +OK Name is a valid mailbox C: PASS password S: +OK Maildrop ready C: STAT S: +OK 2 0 C: TOP 1 5 S: Subject: Hola S: Hola Meandus: S: ¿Cómo andan tus cosas? S: S: ¡Nos vemos pronto! C: QUIT S: +OK





[Image: ../images/warning.gif]
La visualización de datos que se obtiene depende del cliente Telnet que esté utilizando. Según su cliente Telnet, puede ser necesario activar la opción echo local (eco local).


El protocolo IMAP
El protocolo IMAP (Protocolo de acceso a mensajes de Internet) es un protocolo alternativo al de POP3, pero que ofrece más posibilidades:
·         IMAP permite administrar diversos accesos de manera simultánea
·         IMAP permite administrar diversas bandejas de entrada
·         IMAP brinda más criterios que pueden utilizarse para ordenar los correos electrónicos

Introducción al protocolo HTTP

Desde 1990, el protocolo HTTP (Protocolo de transferencia de hipertexto) es el protocolo más utilizado en Internet. La versión 0.9 sólo tenía la finalidad de transferir los datos a través de Internet (en particular páginas Web escritas enHTML). La versión 1.0 del protocolo (la más utilizada) permite la transferencia de mensajes con encabezados que describen el contenido de los mensajes mediante la codificación MIME.
El propósito del protocolo HTTP es permitir la transferencia de archivos (principalmente, en formato HTML). entre un navegador (el cliente) y un servidor web (denominado, entre otros, httpd en equipos UNIX) localizado mediante una cadena de caracteres denominada dirección URL.

Comunicación entre el navegador y el servidor

La comunicación entre el navegador y el servidor se lleva a cabo en dos etapas:
Descripción: Comunicación entre el navegador y el servidor
·         El navegador realiza una solicitud HTTP
·         El servidor procesa la solicitud y después envía una respuesta HTTP
En realidad, la comunicación se realiza en más etapas si se considera el procesamiento de la solicitud en el servidor. Dado que sólo nos ocupamos del protocolo HTTP, no se explicará la parte del procesamiento en el servidor en esta sección del artículo. Si este tema les interesa, puede consultar el artículo sobre el tratamiento de CGI.

Solicitud HTTP

Una solicitud HTTP es un conjunto de líneas que el navegador envía al servidor. Incluye:
·         Una línea de solicitud: es una línea que especifica el tipo de documento solicitado, el método que se aplicará y la versión del protocolo utilizada. La línea está formada por tres elementos que deben estar separados por un espacio:
·         el método
·         la dirección URL
·         la versión del protocolo utilizada por el cliente (por lo general,HTTP/1.0)
·         Los campos del encabezado de solicitud: es un conjunto de líneas opcionales que permiten aportar información adicional sobre la solicitud y/o el cliente (navegador, sistema operativo, etc.). Cada una de estas líneas está formada por un nombre que describe el tipo de encabezado, seguido de dos puntos (:) y el valor del encabezado.
·         El cuerpo de la solicitud: es un conjunto de líneas opcionales que deben estar separadas de las líneas precedentes por una línea en blanco y, por ejemplo, permiten que se envíen datos por un comando POST durante la transmisión de datos al servidor utilizando un formulario.
Por lo tanto, una solicitud HTTP posee la siguiente sintaxis (<crlf> significa retorno de carro y avance de línea):
MÉTODO VERSIÓN URL<crlf>
ENCABEZADO: Valor<crlf>
. . . ENCABEZADO: Valor<crlf>
Línea en blanco <crlf>
CUERPO DE LA SOLICITUD
A continuación se encuentra un ejemplo de una solicitud HTTP:
GET http://es.kioskea.net HTTP/1.0 Accept : Text/html If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

Comandos

Comando
Descripción
GET
Solicita el recurso ubicado en la URL especificada
HEAD
Solicita el encabezado del recurso ubicado en la URL especificada
POST
Envía datos al programa ubicado en la URL especificada
PUT
Envía datos a la URL especificada
DELETE
Borra el recurso ubicado en la URL especificada
Nombre del encabezado
Descripción
Accept
Tipo de contenido aceptado por el navegador (por ejemplo, texto/html). Consulte Tipos de MIME
Accept-Charset
Juego de caracteres que el navegador espera
Accept-Encoding
Codificación de datos que el navegador acepta
Accept-Language
Idioma que el navegador espera (de forma predeterminada, inglés)
Authorization
Identificación del navegador en el servidor
Content-Encoding
Tipo de codificación para el cuerpo de la solicitud
Content-Language
Tipo de idioma en el cuerpo de la solicitud
Content-Length
Extensión del cuerpo de la solicitud
Content-Type
Tipo de contenido del cuerpo de la solicitud (por ejemplo, texto/html). Consulte Tipos de MIME
Date
Fecha en que comienza la transferencia de datos
Forwarded
Utilizado por equipos intermediarios entre el navegador y el servidor
From
Permite especificar la dirección de correo electrónico del cliente
From
Permite especificar que debe enviarse el documento si ha sido modificado desde una fecha en particular
Link
Vínculo entre dos direcciones URL
Orig-URL
Dirección URL donde se originó la solicitud
Referer
Dirección URL desde la cual se realizó la solicitud
User-Agent
Cadena con información sobre el cliente, por ejemplo, el nombre y la versión del navegador y el sistema operativo

Respuesta HTTP

Una respuesta HTTP es un conjunto de líneas que el servidor envía al navegador. Está constituida por: Incluye:
·         Una línea de estado: es una línea que especifica la versión del protocolo utilizada y el estado de la solicitud en proceso mediante un texto explicativo y un código. La línea está compuesta por tres elementos que deben estar separados por un espacio: La línea está formada por tres elementos que deben estar separados por un espacio:
·         la versión del protocolo utilizada
·         el código de estado
·         el significado del código
·         Los campos del encabezado de respuesta: es un conjunto de líneas opcionales que permiten aportar información adicional sobre la respuesta y/o el servidor. Cada una de estas líneas está compuesta por un nombre que califica el tipo de encabezado, seguido por dos puntos (:) y por el valor del encabezado Cada una de estas líneas está formada por un nombre que describe el tipo de encabezado, seguido de dos puntos (:) y el valor del encabezado.
·         El cuerpo de la respuesta: contiene el documento solicitado.
Por lo tanto, una respuesta HTTP posee la siguiente sintaxis (<crlf> significa retorno de carro y avance de línea):
VERSIÓN-HTTP CÓDIGO EXPLICACIÓN <crlf>
ENCABEZADO: Valor<crlf>
. . . ENCABEZADO: Valor<crlf>
Línea en blanco <crlf>
CUERPO DE LA RESPUESTA
A continuación se encuentra un ejemplo de una respuesta HTTP:
HTTP/1.0 200 OK Date: Sat, 15 Jan 2000 14:37:12 GMT Server : Microsoft-IIS/2.0 Content-Type : text/HTML Content-Length : 1245 Last-Modified : Fri, 14 Jan 2000 08:25:13 GMT

Encabezados de respuesta

Nombre del encabezado
Descripción
Content-Encoding
Tipo de codificación para el cuerpo de la respuesta
Content-Language
Tipo de idioma en el cuerpo de la respuesta
Content-Length
Extensión del cuerpo de la respuesta
Content-Type
Tipo de contenido del cuerpo de la respuesta (por ejemplo, texto/html). Consulte Tipos de MIME
Date
Fecha en que comienza la transferencia de datos
Expires
Fecha límite de uso de los datos
Forwarded
Utilizado por equipos intermediarios entre el navegador y el servidor
Location
Re direccionamiento a una nueva dirección URL asociada con el documento
Server
Características del servidor que envió la respuesta

Los códigos de respuesta

Son los códigos que se ven cuando el navegador no puede mostrar la página solicitada. El código de respuesta está formado por tres dígitos: el primero indica el estado y los dos siguientes explican la naturaleza exacta del error.
Código
Mensaje
Descripción
10x
Mensaje de información
Estos códigos no se utilizan en la versión 1.0 del protocolo
20x
Éxito
Estos códigos indican la correcta ejecución de la transacción
200
OK
La solicitud se llevó a cabo de manera correcta
201
CREATED
Sigue a un comando POST e indica el éxito, la parte restante del cuerpo indica la dirección URL donde se ubicará el documento creado recientemente.
202
ACCEPTED
La solicitud ha sido aceptada, pero el procedimiento que sigue no se ha llevado a cabo
203
PARTIAL INFORMATION
Cuando se recibe este código en respuesta a un comando de GET indica que la respuesta no está completa.
204
NO RESPONSE
El servidor ha recibido la solicitud, pero no hay información de respuesta
205
RESET CONTENT
El servidor le indica al navegador que borre el contenido en los campos de un formulario
206
PARTIAL CONTENT
Es una respuesta a una solicitud que consiste en el encabezado range. El servidor debe indicar el encabeza docontent-Range
30x
Redirección
Estos códigos indican que el recurso ya no se encuentra en la ubicación especificada
301
MOVED
Los datos solicitados han sido transferidos a una nueva dirección
302
FOUND
Los datos solicitados se encuentran en una nueva dirección URL, pero, no obstante, pueden haber sido trasladados
303
METHOD
Significa que el cliente debe intentarlo con una nueva dirección; es preferible que intente con otro método en vez de GET
304
NOT MODIFIED
Si el cliente llevó a cabo un comando GET condicional (con la solicitud relativa a si el documento ha sido modificado desde la última vez) y el documento no ha sido modificado, este código se envía como respuesta.
40x
Error debido al cliente
Estos códigos indican que la solicitud es incorrecta
400
BAD REQUEST
La sintaxis de la solicitud se encuentra formulada de manera errónea o es imposible de responder
401
UNAUTHORIZED
Los parámetros del mensaje aportan las especificaciones de formularios de autorización que se admiten. El cliente debe reformular la solicitud con los datos de autorización correctos
402
PAYMENT REQUIRED
El cliente debe reformular la solicitud con los datos de pago correctos
403
FORBIDDEN
El acceso al recurso simplemente se deniega
404
NOT FOUND
Un clásico. El servidor no halló nada en la dirección especificada. Se ha abandonado sin dejar una dirección para re direccionar... :)
50x
Error debido al servidor
Estos códigos indican que existe un error interno en el servidor
500
INTERNAL ERROR
El servidor encontró una condición inesperada que le impide seguir con la solicitud (una de esas cosas que les suceden a los servidores...)
501
NOT IMPLEMENTED
El servidor no admite el servicio solicitado (no puede saberlo todo...)
502
BAD GATEWAY
El servidor que actúa como una puerta de enlace o proxy ha recibido una respuesta no válida del servidor al que intenta acceder
503
SERVICE UNAVAILABLE
El servidor no puede responder en ese momento debido a que se encuentra congestionado (todas las líneas de comunicación se encuentran congestionadas, inténtelo de nuevo más adelante)
504
GATEWAY TIMEOUT
La respuesta del servidor ha llevado demasiado tiempo en relación al tiempo de espera que la puerta de enlace podía admitir (excedió el tiempo asignado...)





¿Qué es un tipo MIME?

El tipo MIME (extensiones multipropósito de correo en Internet) es un estándar propuesto por los laboratorios Bell Communications en 1991 para ampliar las posibilidades del correo electrónico al incluir la posibilidad de insertar documentos (imágenes, sonidos y texto) en un mensaje.
Desde entonces, el tipo MIME se usa para dar formato tanto los documentos adjuntos en un mensaje como a los documentos transferidos a través del protocolo HTTP. Así, durante una transacción entre un servidor web y un explorador de Internet, el servidor web envía en primer lugar el tipo MIME del archivo enviado al explorador para que éste sepa cómo se mostrará el documento.

Lista de tipos MIME

Tipos MIME
Tipo de archivo
Extensión asociada
application/acad
Archivos de AutoCAD
dwg
application/clariscad
Archivos de ClarisCAD
ccad
application/drafting
Archivos de bosquejo preliminar de MATRA
drw
application/dxf
Archivos de AutoCAD
dxf
application/i-deas
Archivos de SDRC I-deas
unv
application/iges
Formato de intercambio CAO IGES
igs, iges
application/octet-stream
Archivos binarios no interpretados
bin
application/oda
Archivos ODA
oda
application/pdf
Archivos Adobe Acrobat
pdf
application/postscript
Archivos PostScript
ai, eps, ps
application/pro_eng
Archivos de ProEngineer
prt
application/rtf
Formato de texto enriquecido
rtf
application/set
Archivos CAO SET
set
application/sla
Archivos de estereolitografía
stl
application/solids
Archivos solids de MATRA
dwg
application/step
Archivos de datos STEP
step
application/vda
Archivos de superficie
vda
application/x-mif
Archivos de Framemaker
mif
application/x-csh
Secuencia de comandos C-Shell (UNIX)
dwg
application/x-dvi
Archivos de texto dvi
dvi
application/hdf
Archivos de datos
hdf
application/x-latex
Archivos de LaTEX
latex
application/x-netcdf
Archivos de NetCDF
nc, cdf
application/x-sh
Secuencia de comandos Bourne Shell
dwg
application/x-tcl
Secuencia de comandos Tcl
tcl
application/x-tex
Archivos tex
tex
application/x-texinfo
Archivos eMacs
texinfo, texi
application/x-troff
Archivos Troff
t, tr, troff
application/x-troff-man
Archivos Troff/macro man
man
application/x-troff-me
Archivos Troff/macro ME
me
application/x-troff-ms
Archivos Troff/macro MS
ms
application/x-wais-source
Fuente Wais
src
application/x-bcpio
CPIO binario
bcpio
application/x-cpio
CPIO Posix
cpio
application/x-gtar
Tar GNU
gtar
application/x-shar
Archivos Shell
shar
application/x-sv4cpio
CPIO SVR4n
sv4cpio
application/x-sv4crc
CPIO SVR4n con CRC
sc4crc
application/x-tar
Archivos tar comprimidos
tar
application/x-ustar
Archivos tar Posix comprimidos
man
application/zip
Archivos ZIP comprimidos
man
audio/basic
Archivos de audio básicos
au, snd
audio/x-aiff
Archivos de audio AIFF
aif, aiff, aifc
audio/x-wav
Archivos de audio Wave
wav
image/gif
Imágenes Gif
man
image/ief
Imágenes con formato de intercambio
ief
image/jpeg
Imágenes jpeg
jpg, jpeg, jpe
image/tiff
Imágenes tiff
tiff, tif
image/x-cmu-raster
Ráster cmu
cmu
image/x-portable-anymap
Archivos Anymap PBM
pnm
image/x-portable-bitmap
Archivos de mapa de bits PBM
pbm
image/x-portable-graymap
Archivos Graymap PBM
pgm
image/x-portable-pixmap
Archivos Pixmap PBM
ppm
image/x-rgb
Imágenes RGB
rgb
image/x-xbitmap
Imágenes X Bitmap
xbm
image/x-xpixmap
Imágenes X Pixmap
xpm
image/x-xwindowdump
Imágenes de volcado X Window
man
multipart/x-zip
Archivos Zip almacenados
zip
multipart/x-gzip
Archivos Zip GNU almacenados
gz, gzip
text/html
Archivos HTML
htm, html
text/plain
Archivos de texto sin formato
txt, g, h, c, cc, hh, m, f90
text/richtext
Archivos de texto enriquecido
rtx
text/tab-separated-value
Archivos de texto con separación de valores
tsv
text/x-setext
Archivos de texto struct
etx
video/mpeg
Video MPEG
mpeg, mpg, mpe
video/quicktime
Videos de QuickTime
qt, mov
video/msvideo
Videos de Microsoft Windows
avi
video/x-sgi-movie
Videos de MoviePlayer
movie


8:02