Protocols de la capa de transport

Els protocols de la capa de transport supervisen la transmissió de les dades d’extrem a extrem, és a dir, des d’un programa que s’està executant en un host A d’una xarxa X fins a un altre programa que s’està executant en un host B d’una xarxa Y. La capa de transport actua com a lligam entre les capes superiors (sessió, presentació i aplicació) i les capes inferiors (xarxa, enllaç de dades i física). D’aquesta manera, les capes superiors poden utilitzar els serveis de la capa de transport per interactuar amb la xarxa sense haver d’interactuar directament amb les capes inferiors.

Les principals funcions de la capa de transport són dues:

  • el control del flux d’extrem a extrem, que ve proporcionat per les finestres “lliscants”, i
  • la fiabilitat de la transmissió, que és garantida pels paquets d’acusaments de rebut o ACK (acknowledgment packets) i pels nombres de seqüència.

Alguns exemples de protocols de la capa de transport són el protocol TCP (transmission control protocol) i el protocol UDP (user datagram protocol). De fet, són els dos protocols d’ús habitual a la capa de transport del conjunt TCP/IP.

Funcions de la capa de transport

Els serveis de la capa de transport són implementats per un protocol de la mateixa capa que és utilitzat per comunicar dos hosts (figura).

Figura Serveis de la capa de transport

Els serveis proporcionats per la capa de transport fan una funció semblant als serveis que proporciona la capa d’enllaç de dades. Els serveis de la capa d’enllaç de dades, però, actuen sobre una única xarxa, mentre que els de la capa de transport actuen sobre una internetwork formada per diverses xarxes.

Els serveis proporcionats pels protocols de la capa de transport es poden dividir en cinc grans categories: transmissió de missatges d’extrem a extrem, adreçament, fiabilitat de les transmissions, control del flux i multiplexació.

Encaminador i capes OSI

El router o encaminador és un dispositiu de capa 3 en el model OSI, és a dir, implementa la capa física, la capa d’enllaç de dades i la capa de xarxa.

Transmissió de missatges d'extrem a extrem (end-to-end delivery)

La capa de xarxa supervisa la transmissió dels paquets individuals de dades d’extrem a extrem (entre el host emissor i el host receptor). A la capa de xarxa, però, no és tenen en compte les possibles relacions existents entre els diferents paquets, ni tan sols en el cas de paquets que pertanyen a un mateix missatge, és a dir: la capa de xarxa tracta cada paquet de manera independent. Per contra, la capa de transport s’assegura de la transmissió correcta de tot el missatge, que estarà format per diversos paquets individuals que caldrà ordenar en la destinació.

Fragmentació de missatges en paquets

Abans de ser enviats del host origen al host destinació, els missatges són fragmentats en paquets, els quals són enviats de forma individual per la xarxa. Aquests paquets solen incloure informació, com ara l’ordre del paquet dintre del missatge, que permet la reconstrucció del missatge original al host destinació.

Transmissions d'extrem a extrem

La transmissió d’extrem a extrem és un concepte que fa referència a les transmissions que es produeixen entre dos hosts situats en xarxes distintes.

Punts d'accés al servei

Algunes piles o suites de protocols combinen en un únic paquet diferents protocols de les capes superiors (sessió, presentació i aplicació). Això fa que sovint els serveis que presta la capa de transport a la capa de sessió siguin, en realitat, serveis al conjunt de capes superiors: les dades generades en la capa d’aplicació d’un host A s’hauran de lliurar a un programa determinat dels que s’estan executant en la capa d’aplicació d’un host B destinació, és a dir, hi poden haver múltiples comunicacions establertes entre ubicacions concretes del host A i ubicacions concretes del host B (figura).

Aquestes ubicacions es coneixen amb el nom de punts d’accés al servei (service access pointso SAP).

