Jason: En esta lección,
vamos a discutir los tipos de protocolo IP,
incluyendo TCP, UDP, y los conceptos
de métodos sin conexión versus métodos
orientados a la conexión.
¿Qué es el TCP?
TCP es un Protocolo de Control de Transmisión.
Es un protocolo orientado a la conexión,
lo que significa que es una forma
fiable de transportar segmentos a través de nuestra red.
Ahora, si un segmento se cae,
el protocolo pedirá acuse de recibo cada
vez.
Y si no recibe ese acuse de recibo,
volverá a enviar esa información.
Es por eso que llamamos a esto un protocolo de conexión completa,
porque tiene este tipo de información de dos vías donde
te estoy enviando información
y estoy verificando que realmente la recibiste
escuchando que la recibiste y me das una respuesta.
Ahora vamos a mirar este pequeño diagrama
aquí en la pantalla por un segundo.
Vas a ver que tengo un cliente a la izquierda
y un servidor a la derecha.
Ahora, el cliente va a enviar lo que se llama un paquete
syn, o un paquete de sincronización,
al servidor.
Ahora, cuando el servidor
recibe eso, va a enviar
de vuelta un acuse de recibo de sincronización al cliente,
conocido como syn ack.
Ahora, cuando el cliente recibe ese acuse de recibo,
va a enviar de vuelta su propio acuse de recibo al servidor.
Es lo que se conoce como "ack".
Ahora, cuando hacemos esto syn, syn ack, ack, esto es lo
que nos referimos como un apretón de manos de tres vías.
Básicamente, el cliente dice: "Oye,
servidor, ¿estás listo para obtener información? Y entonces el servidor dice:
"Claro.
¿Por qué no?
"Envíame información. Y el cliente dice:
"Vale, aquí viene. Y entonces la transmisión va a comenzar porque
hemos establecido ese apretón de manos
a tres bandas y sabemos que ambas partes
están listas para comunicarse.
"Ahora, ¿estás listo? "Sí, así
es. "Aquí
viene. Cada vez que estos datos, que
llamamos segmento, se envían a través
de la red, se recibe un acuse
de recibo que nos indica que se ha producido
una comunicación bidireccional
satisfactoria.
Ahora bien, si este servidor está
esperando recibir 100 piezas de información,
pero sólo recibió 98 de ellas, va a decirle
al cliente: "Oye, me
dijiste que me ibas a enviar 100 cosas, "pero sólo me
enviaste 98".
"Mándame esas dos cosas que me faltan. Y entonces, se produce
una retransmisión.
De esta manera, la comunicación
puede ir para nosotros y siempre podemos asegurarnos
de que estamos recibiendo
lo que se supone que debemos porque
tenemos este reenvío de los paquetes a través de la
red.
Ahora se utiliza para todos los datos de
la red que deben asegurarse para llegar a su destino final.
Me gusta pensar en esto como en el correo certificado.
Si quiero enviar un mensaje a Hacienda, por ejemplo, quiero
asegurarme de que lo reciban
y no se pierda en el correo.
Así que puede que pague un poco más para obtener
un recibo certificado que, cuando
llegue allí, tengan que firmar y me lo
envíen por correo.
Así, cuando me devuelvan
el recibo, sabré que
Hacienda ha recibido mi paquete postal.
Así funciona el TCP.
Ahora, por otro lado,
tenemos otro protocolo conocido como UDP.
UDP es lo que llamamos un protocolo sin conexión, lo que significa
que no tiene que esperar conexiones.
UDP significa Protocolo de Datagramas de Usuario.
Y la razón por la que lo llamamos
datagrama es porque si estás usando UDP,
estás usando este tipo de datos.
Se llama datagrama.
Ahora, cuando hablamos de UDP,
UDP no es fiable y transmite
segmentos llamados datagramas.
Y si se caen, el remitente
ni siquiera sabrá que ha ocurrido.
Ahora bien, ¿por qué querría enviar cosas
de las que el remitente no se entera
y no recibo ningún tipo de acuse de recibo?
Bueno, UDP es realmente bueno para el streaming de audio y visual
porque envías muchos datos y hay mucha
menos sobrecarga cuando usas UDP, porque no tenemos
ese constante handshake de tres vías para
establecerlo y no tenemos
todas las comprobaciones y balances
que están asociados al uso de TCP.
Así que usando UDP, realmente
puedes aumentar el rendimiento de tu red porque
vas a tener cero retransmisiones.
Acabarás dejando caer información.
¿No es eso malo?
¿Por qué querríamos soltar información?
Bueno, para ciertas aplicaciones,
realmente no importa.
Por ejemplo, estás viendo este vídeo ahora mismo.
Y si lo dejara durante 1/100 de segundo,
¿te darías cuenta?
Bueno, probablemente no lo
harías y por eso UDP es tan bueno porque
podemos dejar caer 1/100 del tiempo aquí y realmente
nunca lo vas a notar, y no habrá una
retransmisión.
Pero con TCP, va a dar lugar a mucho más
buffering porque tienes que esperar,
y luego conseguir que te lo
reenvíen, y luego ponerlo
en el lugar correcto, y luego
reproducirlo.
Y así, debido a ese reconocimiento y esa sobrecarga,
por cada segundo de este video, va a terminar
haciéndolo mucho más grande y usando mucho
más ancho de banda.
Y esa es una de las grandes razones
por las que utilizamos UDP para la transmisión de vídeo y audio.
Hagamos un pequeño resumen de TCP frente a UDP.
Porque este es un concepto muy, muy importante.
De hecho, si tienes tus notas fuera ahora mismo,
yo apuntaría este gráfico que te
voy a contar ahora mismo mientras
hablamos de TCP frente a UDP.
Porque realmente es así de importante.
Ahora, en primer lugar, TCP es fiable, tiene
un handshake de tres vías,
mientras que UDP no es muy fiable.
Es un protocolo poco fiable
porque no hay un apretón de manos a tres bandas.
TCP es lo que llamamos un protocolo orientado
a la conexión o a la conexión completa, porque
tenemos ese apretón de manos
a tres bandas en los acuses
de recibo, pero UDP no tiene conexión.
Es un método de disparar y olvidar.
Simplemente empiezo a enviar
información y espero que la recibas.
TCP utiliza la retransmisión de segmentos y el control de flujo que
se maneja a través de ventanas.
En cambio, en UDP
no hay retransmisión ni ventanas.
Con TCP, tenemos segmentación
de nuestra secuenciación de todos nuestros
diferentes segmentos.
Con UDP, no hay secuenciación.
Ahora, lo que esto significa es que a medida que
envíe todo, voy a enviarlo en el orden correcto,
del uno al 100.
Haré esto tanto para TCP como para UDP.
Ahora bien, si te pierdes algunas de esas
piezas, o llegan en un orden diferente
porque toman un camino diferente a través de la
red, con TCP, están secuenciadas, por lo que sabe
que tienes de una a 1000 y las vuelve a
poner en la secuencia correcta.
Con UDP, cualquiera
que sea la forma en que se reciba,
así es como se transmitirá.
Y así, puede venir
en uno, 50, dos,
500, tres, cuatro, cinco,
seis, 20, en cualquier orden aleatorio
así.
Y así es como vas a oírlo.
En el caso del vídeo, es posible que oigas algunos
saltos o chirridos agudos, o algo parecido,
porque uno de esos fotogramas
puede haberse desordenado.
Ahora, cuando volvamos
a TCP, va a reconocer cada uno de esos segmentos.
Y así tenemos reconocimiento.
Si no lo recibo, sé
que no lo he recibido
y puedo hacer que me lo retransmitan y volver
a recibirlo.
Con UDP, no hay acuse de recibo.
De nuevo, UDP tiene mucha menos sobrecarga porque
no hay conexión, ni ventanas,
ni retransmisión, ni secuenciación,
ni acuse de recibo.
Ahora bien, si tienes que hacer llegar
algo y quieres asegurarte de que la persona
lo ha recibido, tienes que utilizar TCP como protocolo de elección.
Y por eso vamos a usar TCP para cosas como
la banca, los sitios web, el comercio electrónico
y cosas así.
Pero si tenemos algo que contiene muchos datos,
como audio o vídeo en streaming, UDP
funciona realmente bien porque no necesitamos
obtener cada fragmento
de ese archivo.
Podemos saltarnos un poco aquí
y allá, y eso está bien.
-: [Otro Instructor] Ahora, cuando se trata de TCP
y UDP, hablamos sobre el hecho de que estos son protocolos
de conexión completa u orientados a la conexión,
y protocolos sin conexión.
Así que déjame darte un par de ejemplos
de protocolos que utilizan TCP o UDP para que puedas entender
por qué usamos cada uno.
En primer lugar,
veamos TCP y nuestros
protocolos orientados a la conexión o de conexión completa.
Esto incluye cosas como SSH y HTTP o HTTPS.
Ahora bien, ¿por qué necesitaríamos la conexión orientada en estos casos?
Bueno, en el caso de usar algo como SSH, estoy haciendo
comunicación bidireccional y control de
servidor remoto o estación de trabajo remota, y poder
hacerlo sobre el puerto 22.
Quiero asegurarme de que lo hago
de una manera orientada a la conexión o llena de conexión.
De esta manera, cuando envío un comando y digo,
reinicia el servidor,
sé que ese comando realmente llegó allí
y el reinicio del servidor sucederá.
Del mismo modo, cuando estamos tratando con HTTPS, queremos
asegurarnos de que estamos teniendo una
conexión completa o protocolo orientado a la conexión utilizando TCP.
La razón de esto es, de nuevo,
que queremos asegurarnos de que
lo que estamos enviando es realmente recibido allí.
Y eso puede incluir cosas como la autenticación
cuando intentamos entrar en un sitio web
con nuestro nombre de usuario y contraseña,
o tal vez la información que recibimos
de ese sitio web, como los saldos de
nuestras cuentas y nuestra información bancaria.
Ahora, por otro lado,
si estamos utilizando UDP como nuestro protocolo,
estamos tratando de una manera sin conexión.
Ya he mencionado que
lo utilizamos todo el
tiempo para transmitir audio y vídeo.
Pero además de eso,
también lo usamos para cosas como DHCP, y el Protocolo
Trivial de Transferencia de Archivos, conocido como TFTP.
Ahora, si recuerdas,
DHCP es usado como el Protocolo de Control Dinámico de
Host y opera sobre los puertos 67 y 68.
Ahora, cuando te unes a una red,
tu dispositivo, si está configurado
para una asignación dinámica de su dirección
IP, enviará un mensaje de difusión en esa red en busca
de un servidor DHCP.
Por eso lo utilizamos como protocolo sin conexión.
Porque si se envía esa información y nadie responde, su cliente
simplemente volverá a enviarla con la esperanza
de que haya alguien más.
Así es como funciona DHCP.
Va a permitir que un mensaje de difusión para salir,
y luego esperar a que una respuesta para volver.
Si no recibe esa respuesta
en un plazo de tiempo determinado,
simplemente volverá a emitir su mensaje y, de
nuevo, buscará un nuevo servidor DHCP.
Ahora, de manera similar, cuando tenemos TFTP
o el Protocolo Trivial de Transferencia
de Archivos, que opera sobre el puerto 69,
va a funcionar de una manera sin conexión
usando UDP como su transporte.
La razón de esto es porque
TFTP es el Protocolo Trivial de Transferencia de Archivos, y por lo
tanto, no necesitamos tener las garantías de que
cada paquete fue enviado y recibido con esos
acuses de recibo, y eso crea
mucha más sobrecarga si usamos TCP.
Así que usando UDP, podemos tener
una transferencia de archivos más rápida
cuando estamos usando algo como TFTP, en lugar
de usar un protocolo más lleno de conexiones, como FTP.