Diferenciar TCP y UDP

diferentes protocolos Leyendo el otro día una pregunta sobre comunicaciones en un foro, vi que después de haberle respondido sobre como establecer un enlace TCP, la persona que tenia la duda, pregunto:  ¿Entonces si conecto dos cables ya tendré establecida la comunicación?.

 Mucha de la gente que se aproxima a las comunicaciones entre ordenadores y se les habla de una serie de siglas como RJ45, TCP/IP, UDP, POP3, etc. se les forma un pequeño batiburillo mental, en el cual confunden conceptos básicos. Es por ello, que aunque iba a intentar hablar de dos conceptos que son el TCP y el UDP, voy a intentar explicar antes a que zona de la comunicación pertenecen para que nadie se pierda en el camino.conexiones cableadas

 Simplificando mucho, una comunicación la comprenden una parte física, como cables, conectores, redes (cableadas, ópticas, inalámbricas, etc.). Otra parte lógica, como los programas de comunicaciones y utilidades diversas y una parte que podríamos llamarla normativa o protocolaria en cuanto a la comunicación (no confundir con los protocolos físicos de cableados y similares).

 Cuando hablamos de la parte normativa, nos referimos a un acuerdo por las dos partes de una comunicación, es decir, cómo se van a entender. Contestan a preguntas como:

 -¿Podrán hablar las dos partes o solo hablara uno?.

 -¿Se confirmara por el receptor cada mensaje que llegue?

 -¿Qué tamaño máximo tendrá cada mensaje?

 -¿Cómo se informara de la cantidad de datos del mensaje?

 -¿Se podrán volver a pedir los mensajes que no lleguen?

 -¿Cómo sabremos que los datos enviados son los mismos que los recibidos?

 -Si hay varios comunicándose al mismo tiempo ¿Cómo sabré de quien es cada mensaje?.

comunicacion TCP Es en esta parte “normativa” en la que tenemos que centrarnos al diferenciar los protocolos TCP y UDP. En el primero se da prioridad a la fiabilidad de los datos frente a la velocidad de comunicación, en el caso del UDP, es al contrario. No importa que se pierda algún dato, pero es importante que lleguen la mayor cantidad de datos posibles.

 Para que lo entendamos, el TCP es necesario para cualquier transferencia de datos que deba ser correcta, como nuestro nombre, números de cuenta, firmas digitales, etc. En cambio el UDP es interesante para transferir por ejemplo imágenes de la televisión, de una película o en definitiva elementos de streaming que no son excesivamente críticos si se pierde algún dato, pero que es importante que mantenga la constancia y velocidad en los datos suministrados.TCP y UDP

 Es por ello que se dice que el protocolo TCP esta orientado a conexión, puesto que las dos maquinas conversan y se ponen de acuerdo mediante un canal establecido para la comunicación entre ellas, de forma que nada se pierda ni se altere, mientras que el protocolo UDP, no establece previamente la comunicación con la maquina de destino ni la maquina origen espera contestación por los datos enviados a la maquina destino, por tanto en este caso se habla de una comunicación unidireccional.

 

Texto, Formatos y usos

baudot En informática los archivos de texto te diferentes tipos, se han usado a lo largo de toda su historia. El formato de cada archivo dependía originalmente de los formatos que cada equipo daba al mapa de caracteres de su sistema, así pues habían sistemas a partir del código BAUDOT, como el EBCDIC (Extended Binary Coded Decimal Interchange Code) o el ASCII (Código estándar estadounidense para el intercambio de información, American Standard Code for Information Interchange).

ASCII Este ultimo fue que el que se impuso en la mayoría de los PCs, aunque en un comienzo se hablo de ASCII básico y extendido. El ASCII básico lo componían los primeros 128 caracteres de la tabla (0-127), mientras que el extendido lo componían los caracteres 128 al 255. Esta segunda parte servia para elementos particulares de idiomas y equipos. Por ejemplo, encontramos las vocales acentuadas en cualquiera de sus formas, los caracteres especiales franceses y alemanes y algunos elementos como el símbolo del “²” indicando el cuadrado o el circulo “º” que indica grados, el símbolo del copyright “©” o el de Marca Registrada “®”.