Per tal de garantir la transmissió correcta de les dades entre els respectius punts d’accés al servei, ens caldrà un tercer nivell de direccionament (a més del físic i del lògic): els protocols de la capa de transport han de saber quins protocols de capes superiors s’estan comunicant.

Figura Punts d’accés al servei o SAP

Fiabilitat de les transmissions

En la capa de transport, la fiabilitat de les transmissions es fonamenta en quatre mecanismes de control bàsics:

Suma de verificació

Les tècniques de suma de verificació o checksum fan ús d’operacions algebraiques per detectar canvis no intencionats entre les dades emeses i les dades finalment rebudes.

  1. Control d’errors. Els serveis de la capa d’enllaç de dades garanteixen la transmissió sense errors entre dos nodes de la mateixa xarxa. Això, però, no és garantia que no hi hagi errors entre el lliurament d’extrem a extrem en una internetwork (per exemple, errors produïts en els encaminadors no serien detectats per les funcions de la capa d’enllaç de dades). En la capa de transport es fa ús d’algoritmes implementats en programari, com ara la suma de verificació o checksum, per detectar errors en la transmissió d’extrem a extrem. Quan un error és detectat, es procedeix a la retransmissió dels paquets corresponents.
  2. Control de la seqüència. Al host origen de la transmissió, la capa de transport és responsable de garantir que les dades rebudes des de les capes superiors són utilitzables per les capes inferiors: quan la unitat de dades rebuda de les capes superiors és més gran que la mida d’un datagrama o d’una trama, el protocol de transport la divideix en blocs més petits anomenats segments (procés de segmentació); si, per contra, la unitat de dades provinent de les capes superiors és més petita que la mida d’un datagrama o d’una trama, el protocol de transport pot concatenar diverses d’aquestes unitats per formar-ne una d’única (procés de concatenació). D’altra banda, en el host destinació de la transmissió, la capa de transport és responsable de garantir que els paquets rebuts són correctament assemblats per donar sentit al missatge: molts serveis de la capa de transport afegeixen un nombre de seqüència al final de cada segment; aquest nombre indica l’ordre en què els segments s’han d’assemblar (si s’ha produït segmentació) o dividir (si s’ha produït concatenació) en la destinació.
  3. Control de pèrdues. Els nombres de seqüència permeten als protocols de capa de transport del host receptor identificar qualsevol segment perdut i sol·licitar-ne el reenviament. D’aquesta manera, la capa de transport garanteix que tots els segments d’una transmissió arribin a la seva destinació final.
  4. Control de duplicitats. Els nombres de seqüència permeten als protocols de capa de transport del host receptor identificar i descartar els segments que s’han rebut per duplicat. D’aquesta manera, la capa de transport garanteix la no-duplicitat dels segments rebuts.

Control del flux: finestres "lliscants"

La capa de transport és també la responsable del control del flux en una transmissió d’extrem a extrem dins una internetwork.

El control del flux és un conjunt de procediments que permeten indicar al host emissor quina quantitat de dades (en nombre de paquets o en nombre de bytes) ha de transmetre abans de parar-se a esperar un acusament de rebuda o ACK per part del host receptor. El flux de dades no ha de saturar mai el buffer del host receptor.

Internetwork

Una internetwork o internet (no confondre amb Internet) és qualsevol xarxa formada per diverses xarxes connectades entre si mitjançant dispositius de capa 3 (encaminadors, per exemple).

Els dos mètodes més habituals per controlar el flux d’una transmissió són el mètode stop-and-wait i el de finestra lliscant:

  • En el mètode stop-and-wait l’emissor espera l’acusament de rebuda per a cadascun dels paquets de dades que envia, de manera que no enviarà un nou paquet fins que no rebi l’ACK del paquet anterior. Òbviament, aquest mètode de transmissió no és gaire eficient, ja que cal esperar la confirmació de cada paquet enviat abans de poder-ne enviar un de nou.
  • En el mètode de finestra lliscant (sliding window), l’emissor pot enviar un nombre acordat de paquets abans d’esperar un únic acusament de rebuda o ACK per a tots ells. El terme finestra lliscant fa referència a un rang o finestra imaginària que va desplaçant-se per sobre de la seqüència de paquets que conformen la transmissió (figura).
