|
El TCP proporciona fiabilidad
Para proporcionar un servicio fiable a la aplicación, el protocolo TCP se basa en los siguientes principios:
- Transmisión libre de errores: el TCP debe entregar a la aplicación de destino exactamente la misma información que le entregó la aplicación de origen. De hecho, se trata de una entrega "casi libre" de errores, ya que puede haber errores que un mecanismo de detección de errores no pueda detectar.
- Garantía de entrega de la información: el TCP garantiza que toda la información transmitida por la aplicación de origen se entregará a la aplicación de destino. En el caso de que esto no sea posible, el TCP debe avisar a la aplicación y decirle que no puede entregar la información.
- Garantía de mantenimiento de la secuencia de transmisión: el TCP garantiza que entregará el flujo de información en el mismo orden en que se lo entregó la aplicación de origen.
- Eliminación de duplicados: el TCP garantiza que sólo entregará una copia de la información transmitida a la aplicación de destino. En caso de que reciba copias a causa del funcionamiento de la Red o de los protocolos que se implementan por debajo del nivel de transporte, el TCP las eliminará.
Las siguientes propiedades del protocolo TCP garantizan un servicio libremente fiable de la información:
- El TCP define flujos (stream oriented): la aplicación organiza los datos de información en flujos (streams) de bits divididos en bytes. Como consecuencia, el receptor pasa a su aplicación el mismo flujo de bytes que la aplicación de origen ha pasado al TCP. Por otra parte, la aplicación no tiene ninguna manera de indicar al TCP los límites en los cuales quiere transferir la información. Es el TCP el que decide en cada momento cuántos bytes transfiere a un segmento.
- El TCP está orientado a la conexión: puesto que el TCP es un protocolo orientado a la conexión, tendrá una fase de establecimiento de la conexión, una de transmisión de datos y una de desconexión. De hecho, funciona de manera muy parecida a una conexión por circuito virtual en la cual el identificador de circuito virtual es el puerto que identifica cada aplicación.
Se debe tener en cuenta que el TCP puede transportar múltiples conexiones a diferentes sistemas y, por lo tanto, es necesario identificarlos de la misma manera que una red por circuito virtual multiplexa múltiples conexiones y las identifica con una marca (identificador de circuito virtual).
- El TCP utiliza el concepto de buffered transfer: cuando se transfiere información, el TCP divide los flujos de datos (bytes) que le pasa la aplicación en trozos del tamaño que le convenga. El TCP decide el tamaño de los segmentos tanto si la aplicación genera un byte de información como si genera flujos de gran dimensión. En el primer caso, el TCP puede esperar que la memoria intermedia esté más llena antes de transferir la información, o bien puede transferirla inmediatamente (mecanismo push). En caso de que los flujos sean muy grandes, el TCP puede dividir la información en tamaños más pequeños antes de transferirlos.
- El TCP utiliza una conexión full duplex: la transferencia de información es en ambos sentidos. La aplicación ve dos flujos independientes. En caso de que la aplicación cierre uno de los flujos, la conexión pasa a ser half duplex. Esto quiere decir que uno de los extremos (el que no ha cerrado la conexión) puede continuar enviando información para el canal, mientras que el otro extremo (el que ha cerrado la conexión) se limita a reconocer la información. De todas maneras, no es normal que nos encontremos con este caso. Lo más habitual es que si un extremo cierra la conexión, el otro también cierre la suya.
Con la finalidad de proporcionar fiabilidad, el TCP combina mecanismos de control de errores y de flujo muy parecidos a los utilizados en los protocolos del nivel de enlace.
|