codigos oem Se hizo de esta forma para que cualquier carácter se pudiera representar con 8 bits (1 byte) de datos, es decir, con un valor entre 0 y 255 deberían poderse representar todos los caracteres en todos los idiomas. Para poder simplificar y puesto que habían idiomas cuyos caracteres eran totalmente diferentes al resto del mundo, se creó una cosa llamada paginas de códigos OEM del sistema. Con esto se conseguía que simplemente enviando un carácter de 6 bits antes del carácter que queríamos enviar, cambiaba la tabla de códigos del carácter que iba a continuación y así nos servían para cualquier idioma.Editores y procesadores

 Basándose en esta forma de hacer las cosas, todos los editores y procesadores de textos han usado protocolos propios para poder variar cosas en el texto. Desde un editor de texto plano como el Notepad incluido en el propio Windows que muestra el texto tal cual a un procesador de textos como el Word o el Writter del Acrobat en los cuales se usan bytes auxiliares para poder representar tipos de letra, tamaños, formas, posiciones, etc.

 Una variación de este último planteamiento es el que se usa para estandarizar presentaciones e intercambio de datos mediante etiquetas que informan de lo que contiene o de que forma se debe representar cada párrafo escrito. En realidad se trata de archivos de texto plano que un programa se encarga de interpretar. Algunos ejemplos de esto, son el código HTML usado para paginas Web o el XML que se usa para intercambio de datos e incluso las paginas generadas en cualquier “Wiki” que use el estándar de Wikimedia. Wikimedia

 Con esta breve explicación, intento que se comprenda la importancia de los archivos de texto plano, que han sido usados por todos los sistemas operativos y por todas las empresas que se han dedicado y se dedican a la informática.

Capas OSI y TCP/IP

7 capas OSI Ya he hablado anteriormente del TCP/IP y de una parte física usada para su comunicación cuando hablaba del RJ45. Hoy intentare ampliar un poco más sus vericuetos.

 Según nos especifica el modelo OSI (Open Systems Interconnection model), para establecer la comunicación nos basamos en un modelo de siete capas, comenzando de la parte inferior, es decir la parte física más palpable, a la parte más visual o con la que interactuamos, estas capas son:

 1.- Capa Física: conexiones físicas de la computadora hacia la red

 2.- Capa de Enlace de Datos: dirección física, detección de errores, control del flujo, etc.

 3.- Capa de Red: Enrutamiento de los paquetes.Relacion TCP/IP

 4.- Capa de Transporte: transporte de los datos y control de puertos

 5.- Capa de Sesión: mantiene y controla una sesión establecida.

 6.- Capa de Presentación: Traduce los datos al lenguaje de cada máquina.

 7.- Capa de Aplicación: Usa protocolos para enlazar las aplicaciones con las demás capas.

 estructura comunicacionEn el modelo TCP/IP que conocemos, estas capas se agrupan en cuatro de forma que:

 1.- Capa 1 (capa de enlace), une a las capas 1 y 2 del modelo OSI.

 2.- Capa 2, corresponde a la capa 3 OSI (Red) y es la que correspondería a la parte IP del modelo tcp/ip.

 3.- Capa 3, corresponde a la capa 4 OSI (Transporte) y es la que se encarga del TCP en el modelo tcp/ip.

 4.- Capa 4. Agrupa las capas 5, 6 y 7 del modelo OSI. Se podría definir como capa de aplicación.TCP/IP

 Cuando hablaba de la estructura de los datos enviados (paquetes o datagramas) de un PC a otro, avisaba que “no todos los paquetes usan el mismo camino de un PC a otro y la red no garantiza que los paquetes lleguen, ni que lleguen en un orden determinado”.

Datagrama IP La capa de red, con IP se encarga de crear los paquetes de datos, generando una comprobación de datos de cabecera y enviando los paquetes al destino. No es misión de esta capa el comprobar que lleguen los todos los datos ni que lleguen correctamente ni incluso en un orden determinado. Esta misión corresponde a la capa de transporte, en la que nos encontramos al TCP, que se encargara de ordenar los paquetes que van llegando, verificar que los datos que contienen sean los que se han enviado e incluso de volver a unir todos los datos que se habían troceado para poder enviar los paquetes, de controlar la congestión de los datos e incluso de establecer y terminar la conexión entre PCs.

 Debido a la relevancia de estas dos capas, es por lo que los elementos usados en ellas son los que han dado nombre al protocolo de comunicación tcp/ip, aunque no sean los únicos elementos que la componen.

 

Transmisión Control Protocol – TCP