Figura Finestra lliscant

La major o menor amplitud d’aquesta finestra determina el nombre màxim de paquets que poden ser transmesos abans de requerir el corresponent ACK. Quan el host receptor envia un ACK, hi inclou el nombre del paquet següent que espera rebre, és a dir, per confirmar la recepció correcta de tots els paquets fins al paquet 2, el receptor envia un ACK amb el nombre 3 (figura). Si algun dels paquets no arriba a la seva destinació, o bé arriba deteriorat, el receptor torna a demanar-lo.

Figura Procés ACK

En aquesta figura si, per exemple, el paquet 2 hagués arribat amb una suma de comprovació errònia, el receptor enviaria un ACK 2 i l’emissor hauria tornat a enviar el paquet 2.

Multiplexació a la capa de transport

Per millorar l’eficiència de la transmissió, la capa de transport permet fer multiplexació. La multiplexació en aquesta capa pot ser de dos tipus (figura):

  • Múltiples connexions de capa de transport utilitzen la mateixa connexió de xarxa (multiplexació ascendent). La capa de transport utilitza circuits virtuals basats en els serveis proporcionats per les capes inferiors. La capa de transport permet compartir l’ús d’un mateix circuit virtual per part de diverses transmissions. Així, gràcies a la multiplexació ascendent, diferents aplicacions (HTTP, FTP, etc.) o diferents usuaris poden estar compartint un mateix circuit virtual.
  • Una connexió de capa de transport utilitza múltiples connexions de xarxa (multiplexació descendent). La capa de transport també permet dividir una única connexió en diferents circuits virtuals per tal de millorar la velocitat de transmissió.
Figura Multiplexació a la capa de transport

Serveis orientats a connexió: intercanvi de senyals a tres passes

La transmissió de dades d’extrem a extrem es pot dur a terme en mode orientat a connexió o bé en mode no orientat a connexió.

Circuit virtual

Un circuit virtual és una connexió entre dos hosts que, tot i estar basada en múltiples connexions físiques que poden anar variant amb el temps, funciona -des del punt de vista lògic- com una única connexió directa.

Un protocol orientat a connexió estableix un circuit virtual a través de la internetwork entre el host emissor i el receptor. Tots els paquets d’un mateix missatge són enviats per aquest circuit virtual.

Utilitzar un únic circuit per enviar tots els paquets d’un mateix missatge facilita el procés d’enviament i recepció d’acusaments de rebuda i la retransmissió dels paquets perduts o defectuosos. Per tant, els serveis orientats a connexió són considerats serveis altament fiables. La transmissió orientada a connexió té tres etapes:

1. Establiment de la connexió. Abans que un dispositiu pugui enviar dades a un altre, el dispositiu que inicia la comunicació ha de comprovar la disponibilitat de l’altre per rebre dades i s’ha d’establir un camí a través de la xarxa per on s’enviaran les dades. L’establiment de la connexió requereix tres accions concretes que configuren l’anomenat procés de salutació a tres passes (three-way handshake), tal com es mostra a la figura.

  • El host que sol·licita la connexió envia un paquet de sol·licitud de connexió al host destinatari.
  • El host destinatari retorna un paquet de confirmació al host sol·licitant.
  • El host sol·licitant envia un paquet amb l’acusament de rebuda del paquet de confirmació.
Figura Procés de salutació a tres passes

2. Transferència de dades.

Datagrama

Un paquet o datagrama és un conjunt de dades amb un format especial que en permet la transmissió per la xarxa. En alguns textos, el terme paquet es reserva per fer referència a qualsevol conjunt de dades llest per ser transmès, mentre que el terme datagrama es reserva per fer referència a paquets d’un servei no fiable, com ara el que proporciona UDP.

