0:12
vamos a aprender cómo podemos enviar un mensaje desde el cliente hacia el
servidor y que este mensaje llegue correctamente al servidor.
Por supuesto, la respuesta del servidor debería de ser también,
de la misma manera.
Es decir, asegurarnos que, efectivamente, llegue al servidor.
El protocolo HTTP, en realidad, hablamos de que existe una especie de alfabeto.
Sabemos que, de muy bajo nivel, existe un alfabeto en donde una
combinación de unos y ceros representa una a, o representa una b, o representa una c.
Esto fue de manera arbitraria.
De la misma manera, ahora necesitamos pensar un poquito más alto nivel.
Es decir, no solamente caracteres individuales, sino mensajes completos,
estructuras completas de información en donde lo estaremos formateando,
ya sea en xml o en JSON, y la manera en que esos mensajes,
ya establecidos como JSON o como otro tipo de formato,
nos aseguramos de que salga bien del cliente y que llegue adecuadamente,
en el mismo orden, al servidor, lo va a asegurar el protocolo HTTP.
Tenemos otros protocolos en internet, como FTP que,
precisamente, nos ayuda a hacer la procedencia de archivos y todos forman
lo que es la familia TCP/IP.
En realidad, cuando hablamos de protocolo, hablamos de una serie de reglas de
etiqueta de tal suerte que la comunicación se lleve a cabo.
Si no tenemos esas reglas de etiqueta,
pues todo mundo hablaría y no se entendería absolutamente nada.
Vamos a hablar de este protocolo HTTP que, en realidad, podríamos definirlo como
protocolo de transferencia de hipertexto, en donde es, realmente,
la comunicación a nivel de las aplicaciones y no a nivel más bajo.
Se puede llegar a confundir lo que es HTTP y lo que es HTML.
HTTP, como decíamos, nos asegura que
un mensaje enviado por un cliente hacia un servidor llegue de manera adecuada.
En realidad, el mensaje original es, de alguna manera,
fragmentado en partes y, esas partes, habrá que reunirlas o juntarlas
de la misma manera o la misma secuencia que salieron del cliente.
HTML, por el contrario, en lo que se enfoca es en la presentación del mismo.
Los dos fueron inventados por Tim Berners-Lee y, de alguna manera,
reglamentan y facilitan todo el proceso de internet.
Vemos una gráfica donde, precisamente,
el cliente lanza una petición hacia el servidor.
¿Quiero abrir una petición, una conexión?
Después vamos a hablar de los diferentes métodos que existen, precisamente en HTTP.
Le envía un método GET, que ese método GET, ¿qué significa?
Que quiere obtener un recurso directamente del servidor.
El servidor le puede decir okey, aquí está el recurso que andas necesitando.
Posiblemente, también me marca un error porque ese recurso no está contenido
dentro del propio servidor y, finalmente, se cierra la conexión.
El protocolo HTTP, en realidad, tiene muchas terminologías.
Vemos que existen diferentes como grados de protocolo,
vemos el IPB4, IPB6 que, como recordarán, esto es, simplemente,
que las direcciones en internet se acabaron ya hace algunos años,
IPB6 asegura que habrá más direcciones en el futuro para que todo mundo
pueda tener su dirección y, sobre todo, con el internet de las cosas.
Hablamos de la familia, también, de TCP/IP donde
5:07
Normalmente, por ejemplo, los puertos asociados para el protocolo de
transferencia de archivos son el puerto 20 y telnet utiliza también el puerto 23.
Entonces, la idea es que normalmente tenemos compuesta
una dirección de un recurso o de una dirección a través de un número IP y
de un puerto que especifica la aplicación dentro del servidor y,
aquí vemos como un cliente
busca un recurso dentro de la red o lo está dirigiendo hacia un servidor.
Normalmente, no manejamos, los humanos,
fácilmente números, manejamos nombres; pues alguien tiene que
transformar ese nombre del servidor hacia un número IP del que estamos hablando.
Entonces, es el servidor que se conoce como el DNS o el servidor de nombres.
Le establecemos una petición, nos regresa con el número IP.
Nosotros, normalmente,
sabiendo que es el número IP y que el puerto 80 es donde se encuentra el
servidor web, le hacemos llegar directamente la petición al servidor.
El servidor responderá con el archivo.
En este caso, estamos estableciendo el método GET.
Es decir, queremos conseguir un recurso dentro de ese servidor.
Si se encuentra dentro del servidor, nos responderá
con el archivo correspondiente y cerraremos la comunicación.
En la gráfica podemos ver
los diferentes componentes con los que consta una petición.
Esta es la estructura.
Muchas veces no se ve directamente, pero existe por debajo esto.
Primero es el método.
Uno de los métodos, que ya vimos es el GET.
Vamos a ver que existen otros métodos, pero está el método,
después viene un espacio, que es realmente la barra espaciadora; el URL, es decir,
propiamente, ya sea el nombre o la dirección
IP del servidor; la versión del HTTP, es decir,
del protocolo y, después, vemos dos campos que les estoy poniendo como rc al.
7:15
Esto es un poco confuso, sobre todo para las personas nuevas en computación.
Los que venimos en tiempos un poco prehistóricos sabemos qué significa
esto si pensamos en una máquina de escribir.
Lo que significa el regreso de carro es que el rodillo
regresa a la parte izquierda para que comencemos a escribir en el margen
izquierdo del papel, y la alimentación de línea quiere decir
que el rodillo lo movimos hacia adelante para mostrar una nueva línea.
Es lo que está significando.
Dentro del protocolo HTTP tenemos diferentes formas
de transferir la información, diferentes formas de codificar los datos.
En la tabla vemos lo que sería el UTF8, que es lo que normalmente usamos
ya en las aplicaciones, que lo podemos ver como un ASCII extendido.
Hago referencia, sobre todo, a los códigos que andan por ahí, en la gráfica anterior,
como regreso de carro, que tienen su código en específico.
Por ejemplo, regreso de carro es 13,
alimentación de líneas es 10 Todo tiene un código por debajo, es decir, un código
que fue hecho de manera arbitraria por los humanos y que decidieron
ésta combinación de unos y ceros va a significar esto para la máquina y que
todas las máquinas lo deberían interpretar de la misma manera, de tal manera que se
puede establecer una comunicación entre los diferentes elementos.
De los métodos, tenemos el método GET,
que decimos que queremos obtener un recurso dentro del internet; HEAD
solamente queremos ver propiamente el encabezado de la propia petición.
9:00
diferentes opciones, es decir, cuando le mandamos el método opciones le decimos,
¿qué tipo de cosas puedes responder tú como servidor?
TRACE si queremos hacer una traza, desde que se hace la petición hasta que
llega al servidor y esos serían los métodos que se consideran seguros.
¿Seguros por qué?
Porque es algo que le llamamos que es idempotente.
¿Qué quiere decir esto?
Que a pesar de que los ejecutemos una y otra vez,
no modificamos el estado del servidor.
Los métodos que se consideran inseguros son aquellos que tienen como propósito el
modificar el estado del servidor, como son POST, es decir, de alguna manera yo
quiero modificar claramente, a lo mejor, una base de datos del lado del servidor y,
por tanto, el estado del servidor va a ser cambiado; PUT, queremos poner un archivo
dentro del servidor, DELETE, pues le queremos borrar un archivo en el servidor.
Y esto sería la anatomía de lo que sería la respuesta.
Ya establecemos la comunicación con el servidor, el cliente ya le envión una
petición y el servidor le va a responder con algo, con un tipo de respuesta.
Entonces, lo primero que vemos es la versión del protocolo.
Este es el primer campo.
Después viene un espacio que, si vemos la tabla Unicode, que acabamos de ver,
es el número 32.
Después el código de estado, es decir, fue exitosa o no fue exitosa esa petición y,
después, regreso de carro y alimentación de línea.
Una vez que establecemos esa comunicación y que el servidor ya nos contestó,
pues vemos ciertos códigos dentro de ese encabezado vemos como ciertos códigos.
Por ejemplo, 1xx, es decir 100, 101, 102,
nos indica que la información fue recibida por el servidor.
Los 200 fue 200, 201, 202, que fue exitoso.
300 que se redireccionó, es decir, el servidor no pudo contestar a una petición,
lo redireccionó a otro servidor.
400, 401, por ejemplo el famoso 404, que indica
que no existe el recurso dentro del servidor y 500,
501 es que el servidor ha tenido problemas y no pudo contestar con ello.
Pues con eso estamos terminando la lección sobre los conceptos
básicos de programación de internet.
Nos vemos en el siguiente video.