comunicacion TCP El TCP es un protocolo bastante complejo que se ha ido revisando y ampliando a lo largo de los años, como las revisiones de 1981 y del 2001. Este protocolo se encarga de establecer una especie de circuito virtual entre los dos PC. Para entenderlo imaginemos lo siguiente:

 Llamamos por teléfono a un amigo nuestro y en el momento en que el descuelga el auricular, tenemos establecida una comunicación entre nosotros dos. Las demás llamadas o conversaciones que pueda haber por la línea telefónica no nos importaran hasta que nosotros no acabemos nuestra conversación. Hemos establecido una conexión valida para conversar. Esta seria misión del TCP.estructura TCP

 Pero además resulta que queremos podernos ver mientras hablamos, comentar lo que hemos hecho el fin de semana y además enviarnos un fax por la misma línea telefónica por la que hablamos. El TCP, para recibir y enviar paquetes con diferentes contenidos entre los PC, usa un concepto llamado “puerto”, con el cual identifica que tipo de mensaje es el que está enviando o recibiendo. Un puerto es un numero entre 0 y 65535 que es el identificador que usa un servicio determinado para identificarse.

puertos TCP La cantidad de mensajes enviados y recibidos, puede congestionar la comunicación establecida, es por tanto bastante necesario que el TCP se encargue de intentar descongestionar el circuito.

 Posiblemente algunas personas hayan tenido el problema de que algún programa de ordenador no les funcionara y buscando la solución, les hayan dicho que tenía que abrir un puerto determinado del PC o del router de conexión a internet. Esto es debido a que si un determinado puerto no esta abierto, el servicio que el TCP ofrece por ese determinado puerto, no estará disponible.TCP-FTP

 Como ejemplo, aquello que nos muestra el navegador por http (paginas Web), nos llega por el puerto 80, mientras que una transferencia de archivos por FTP, la realizaremos por el puerto 21.

 Para aquellos que no hayan oído hablar nunca del FTP, si tienen Windows, pueden entrar en “Símbolo del sistema” (si no lo encuentran, ir a inicioejecutar y teclear “cmd” sin las comillas). Una vez allí, teclear “ftp” sin comillas y al aceptar, estaremos en la consola de ftp. Para ver que funciones tenemos, teclear “help” y cuando queramos salir, teclear “quit”.

 En próximas entradas situaré este protocolo dentro del entorno del TCP/IP, pero para ello, ante había que dar una pequeña explicación sobre el.

 

Dudas sobre el HTML5

 Basado en un texto original en ingles de Pau Garcia i Quiles de fecha 30 de enero 2012, con pequeñas partes de cosecha propia para hacer más cercano el concepto. Pido perdón por los posibles errores en la interpretación de su planteamiento y asumo los errores cometidos en la traducción y modificación del texto.

moviles y HTML El HTML5 es la primera plataforma móvil que es compatible con cualquier fabricante de tecnología para móviles: iPhone , Android, Windows Phone, BlackBerry , Symbian. Todos ellos lo soportan.

 Windows 8 dice que promueve el HTML5 como la solución de desarrollo preferido para las aplicaciones .

 Yo solía ver eso con buenos ojos, pero hace un mes comencé a preocuparme… ¿HTML5 es bueno para todo?

funcionalidad html ¿Que ocurre con las aplicaciones de larga duración?

 En operaciones militares, industriales, de gestión de almacenes, médicos, etc, no es raro que las aplicaciones se desarrollen a medida y permanezcan en uso durante muchos años y me refiero a muchos (10, 20 e incluso más), con apenas una actualización. No es raro que estas aplicaciones sólo reciban pequeñas actualizaciones, por ejemplo una vez cada 5 años. Estas aplicaciones, son las que mantienen al mundo en marcha: las tropas saben con qué materiales se puede contar, se fabrican iPhones, coches, pinturas. Seur o FedEx son capaces de entregar su paquete y su médico tiene la posibilidad de ver sus radiografías o verificar su historial de salud.transportes

 Pero ahora que todo el mundo parece estar desplazándose hacia aplicaciones web HTML5, ¿que sucede cuando mi solicitud de gestión de almacenes es una aplicación web y los añadidos (add-ons) en los nuevos navegadores, hacen que la aplicación web ya no funcione?

¿Son inútiles las actualizaciones en el futuro?Actualizacion navegadores

 Si mi aplicación web ha sido liberada en el 2014 y funciona bien con Firefox 14.0 y Chrome 26.0, que son las versiones más nuevas de los exploradores cuando libero la aplicación en 2014. Miro hacia adelante el futuro con Firefox 14.0 y Chrome 26.0 y veo que ni siquiera podré instalar Windows 10 en los equipos! ¿Cuál es la solución?

 ¿Quizás el cliente pague por una gran actualización y rediseño para que funcione con Firefox 27.1 y Chrome 41,0 en el 2020?

