
  Titre: INTIMIDADES DEL TCP/IP

From: LU3FPN@LU3FPN.ROS.SF.ARG.SA
To  : TCPIP@LATNET


  INTIMIDADES DEL TCP/IP
  ~~~~~~~~~~~~~~~~~~~~~~

  TCP/IP es un conjunto de normas y protocolos para la conexin de computa
  dores,  redes y sistemas  de distinta topologia.  Naci y se fue desarro
  llando por la necesidad que  tenan distintos organismos de interconectar
  sus computadores y fue adoptado por  un nmero tan importante de usuarios
  que  se lo acept como un protocolo  estandar. Esto es lo que se denomina
  un "estandar  de facto".
  Actualmente se dispone de una abundante oferta de programas TCP/IP comer
  ciales y gran cantidad de  usuarios se han inclinado por TCP/IP  para re
  solver sus problemas de interconexin.
  Las razones por las que este protocolo "de facto" ha encontrado tan buena 
  receptividad son:  su madurez,  su amplio  set de  protocolos, que brinda 
  interoperabilidad y un alto nivel de funcionalidad. 


  Veamos  con un  ejemplo grafico  como se  podrian vincular un conjunto de 
  computadores (H=Host), usando TCP/IP. 
  (Aclaracin: si bien en los ejemplos que siguen el packet-radio ocupa el
   centro de la escena, esto est lejos de ser as.)

  El  esquema muestra algunos Hosts  relacionados entre s directamente por
  redes locales. Tambin hay Hosts integrando una red de packet-radio y una
  lnea directa entre Hosts.
  Vemos gateways [G] enlazando redes entre s.
  En algunos casos [HG] el computador es tanto Host como Gateway. 


           |~~~|                                    |~~~|
           | H |                                    | H |
   |~~~~|  |___|                                    |___|      |~~~|
   | H1 |    \                                        |        | H |
   |____|\     \                                      |        |___|
          /~~~~~~~~~\                            /~~~~~~~~~\    /
         (   LAN     )          |~~~~~|         (    LAN    ) /
         ( Network A )----------| G2  |---------( Network B )
        / \_________/\          |_____|         /\_________/ \
      /                \                      /                \
   |~~~~|           |~~~~|                 |~~~~|              |~~~~~|
   | HG |           | Gx |                 | G  |              | HGm |
   |____|           |____|                 |____|              |_____|
     |                 \                     /                    |
     |       |~~~|       \/~~~~~~~~~~~~~~~~~\         |~~~|       |
     |       | H |------/                     \-------| H |       |
     |       |___|     (    Packet Radio       )      |___|       |
     |                 (                       )                  |
     |       |~~~|     (    Network VHF        )      |~~~|       |
     |       | H |------\                     /-------| H |       |
     |       |___|        \_________________/         |___|       |
     |                    /                   \                   |
     |                  /                       \                 |
     |             |~~~|                         |~~~~|           |
     |             | G |                         | Gy |         /'
     |             |___|                         |____|       /
     |            /                                 |       /
   |~~~~|    /~~~~~~~~~~~~\                   /~~~~~~~~~~\/      |~~~|
   | HG |___( Packet Radio )      |~~~|      (            )______| H |
   |____|   ( Network UHF  )------| G |------( Network  D )      |___|
          /~(              )      |___|      (            )
        /    \____________/                   \__________/\
     |~~~|                                                  \___|~~~~|
     | H |                                                      | H2 |
     |___|                 H = Host                             |____|
                           G = Gateway
                          HG = Host y Gateway



  Si suponemos  que el Host 1 [H1] desea transferir un archivo con [H2]
  podran establecer enlace por el siguiente camino:

     [H1]<<->>[Network-A]<<->>[Gx]<<->>[Packet-Radio]<<--
                                      -->>[Gy]<<->>[Net D]<<->>[H2]
  Pero  tambien podria usar el  camino:

   [H1]<<->> [Net A]<<->>[Gz]<<->>[Net B]<<->>[HGm]<<->>[Net D]<<->> [H2].

  La comunicacion puede pasar  por alguno de estos  dos caminos o por cual
  quier otro. 
  TCP/IP se encargar  de seleccionar el camino de acuerdo a ciertos crite
  rios definidos por el implementador de la red y a la calidad de los cami
  nos disponibles. Mas an, conmutar de camino dinmicamente si las condi
  ciones del circuito elegido se alteran. 
  [H1] puede, en el mismo momento, mantener  otras sesiones de comunicacin
  con cualquier otro Host o con el mismo [H2]. 
  Un Host con funciones de Gateway, puede sostener simultneamente sesiones
  de comunicacin y de Gateway.
  Se puede apreciar el grado de libertad operativa que provee TCP/IP. 


  Como Lo Hace? 
  ~~~~~~~~~~~~~
  Supongamos que se transmite informacin, a la cual llamaremos DATA.
  La DATA es dividida en  segmentos y encapsulada en bloques  de estructura 
  compatible con el medio de transporte, incluyendo informacin que permita
  su recuperacin.  Es decir que a la  DATA se agrega informacin adicional
  que permite el  control de la integridad la  secuencia y, posiblemente de 
  la estructura. La  segmentacin, encapsulado y re-ensamblado puede reite
  rarse varias veces en el camino (o en un mismo computador al pasar de un
  nivel funcional a otro, hasta llegar a su destino.  Ms adelante nos refe-
  riremos a los "niveles").


  Mirando el TCP/IP por dentro
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Intentar comprender que hace TCP/IP  internamente no es algo imprescindi
  ble para el usuario. Slo lo  ayuda a entender la estructura y  funciona
  miento ntimos del sistema.

  Como las aplicaciones TCP/IP requieren un complejo conjunto de  funciones 
  de comunicacin, (muchas de las cuales son comunes a todas, como los meca
  nismos  de  control  y  seguridad),  ha resultado ventajoso agruparlas en 
  "bloques funcionales", los que interactuan entre s.

  El programa tiene, entonces, una  arquitectura modular, donde cada mdulo
  o bloque realiza alguna de las tareas requeridas. 

  A estos bloques los podemos  imaginar como "niveles" de actividad, super
  puestos. La comunicacin transita de un nivel a otro y cada nivel ejecuta
  su parte. Estos niveles son:

  - Nivel de acceso a la red (Network Access layer)
  - Nivel Internet (Internet layer) 
  - Nivel Computador-a-Computador (Host-to-Host)
  - Nivel de procesos (Process layer) 

  Cada nivel interactua con el nivel inmediato anterior o con el siguiente 

  Network Access layer: es el nivel que se ocupa de la vinculacin entre el
  Host (computador) y la Network (red de trabajo a la que est conectado) y
  de solicitar  ciertos servicios que la red  provee, como el de prioridad. 
  El protocolo especfico  usado por este  nivel depender del  tipo de red
  (X.25, packet, X.21, LAN, etc.) 

  Internet  layer: un protocolo inter-redes provee,  en ste nivel, los re
  cursos para mantener el control de la comunicacin y el ruteo cuando sta
  pasa a travs de mltiples redes. Este Internet Protocol o IP explica una
  parte del nombre de esta modalidad (tcp/IP). 

  Host-to-Host layer: independientemente de  la naturaleza de los  procesos 
  de intercambio (FTP, Telnet, etc.)  un requerimiento esencial es la  con
  fiabilidad. La informacin debe arribar al proceso de destino sin errores
  y en el  mismo rden con que  fue enviada. En ste  nivel se reunen todos
  esos mecanismos de seguridad y es el Transmision  Control Protocol, abre
  viadamente TCP (y da tambien el nombre al TCP/ip). 

  Process layer: finalmente ste  nivel contiene los protocolos  necesarios
  para  soportar las  distintas aplicaciones.  Cada aplicacin  requiere un
  protocolo especfico (FTP, SMTP, etc.).

  Un esquema de los "niveles" (layers) puede ayudar a la comprensin:


                  |~~~~~~~~~~~~~~~~~~~~~~~~~~|
                  |        Nivel de          |
                  | Procesos / Aplicaciones  |
                  |   FTP - SMTP - TELNET    |
                  |--------------------------|
                  |   Nivel  Host-to-Host    |
                  |          TCP             |
                  |--------------------------|
                  |     Nivel Internet       |
                  |           IP             |
                  |--------------------------|
                  | Nivel de Acceso a la Red |
                  |__________________________|


  Un aspecto fundamental de la arquitectura TCP/IP es que uno o ms protocolos
  operan en cada nivel y que dos protocolos semejantes, del mismo nivel, pero
  en sistemas diferentes co-operan para lograr la comunicacin.

  El enlace entre dos sistemas se producir por alguno de estos niveles, el que
  corresponda a la naturaleza de los sistemas. De modo que no siempre estaran
  involucrados todos los niveles en una comunicacin.

  Otra consideracin es que los mecanismos comunes a (casi) todos los protoco-
  los que integran TCP/IP son:      ..........................................
   * Segmentacion y re-ensamblado   :NOTA: la similitud entre lo que aqu se :
   * Encapsulado                    :  describe y la filosofa del protocolo :
   * Control de conexin            :  AX.25 indica el alto grado de coheren-:
   * Direccionamiento               :  cia entre ambos. De all que su inte- :
                                    :  gracin resulte tan razonable.-       :
                                    :........................................:
  Segmentacion/Re-ensamblado
  ~~~~~~~~~~~~~~~~~~~~~~~~~~
  El/los protocolo/s manejan la transferencia de informacin (DATA) entre dos
  "entidades" (niveles o sistemas). Usualmente esto se hace en bloques de DATA
  de extension limitada. En el nivel de Procesos, llamaremos a cada unidad lo-
  gica de DATA transferida: "mensaje". Los procesos (Telnet, FTP, SMTP, etc.)
  envian DATA en "mensajes" o de modo contnuo. Pero los protocolos de ms ba-
  jo nivel pueden requerir manejar bloques ms pequeos. Esto es "segmentar"
  la DATA.  Un bloque de DATA transferido entre dos "entidades" se denomina
  PDU (protocol data unit).
       .......................................................................
       :Aqu hemos incorporado el concepto de "entidad". Un computador es una:
       :entidad y tambin lo son los niveles (layers). La "entidad" es un ob-:
       :jeto virtual que pasa o recibe informacin sin importar su existen-  :
       :cia fsica.                                                          :
       :.....................................................................:

  Las razones de la segmentacin son:
  * La red de comunicaciones puede aceptar solamente bloques de hasta una
    cierta magnitud.
  * El control de errores puede ser ms efectivo con PDUs chicos. Si un error
    es detectado, se repite menos informacin.
  * Los medios de comunicacin pueden ser compartidos con ms equidad. Ningn
    dispositivo monopoliza el medio.
  * PDUs pequeos requieren tambin buffers pequeos.
  * Una entidad puede requerir alguna clase de interrupcin temporal para rea-
    lizar verificaciones y luego reiniciar o recuperar la operacin.

   Seria ventajoso que los bloques sean tan grandes como sea posible, ya que:
  * Cada PDU contiene una cantidad de informacin de control, de modo que con
    bloques pequeos la relacion DATA/PDU disminuye.
  * La llegada de un PDU genera una interrupcin para su atencin y muchos
    bloques chicos demandan ms interrupciones.
  * El procesamiento de muchos PDUs chicos demanda ms tiempo de CPU.


  Encapsulado
  ~~~~~~~~~~~
  Es el proceso de agregar informacin de control a la DATA (sin embargo al-
  gunos PDUs slo llevan informacin de control sin DATA).
  Bsicamente la informacin de control puede ser de:
  - Direccionamiento (orgen y destino).
  - Deteccin de errores.
  - Control del protocolo.
  Recibido y validado el PDU, la informacin de control es desechada y los
  segmentos son re-ensamblados para su envo al nivel superior.

  Control de conexin
  ~~~~~~~~~~~~~~~~~~~
  Si bin una entidad puede transmitir a otra sin coordinacion (connectionless
  data transfer), muchas veces es requerida la transferencia con las entidades
  en estado de conexin (connection-oriented data transfer), fundamentalmente
  para intercambios de cierta extensin y cuando ciertos aspectos del proto-
  colo pueden variar dinmicamente durante la transferencia. La conexin es la
  formacin de un circuito lgico (virtual) entre las entidades y sus fases
  son:
  - Conexin
  - Transferencia de DATA
  - Desconexin
    (Pueden incluirse tambin interrupcin y recuperacin, etc.)
  Durante la fase de conexin, dos entidades NEGOCIAN el intercambio de DATA.
  Segn sea el protocolo, esta negociacin puede ser sobre cuestiones muy ba-
  sicas o tan complejas como la sintaxis, la semntica, el "timing" del enla-
  ce, la extensin mxima de los PDUs, etc.
  Ya establecida la conexin, se entra en la fase de la transferencia de in-
  formacin incluyendo la DATA y la informacin de control (flujo, errores,
  etc.).

  Direccionamiento
  ~~~~~~~~~~~~~~~~
  Si co-existen dos o ms procesos de comunicacin (en un mismo medio), es
  necesario poder diferenciar una de otra. Observar que:
  - Una entidad puede estar dialogando simultneamente con ms de una enti-
    dad remota y cada una de stas debe ser identificada perfectamente de
    manera de poder mantener el seguimiento y control de cada dilogo.
  - Algunos protocolos (FTP, por ej.) pueden requerir identificacin del co-
    rresponsal remoto para control de acceso.
  - Los niveles bajos (host-to-host, internet, network access) requieren in-
    formacion suficiente para rutear los PDUs a travs de los medios de co-
    municacin y enviarlos a destino.

  La arquitectura de comunicaciones de TCP/IP ha sido pensada para crear un
  ambiente en el cual puede haber mltiples redes, mltiples computadores en
  cada red y mltiples procesos en cada computador. Esto demanda un complejo
  sistema de direccionamiento.


  Comunicacion TCP/IP 
  ~~~~~~~~~~~~~~~~~~~
  Para manejar adecuadamente las comunicaciones los computadores integrados 
  al sistema se identifican con una direccin (nombre) que no se repite: el
  IP-address, compuesto por 4 grupos de numeros separados por un punto.
  Ej.: Mi IP address o direccin IP es 44.153.64.00 (cada grupo puede asu-
  mir un valor entre 0 y 255).
  Ahora bien, si tenemos presente que, en TCP/IP, un computador puede estar 
  ejecutando  simultneamente varios procesos con  un mismo o con distintos
  computadores de  la red, veremos que una  segunda referencia debe ser in
  cluida: la del proceso involucrado en la comunicacin.
  La direccion de un proceso se llama PORT. Se trata de un port interno del
  programa y no debe ser confundido con  el concepto de "port de comunica-
  ciones" (o sea que no se trata, esta vez, de los com1, com2,... etc.).

  Estas dos direcciones aseguran que la informacin sea  dirigida al compu
  tador adecuado y, ya en el, al proceso o tarea correcta. 

  En  el esquema  siguiente vemos  una comunicacin  entre dos computadores
  (Hosts A y B) conectados a dos redes (Networks 1 y 2) las que estn rela
  cionadas mediante un Gateway. 


           HOST A                                       HOST B
     ___________________                           ___________________
    |    ___________    |                         |    ___________    |
    |  (             )  |                         |  (             )  |
    | (  Aplicaciones ) |                         | (  Aplicaciones ) |
    |  ( ___________ )  |                         |  ( ___________ )  |
    |     /   |   \     |                         |     /   |   \     |
    |___x_____x_____x___|<--- x=Ports             |----x----x----x----|
    |                   |                         |                   |
    |       T C P       |                         |       T C P       |
    |-------------------|                         |-------------------|
    |        I P        |<--- Direccionamiento    |        I P        |
    |-------------------|     Global de la Red    |-------------------|
    |   Network Access  |                         |   Network Access  |
    |    Protocol #1    |                         |    Protocol #2    |
    |___________________|                         |___________________|
             \                Direcionamiento                 /
               \ <------- de entrada a la red               /
            ____|___                                   ____|____
          (          )          Gateway X            (           )
         (            )      |~~~~~~~~~~~~~~~|      (             )
        (   Network 1  )     |      I P      |     (   Network 2   )
         (            )\_____|---------------|_____/(             )
          ( ________ )       | NAP 1 | NAP 2 |       ( _________ )
                             |_______|_______|



  Si un proceso asociado al port 1 del Host A desea enviar informacin (que
  de aqu en ms llamaremos DATA) al proceso del port 2 del Host B suceder
  lo siguiente: 
  El proceso, en A, pasa la DATA a su nivel TCP (Host-to-Host) con instruc
  ciones de enviarlo al Host B port 2. 
  El nivel TCP de  A pasa la DATA al nivel  internet (IP) con instrucciones 
  de enviarla al Host B,  pero la fragmenta en porciones de magnitud facil
  mente manejables agregndoles un encabezamiento (TCP header) que contiene
  informacin  que ser usada por el TCP  del Host B (Port de destino, para
  saber a que proceso debe ser asignada; Nmero de secuencia, para  contro
  lar o reponer el orden; Checksum, para verificar que no haya errores). El 
  resultado ("TCP-header"+"porcion-de-DATA") es un "segmento TCP".

  El nivel IP recibe  los "segmentos" que debern ser transmitidos a travs
  de una o ms redes (pasando quizas por Gateways), de modo que se requeri
  r nueva informacin de control, la que se pone en un nuevo encabezamien
  to: el "IP-header". Ahora, "segmento-TCP"+"IP-header" forman un "datagra
  ma IP". Un tem del IP-header es la direccin del Host B.

  El nivel  IP pasa el "datagrama"  al nivel Network Access  (acceso a red) 
  con instrucciones de  enviarla al Gateway, primer "salto" en su viaje ha
  cia el Host B. 
  Por ltimo, el nivel Network  Access crea un nuevo header que contiene la
  informacin que la red necesita para  transferir Data por la red (el con
  tenido  del header  variar segun  los requerimientos  de cada red). Este
  header agregado al Datagrama forman el "Packet", que es transmitido desde 
  el Host A a la red. 
  Cuando el packet llega al Host B se hace el proceso inverso. 
  En el esquema vemos  un Gateway que vincula las redes 1  y 2. Al pasar la 
  informacin a la  segunda red, los  datagramas y los  packets debern ser
  los  adecuados al  nuevo medio.  Para satisfacer  estos requerimientos el 
  Gateway realiza tres pasos, empleando dos niveles: 

  - Nivel Network Access: siguiendo el protocolo de la red Network 1 extrae 
  el datagrama IP del packet que llega y lo pasa al nivel IP. 

  - Nivel IP: rehace el  datagrama con nuevo IP header y lo devuelve al ni
  vel Network Access. 

  - Nivel Network Access:  crea un nuevo packet de acuerdo  al protocolo de 
  la red Network 2. 

  Un esquema de fragmentacin y encapsulado podra ser as:


                __________________________
               |  D A T A (informacin)   |                Procesos:
               |__________________________|                TELNET, FTP,
               /            /\             \               SMTP, etc.
             /            /    \____         \____
           /            /            \             \
      |~~~|~~~~~~~~~~~~|          |~~~|~~~~~~~~~~~~~|
      |TCP|            |          |TCP|             |  <-- Segmentos (TCP)
      "~~~~~~~~~~~~~~~~'          "~~~~~~~~~~~~~~~~~'
      :                :          :                 :
   |~~|~~~~~~~~~~~~~~~~|       |~~|~~~~~~~~~~~~~~~~~|
   |IP|                |       |IP|                 |   <-- Datagramas (IP)
   "~~~~~~~~~~~~~~~~~~~'       "~~~~~~~~~~~~~~~~~~~~'
   :                   :       :                    :
|~~|~~~~~~~~~~~~~~~~~~~|    |~~|~~~~~~~~~~~~~~~~~~~~|
|PH|                   |    |PH|                    |   <-- Packets
"~~~~~~~~~~~~~~~~~~~~~~'    "~~~~~~~~~~~~~~~~~~~~~~~'


  Aqu suponemos que la informacin  (DATA) es fragmentada en solo dos blo
  ques para facilitar la construccin del grfico.

  Como es  fcil de  imaginar, las  estaciones TCP/IP  de packet-radio, que
  estn interconectadas, constituyen una red, en la que el protocolo utiliza-
  do es el AX.25  y por lo  tanto, el packet-TCP/IP  es un Frame normal de
  packet-radio  y en su encabezamiento incluye los indicativos de las esta-
  ciones que intervienen encuadrandose as en las normas vigentes para las
  radiocomunicaciones de aficionados.

                                                 - FIN -
  Norberto LU3FPN @ LU3FPN.ROS.SF.ARG.SA
  Rosario (SF).-