3. Finalització de la connexió. Un cop totes les dades s’han transferit, cal finalitzar la connexió. Aquest procés de finalització també requereix una salutació a tres passes:

  • El host que havia iniciat la transmissió envia un paquet al host receptor en què sol·licita la desconnexió.
  • El host receptor confirma la sol·licitud de desconnexió.
  • El host sol·licitant respon amb un paquet d’acusament de rebuda del paquet de confirmació.

Protocols de capa de transport i ports

En la pila TCP/IP, hi ha dos protocols clau associats a la capa de transport: TCP i UDP. El protocol UDP es fa servir quan es vol prioritzar la velocitat de la transmissió sobre la fiabilitat de la transmissió (per exemple, serveis de videoconferència). La majoria d’aplicacions, però, fan ús del protocol TCP, ja que aquest protocol proporciona fiabilitat a les transmissions d’extrem a extrem.

El protocol IP transmet un datagrama des del host origen fins al host destinació, i és, per tant, un protocol de host a host. Els sistemes operatius actuals, però, són multiusuari i multiprocés. Per tant, quan un datagrama arriba a un host que està executant diversos processos concurrents, cal determinar quin dels processos és el veritable destinatari de la transmissió. D’altra banda, la transmissió procedirà d’un procés concret dels múltiples processos concurrents en el host origen.

En el seu ús més habitual, el concepte de procés fa referència a un programa en execució.

Els protocols de transport de la suite TCP/IP defineixen un conjunt de punts de connexió en processos individuals anomenats ports. Un port és un punt d’origen o de destinació de les dades, habitualment un buffer, que permet emmagatzemar dades que seran utilitzades per un procés concret.

La interfície entre els processos i els seus ports corresponents la proporciona el sistema operatiu del host.

Buffer

En el seu ús més habitual, es pot entendre el concepte de buffer com una àrea del host destinació en la qual s’emmagatzemen temporalment les dades transmeses fins que poden ser processades per l’aplicació destinació.

Els protocols de capa de transport de la pila TCP/IP són protocols port a port. Aquests protocols transmeten el datagrama des del port origen fins als serveis IP del host origen i des dels serveis IP del host de destinació fins al port de destinació. Cada port és identificat per un enter positiu entre 0 i 65.535 que s’inclou en la capçalera del datagrama que es transmet. Un exemple de port és el port 80, que s’utilitza habitualment per acceptar sol·licituds de pàgines web mitjançant el protocol HTTP.

UDP (user datagrama protocol)

UDP (user datagrama protocol) opera en la capa de transport del model OSI i proporciona serveis de transmissió ràpida de dades però sense fiabilitat.

UDP és un protocol no orientat a connexió, és a dir, UDP no comprova que el host destinació estigui disponible abans de començar la transmissió. Per aquest motiu, UDP no ofereix cap garantia que els paquets enviats seran rebuts en el host destinació. Com que tampoc no fa ús de nombres de seqüència, UDP no ofereix cap garantia que, en el cas que els paquets arribin a la destinació, aquests siguin rebuts en l’ordre correcte. A més, UDP tampoc no proporciona mètodes de detecció d’errors. Tot això fa que les transmissions UDP no es puguin considerar fiables.

Tot i no proporcionar transmissions fiables, en ser UDP un protocol molt senzill resulta força eficient des del punt de vista de la velocitat de transmissió, per la qual cosa UDP és molt útil en situacions en què cal transferir una gran quantitat de dades en poc temps. Aquest és el cas, per exemple, de transmissions de vídeo o àudio per Internet i en temps real.