Scada ¿Una máquina virtual con Windows 8 y Firefox 14,0? ¿Una máquina portátil de Mozilla Firefox 14.0 y Windows 10 en el año 2020 para poder utilizar esta aplicación en una línea de negocio que sólo requiere una pequeña actualización, una vez o dos cada 5 años? ¿Cómo son o serán las máquinas virtuales y/o portables con Firefox 14.0 diferentes o mejores en el caso de un cliente pesado? ¿Cuál es la ventaja? ¡Yo diría que ninguna!

Windows 8 Las aplicaciones nativas, por lo general no tienen ese tipo de problemas, ya que las API son mucho más estables. Pueden ejecutar todavía aplicaciones de Windows de 16 bits en Windows 7 (siendo este un S.O. de 64 bits)!

 ¿No me creen? ¡Es posible que pronto veamos el desarrollo de 76 navegadores!

 Mientras que HTML5 puede ser adecuado para las aplicaciones que se actualizan muy a menudo, me hace sentir muy incómodo ver que se utiliza en entornos donde las aplicaciones se actualizan muy poco o casi nunca, como SCADA (sistemas de supervision y control), gestión de almacenes, sistemas de control, registros médicos, etc

Se necesita una solución

 Parece que esa elección de la tecnología va a hacer que las aplicaciones sean mucho más caras a medio y largo plazo, pagando por la “adaptación a los nuevos navegadores” (lo siento, me resisto a llamar “actualizar” a algo de cero valor añadido, aparte quizás, de ser capaz de ejecutarse en un navegador más reciente).

 O tal vez ya es hora de definir el actual “perfil de HTML5”. Acid3 parece ser demasiado flojo para un perfil: dos navegadores diferentes pueden pasar Acid3 sin embargo, una aplicación web trabaja con un navegador y no con el otro debido a los errores, la falta de características / características adicionales, etc

 ¡Algo que hay que hacer.!

HTML y W3C

Mosaic Mirando internet desde nuestra perspectiva temporal, nos damos cuenta de la cantidad de problemas y escollos que ha tenido que salvar para llegar a su estado actual. La comunicación de los primeros ordenadores con los antiguos sistemas operativos, que permitía una cantidad muy limitada de funciones en cuanto a comunicación de datos y menos todavía a nivel de visualización “amigable” de los datos comunicados, se vio pronto desbordada por la inclusión en la red de ordenadores diferentes y sistemas operativos de lo mas variado.web 2.0

 La base de la comunicación por paquetes y mediante TCP/IP quedaron definidos casi en el comienzo de la red, pero funcionalidades como las actuales y elementos de uso frecuente como blogs, rss, foros, etc, estaban todavía por venir

 Aunque fue un invento más bien tardío, el elemento que dio el espaldarazo final a internet, fue la creación del navegador. Desde el Incipiente Mosaic, a los ampliamente difundidos Netscape e Internet Explorer o finalmente los reconocidos Firefox, Chrome, Safari u Opera, no han dejado de evolucionar.

html Pero para que todo esto no se desmadrara, han hecho falta dos cosas:

 La primera, un lenguaje que todos estos navegadores consiguieran entender e interpretar de forma coherente. Ese honor le correspondió al HTML (HyperText Markup Language) que junto al HTTP (HyperText Transfer Protocol, Protocolo de Transferencia de HiperTexto) fueron la base para poder usarlos.W3C

 La segunda, alguien que pusiera orden en el caos que se podría producir si cada creador de un navegador, usara su propio “dialecto” del HTML. Los encargados de esto, han sido las personas del W3C (World Wide Web Consortium). Crearon las normas para que la interpretación de los navegadores y la creación de páginas web, fueran lo más homogéneas posible.

 Podemos imaginarnos los problemas que podríamos tener si hubiese que ir convirtiendo un lenguaje a otro al no haber establecido unas normas básicas. A pesar que las normas estén establecidas como una guía, no como una ley. Es por ello que muchas veces veremos que hay partes de páginas o cosas concretas en la web, que no se ajustan a la norma.fuente pagina web

 Un ejemplo de que veríamos si abrimos en formato de texto, lo que hay en una página web lo más básica posible, es:

<html>

<head>

</head>

<body>

Cuerpo de la página.

</body>

</html>

html5 Lo cual nos muestra una serie de marcas incluidas entre los caracteres “<>” que nos indican su comienzo <…> y su final </…> para saber que todo lo que se incluye entre estas dos marcas, pertenece a lo que establece la marca (head=cabecera, body=cuerpo, etc).

 La necesidad de nuevos elementos y funcionalidades en las paginas, ha hecho que el HTML evolucione hasta convertirse en el HTML5 (HTML versión 5), del cual ya comentaré cosas más adelante.