*1) ¿Qué es un protocolo? ¿Qué es un protocolo de comunicaciones? Brinde un ejemplo en cada caso. ¿Qué define un protocolo de comunicaciones?*
En su concepción mas simple, podemos entender a un protocolo como un conjunto de reglas que dicen como “hacer algo”. Según [KUR], se trata de un conjunto de mensajes que al ser recibidos y entendidos nos solicitan ejecutar acciones y en algún caso, enviar un nuevo mensaje. El conjunto mensajes transmitidos y recibidos, y las acciones ejecutadas en función de esos mensajes, serian la parte central de los protocolos.
En el caso de un protocolo de comunicaciones, podemos entenderlo como un conjunto de normas que regulan como debe ser el intercambio de información entre entidades que necesitan interactuar entre si.
[KUR] define formalmente protocolo como:
Un protocolo define el formato y el orden de los mensajes intercambiados entre dos o mas entidades que se comunican, así como las acciones que se toman en la transmisión y/o recepción de una mensaje u otro evento.
Según [STA], un protocolo esta definido por:
Una sintaxis: Relacionado a la estructura de datos.
Una semántica: Tiene que ver con el significado de los elementos, para confirmación y detección de errores.
Una temporalidad: Tiene que ver con la secuenciación de las acciones para comunicarse. (Es decir, ciertas acciones deben ocurrir antes que ocurran otras)
*2) ¿Por qué se plantean arquitecturas de protocolos? ¿Por qué son jerárquicas? ¿Por qué predomina un modelo de capas?*
El problema de comunicar dos entidades es complejo. Se requieren varias acciones, en un orden especifico, para lograr que dos entidades se comuniquen de una manera correcta. Entonces, con una metodología _Top Down_ se plantea subdividir el problema de la comunicación en otros problemas mas simples, y por lo tanto, mas factibles de ser resueltos.
Al lograr esta división, observamos que hay problemas comunes a cualquier tipo de comunicación, y hay problemas particulares de cada aplicación que desea comunicarse. Por ejemplo, no es lo mismo transmitir un correo de un cliente de correo a otro, pero la transmisión a bajo nivel es la misma (son señales analógicas). Entonces, comprender esto hace que exista no un solo protocolo, sino un conjunto de protocolos que articulan entre si. (Protocolos que entienden los clientes de correo, protocolos que entienden las placas de red, etc…)
Siguiendo con el ejemplo del cliente de correo, nos damos cuenta de que armar la estructura del _mail_ saliente para el otro cliente es una obvia etapa anterior a la transmisión de los datos en si, vemos que existe una secuencia de acciones. Entonces vemos que existen jerarquías. Algunos programas realizan ciertas tareas sobre la información a transmitir, y luego la delegan a otro bloque de programas que ejecutaran otras acciones. Estos programas ajustan la información al protocolo para que la transmisión se haga de forma correcta y la otra entidad pueda entender la información.
Por ultimo, se han juntado ciertas tareas comunes en lo que se denomina “capa”. Una capa es un conjunto de protocolos y programas que ajustan la información a dicho protocolo, para que luego esta sea delegada a una capa inferior que realiza otra acción sobre la información en función de otro protocolo. Entonces, aquí tenemos lo que se conoce como “pila de protocolos”, un conjunto apilado de protocolos, donde la capa superior realiza ciertas acciones, y luego pasa a la capa inmediatamente inferior la información procesada. En el proceso inverso (el receptor), una capa inferior realiza alguna acción sobre la información y luego la envía a la capa superior cuando dicha información esta en condiciones de ser procesada por dicha capa.
Cada una de estas capas resuelve un problema particular del proceso de comunicación y desde el punto de vista teórico, modificar una capa no debería implicar la modificación de las otras.
!/blog/public_images/2.png!
*3) ¿Por qué se plantea que para lograr una comunicación ambos extremos deben dialogar utilizando el mismo protocolo? ¿Cómo se realiza el diálogo si se tiene en cuenta que hay varios niveles?*
Resulta absurdo pensar que dos personas pueden entenderse si hablan idiomas diferentes y no entienden el idioma del otro. De la misma manera, si cada fabricante impusiera para sus propios computadores o software protocolos cerrados, la interactividad que tienen las computadoras actuales seria imposible. En base a esto, la pila de protocolos _TCP/IP_ se ha ido imponiendo como estándar de facto. Esto permite la comunicación de computadoras independientemente del Hardware o Software que tengan.
Luego de esto, al ser un conjunto de capas, se plantea la dificultad de que interactúen las capas. Para esto, se utiliza el concepto de pares. Teniendo en cuenta que ambas computadoras (por decir un producto) tengan implementado el mismo protocolo, la información se intercambia entre capas concurrentes, o pares. Es decir, lo que una capa en una computadora procesa, la misma capa en la otra computadora, la procesa en el sentido inverso, y la información se envía en sentido contrario.
En la figura de la pregunta 2) vemos claramente el sentido de la circulación de la información En la entidad transmisora, la información circula de arriba a abajo. En la ultima capa se produce la transferencia de información hacia la otra entidad, y la entidad receptora lo recibe por la capa mas inferior, y lo procesa en sentido inverso y lo envía a la capa inmediatamente superior, y así hasta llegar a la ultima capa, que es el programa de aplicación.
Lo que hay que entender es que cada capa le agrega un bloque de datos a la información a transmitir, que la capa par en el receptor utiliza para realizar su trabajo.
*Bibliografía*
* [STA]: Stallings, “Comunicaciones y redes de computadoras”. 7ma edición. Capítulos 1,2
* [KUR]: Kurose, J., Ross, K., “Redes de Computadores. Un enfoque descendente basado en Internet”. 2003. 2ª Edición en Español, Pearson Education. Capítulo 1.
Como siempre, lo único que hice yo es compilar el material existente. Si hay dudas o criticas, comenten el _post_.