La figura mostra un segment UDP, els principals camps del qual es descriuen a continuació:

  • Port origen. Indica el nombre de port que inicia la transmissió al host origen. Aquest camp té una longitud de 16 bits.
  • Port destinació. Indica el nombre de port al host destinació. Aquest camp té una longitud de 16 bits.
  • Longitud. Indica la longitud total del datagrama en bytes. La longitud d’aquest camp és de 16 bits.
  • Suma de verificació. Aquest camp, opcional en UDP, permet al host destinació determinar si el segment s’ha corromput durant la transmissió. La seva longitud és de 16 bits.
  • Dades. Conté les dades enviades pel host origen. La mida d’aquest camp és variable.
Figura Camps d’un segment UDP

TCP (Transmission Control Protocol)

TCP (Transmission Control Protocol) opera en la capa de transport del model OSI i proporciona serveis de transmissió fiable de dades.

Figura Camps d’un segment TCP

TCP és un protocol orientat a connexió. A més, TCP garanteix la fiabilitat de la transmissió mitjançant l’ús de nombres de seqüència i mètodes de suma de verificació o checksum. Sense totes aquestes mesures, les dades serien transmeses de manera indiscriminada, sense comprovar, per exemple, si el host destinació està o no disponible o si les dades s’han corromput durant la transmissió. Finalment, TCP proporciona també control del flux per garantir que un host no és col·lapsat amb més dades de les que el seu buffer pot emmagatzemar.

La figura mostra el format d’un segment TCP, els principals camps del qual es descriuen a continuació:

Protocol orientat a connexió

Abans que el protocol comenci amb la transmissió de les dades, s’estableix una connexió entre els nodes o extrems de la comunicació.

  • Port origen. Indica el nombre de port que inicia la transmissió al host origen. Aquest camp té una longitud de 16 bits.
  • Port destinació. Indica el nombre de port al host destinació. Aquest camp té una longitud de 16 bits.
  • Nombre de seqüència. Indica la posició que ocupa aquest segment en relació amb el conjunt de segments en què s’ha dividit un missatge. Aquest camp té 32 bits de longitud.
  • Nombre d’acusament de rebuda (acknowledgment number). S’utilitza per enviar un acusament de rebuda. Quan el bit ACK és actiu (val “1”), aquest camp indica el nombre de seqüència del segment que s’espera rebre a continuació. La seva longitud és de 32 bits.
  • Longitud de la capçalera. Indica la longitud total de la capçalera d’un segment TCP. Aquest camp té 4 bits de longitud.
  • Reservat. Aquest és un camp de 6 bits reservat per a un ús futur.
  • Bits de control (URG, ACK, PSH, RST, SYN, FIN). Cadascun d’aquests bits o indicadors (flags) és independent de la resta.
    • URG. Quan està actiu indica que el camp punter d’urgència conté informació per al host receptor.
    • ACK. Quan està actiu indica que el camp nombre ACK conté informació per al host receptor.
    • PSH. Quan està actiu indica que el host receptor ha de passar les dades a les capes superiors de manera immediata.
    • RST. Quan està actiu indica que cal reiniciar la connexió pel fet que hi ha hagut alguna confusió en els nombres de seqüència.
    • SYN. Quan està actiu indica que cal sincronitzar els nombres de seqüència entre els dos hosts.
    • FIN. Quan està actiu indica que el segment actual és el darrer d’una seqüència i que cal finalitzar la connexió.
  • Mida de la finestra. És un camp de 16 bits que indica la mida de la finestra lliscant.
  • Suma de verificació. Aquest camp permet al host destinació determinar si el segment s’ha corromput durant la transmissió. La seva longitud és de 16 bits.
  • Punter d’urgència. És el darrer camp obligatori d’un encapçalament TCP. Quan el bit URG és actiu, aquest camp de 16 bits indica que hi ha dades urgents en el camp dades i la seva localització.
  • Opcions i caràcter de farciment (padding). La mida d’aquest camp pot ser 0 o 32 bits, en funció de si el segment conté informació addicional (com ara la mida màxima de segment que pot suportar una xarxa) o no. Si es fan servir opcions, la part de caràcters de farciment (paddin) conté bits d’emplenament per tal que la mida total del camp arribi fins als 32 bits.
  • Dades. Conté les dades enviades pel host origen. La mida d’aquest camp és variable.

Sòcols i ports

Cada procés que s’estigui executant en una màquina té assignat un nombre de port. S’anomena sòcol o socket d’un procés el parell format per el nombre de port del procés i l’adreça IP del host on el procés s’està executant.

Exemple de nombre de port

El nombre de port predeterminat per a un servei HTTP és el 80; si l’adreça IP d’un host on s’està executant un servei HTTP és 10.44.8.81, llavors el sòcol del servei HTTP en aquell host seria 10.44.8.81:80. És a dir, el host assumeix que qualsevol sol·licitud que arribi al port 80 serà de tipus HTTP.

SAP i ports

Ethernet utilitza punts d’accés al servei per identificar cadascun dels diferents circuits de comunicació establerts entre dos hosts dins d’una mateixa subxarxa, amb la qual cosa es permet la multiplexació de la connexió. Per contra, TCP/IP utilitza ports per tal d’identificar les comunicacions entre dos hosts d’una internet-work.

Els sòcols o sockets permeten crear connexions virtuals entre un procés en execució en un host A i el mateix procés en execució en un altre host B. L’ús de nombres de ports simplifica les comunicacions TCP/IP i garanteix que les dades són transmeses a les aplicacions correctes.

L’ús de ports simplifica les comunicacions TCP/IP i garanteix que les dades són transmeses a l’aplicació correcta. Quan, per exemple, un client fa una sol·licitud de comunicació a un servidor pel port 23, el servidor immediatament sap que el client pretén iniciar una sessió Telnet. Llavors, el servidor connecta al port Telnet del client -el 23 per defecte- i estableix un circuit virtual (figura).

Figura Camps d’un segment TCP

Els nombres de port van des del 0 fins al 65535 i es poden dividir en tres grups:

Els hosts clients sol·liciten serveis que ofereixen altres hosts, anomenats servidors.

  • Ports coneguts (del 0 al 1023): són assignats a processos als quals només pot accedir el sistema operatiu o l’administrador del sistema. Aquests ports estan assignats a protocols oberts d’ús molt estès (per exemple, correu electrònic, DNS, HTTP…). Normalment només pot executar el procés que els implementa el propi sistema operatiu o un administrador del sistema.
  • Ports registrats (del 1024 al 49151): són accessibles a processos i usuaris sense privilegis especials. Estan assignats a companyies amb aplicacions comercials.
  • Ports dinàmics o privats (del 49152 al 65535): són ports lliures que l’usuari pot fer servir sense restriccions.

La taula conté una relació dels ports més habituals en TCP/IP i el seu servei associat. La major part dels servidors mantenen un fitxer de text amb el nombre de port associat a cada servei. Això permet canviar el nombre de port que per defecte té un determinat servei (per exemple, enlloc de fer servir el port 23, es pot configurar el port 2330 per al servei Telnet). Alguns administradors fan ús d’aquesta tècnica per tractar de dificultar l’accés dels pirates o hackers als seus servidors.

Telnet

Telnet és un servei que s’utilitza per connectar-se a un host remot mitjançant TCP/IP. El protocol corresponent, del mateix nom pertany a la capa d’aplicació.

Nombre de port Nom del procés Protocol
7 ECHO TCP i UDP
20 FTP-DATA TCP
21 FTP TCP
22 SSH TCP
23 TELNET TCP
25 SMTP TCP
53 DNS TCP i UDP
69 TFTP UDP
80 HTTP TCP i UDP
110 POP3 TCP
119 NNTP TCP
143 IMAP TCP
443 HTTPS TCP

Ports i seguretat

Per motius de seguretat, alguns administradors de xarxa acostumen a canviar els nombres de port assignats als serveis més habituals.

Anar a la pàgina anterior:
Exercicis d'autoavaluació
Anar a la pàgina següent:
Activitats