TCP/IP

TCP/IP és un conjunt de protocols estàndard de la capa de transport TCP i de la capa de xarxa IP, en els quals es basen les comunicacions a internet i que cobreixen els diversos nivells del model OSI.

Aquests protocols són utilitzats per tots els ordinadors connectats a internet, de manera que aquests puguin comunicar-se entre si. Cal tenir en compte que a Internet es troben connectats ordinadors de classes molt diferents i amb maquinari i programari incompatibles en molts casos, a més de tots els mitjans i formes possibles de connexió. Aquí es troba un dels grans avantatges del TCP/IP, car aquest protocol s'encarregarà que la comunicació entre tots sigui possible. TCP/IP és compatible amb qualsevol sistema operatiu i amb qualsevol tipus de maquinari.

El conjunt TCP/IP està dissenyat per a encaminar i té un grau molt elevat de fiabilitat, és adequat per a xarxes grans i mitjanes, així com en xarxes empresarials. S'utilitza a escala mundial per connectar-se a Internet i als servidors web. És compatible amb les eines estàndard per analitzar el funcionament de la xarxa. S'utilitza tant en campus universitaris com en complexos empresarials, on utilitzen molts encaminadors i connexions a mainframe o ordinadors UNIX, i també en xarxes petites o domèstiques, en telèfons mòbils i en domòtica.

Els dos protocols més importants de la pila TCP/IP són el TCP (Transmission Control Protocol) i l'IP  (Internet Protocol), que són els que donen nom al conjunt.

Història 
Va ser desenvolupat i demostrat per primera vegada en 1972 pel Departament de Defensa dels Estats Units, executant-ho en ARPANET, una xarxa d'àrea extensa d'aquest departament.

La família de protocols d'internet pot descriure's per analogia amb el model OSI (Open System Interconnection), que descriu els nivells o capes de la pila de protocols, encara que en la pràctica no correspon exactament amb el model en Internet. En una pila de protocols, cada nivell resol una sèrie de tasques relacionades amb la transmissió de dades, i proporciona un servei ben definit als nivells més alts. Els nivells superiors són els més propers a l'usuari i tracten amb dades més abstractes, deixant als nivells més baixos la labor de traduir les dades de manera que siguin físicament manipulables.

El model d'Internet va ser dissenyat com la solució a un problema pràctic d'enginyeria. El model OSI, en canvi, va ser proposat com una aproximació teòrica i també com una primera fase en l'evolució de les xarxes d'ordinadors. Per tant, el model OSI és més fàcil d'entendre, però el model TCP/IP és el que realment s'usa. Serveix d'ajuda entendre l'OSI, abans de conèixer TCP/IP, ja que s'apliquen els mateixos principis, però són més fàcils d'entendre en l'OSI.

El protocol TCP/IP és el successor del Network Control Program (NCP), amb el qual va iniciar l'operació d'ARPANET, i va ser presentat per primera vegada amb els {{RFC|791}}, {{RFC|792}} i {{RFC|793}} al setembre de 1981. Al novembre del mateix any es va presentar el pla definitiu de transició en el {{RFC|801}}, i es va marcar l'1 de gener de 1983 com el “Dia Bandera”.

La família de protocols d'Internet van ser el resultat del treball dut a terme per l'“Agència de Projectes d'Investigació Avançats de Defensa”: DARPA, per les seves sigles en anglès, a principis dels anys 1970. Després de la fabricació de la pionera ARPANET en 1969, DARPA va començar a treballar en un gran nombre de tecnologies de transmissió de dades. En 1972, Robert E. Kahn va ser contractat per la “Oficina de Tècniques de Processament d'Informació” de DARPA, on va treballar en la comunicació de paquets per satèl·lit i per ones de ràdio, va reconèixer l'important valor de la comunicació d'aquestes dues formes. En la primavera de 1973, Vint Cerf, desenvolupador del protocol d'ARPANET, Network Control Program es va unir a Kahn amb l'objectiu de crear una arquitectura oberta d'interconnexió i dissenyar així la nova generació de protocols d'ARPANET. Kahn i Cerf van ser premiats amb la Medalla Presidencial de la Llibertat el 10 de novembre de 2005 per la seva contribució a la cultura nord-americana.

Per a l'estiu de 1973, Kahn i Cerf havien aconseguit una remodelació fonamental, on les diferències entre els protocols de xarxa s'ocultaven usant un protocol de comunicacions i a més, la xarxa deixava de ser responsable de la fiabilitat de la comunicació, com passava en ARPANET, era el host el responsable. Cerf va reconèixer el mèrit de Louis Pouzin, creador de la xarxa CYCLADES, ja que el seu treball va estar molt influenciat pel disseny d'aquesta xarxa.

Amb el paper que realitzaven les xarxes en el procés de comunicació reduït al mínim, es va convertir en una possibilitat real comunicar xarxes diferents, sense importar les característiques que aquestes tinguessin. Hi ha una dita popular sobre el protocol TCP/IP, que va ser el producte final desenvolupat per Cerf i Kahn, que diu que: aquest protocol acabarà funcionant fins i tot entri “dues llaunes unides per un cordó”. De fet hi ha fins a una implementació usant coloms missatgers, IP sobre coloms missatgers, que està documentat en .

Un ordinador denominat router (nom que va ser després canviat a gateway, passarel·la o porta d'enllaç per evitar confusions amb altres tipus de porta d'enllaç), està dotada amb una interfície per a cada xarxa, i envia datagrames d'anada i tornada entre ells. Els requisits per aquests routers estan definits en el .

Aquesta idea va ser executada d'una forma més detallada pel grup d'investigació que Cerf tenia en Stanford durant el període de 1973 a 1974, donant com a resultat la primera especificació TCP . Llavors DARPA va ser contractada per BBN Technologies, la Universitat de Stanford, i la University College de Londres (UCL) per desenvolupar versions operacionals del protocol en diferents plataformes de maquinari. Es van desenvolupar així quatre versions diferents: TCP v1, TCP v2, una tercera dividida en dues: TCP v3 i IP v3, en la primavera de 1978, i després es va estabilitzar la versió TCP/IP v4: el protocol estàndard que encara s'utilitza en Internet.

En 1975 es va realitzar la primera prova de comunicació entre dues xarxes amb protocols TCP/IP entre la Universitat de Stanford i la UCL. En 1977 es va realitzar una altra prova de comunicació amb un protocol TCP/IP entre tres xarxes diferents amb ubicacions als Estats Units, Regne Unit i Noruega. Diversos prototips diferents de protocols TCP/IP es van desenvolupar en múltiples centres d'investigació entre els anys 1978 i 1983. La migració completa de la xarxa ARPANET al protocol TCP/IP va concloure oficialment el dia 1 de gener de 1983, quan els protocols van ser activats permanentment.

Al març de 1982, el Departament de Defensa dels Estats Units va declarar al protocol TCP/IP l'estàndard per a les comunicacions entre xarxes militars. En 1985, el “Centre d'Administració d'Internet” (IAB, Internet Architecture Board) va organitzar un “Taller de Treball” de tres dies de durada, on van assistir 250 comerciants. Això va servir per promocionar el protocol, la qual cosa va contribuir a un increment del seu ús comercial.

Nivells de la pila TCP/IP 

L'arquitectura del TCP/IP consta de quatre nivells o capes en les quals s'agrupen els protocols, i que es relacionen amb els nivells OSI de la següent manera:

Nivell d'aplicació 
Es correspon amb els nivells OSI d'aplicació, presentació i sessió. El nivell d'aplicació és el nivell que els programes més habituals utilitzen per comunicar-se a través d'una xarxa amb altres programes. Els processos que tenen lloc en aquest nivell són aplicacions específiques que passen dades al nivell d'aplicació en el format que internament utilitzi el programa i és codificat posteriorment d'acord amb un protocol estàndard.

Alguns programes específics es considera que s'executen en aquest nivell. Proporcionen serveis que treballen directament amb les aplicacions d'usuari. Aquests programes i els seus corresponents protocols inclouen a HTTP (HyperText Transfer Protocol), FTP (File Transfer Protocol), SMTP, SSH, DNS entre d'altres.

Un cop les dades de l'aplicació han estat codificades en un protocol estàndard del nivell d'aplicació són transferides cap avall al següent nivell de la pila de protocols TCP/IP.

Nivell de transport 
Coincideix amb el nivell de transport del model OSI. Els protocols del nivell de transport poden solucionar problemes tals com la fiabilitat i la seguretat que les dades arriben al destí i ho fan en l'ordre correcte. En el conjunt de protocols TCP/IP, els protocols de transport també determinen a quina aplicació van destinades les dades. Els protocols d'encaminament dinàmic, els quals tècnicament encaixen en el protocol TCP/IP (atès que funcionen sobre IP), són generalment considerats part del nivell de xarxa; un exemple és OSPF (protocol IP número 89).

TCP (protocol IP número 6) és un mecanisme de transport fiable i orientat a connexió, el qual proporciona un flux fiable de bytes, assegura que les dades arribin completes, sense danys i en ordre. TCP realitza contínuament anàlisis sobre l'estat de la xarxa per evitar sobrecarregar-la amb massa tràfic. A més a més, TCP intenta enviar totes les dades correctament en la seqüència especificada. Aquesta és una de les principals diferències amb UDP i pot convertir-se en un inconvenient en fluxos a temps real (molt sensibles a la variació del retard) o en aplicacions d'encaminament amb percentatges alts de pèrdua en el nivell d'interxarxa.

UDP (protocol IP número 17) és un protocol de datagrames sense connexió. És un protocol no fiable (best effort igual que IP), no perquè sigui particularment dolent, sinó perquè no verifica que els paquets arribin al seu destí ni tampoc dona garanties que arribin en ordre. UDP s'utilitza normalment per a aplicacions de streaming on l'arribada a temps dels paquets és més important que la fiabilitat o per a aplicacions senzilles del tipus petició/resposta com el servei DNS, on la sobrecàrrega de les capçaleres que aporten fiabilitat és desproporcionada per la mida dels paquets.

TCP i UDP són utilitzats en l'actualitat per donar servei a una sèrie d'aplicacions d'alt nivell. Les aplicacions amb una adreça de xarxa donada són distingibles entre si pel seu número de port TCP o UDP. Per convenció, els ports ben coneguts (well-known ports) estan associats a aplicacions específiques.

Nivell d'interxarxa 
És el nivell de xarxa del model OSI. Tal com va ser definit originalment, el nivell de xarxa soluciona el problema de transportar paquets a través d'una xarxa senzilla. Exemples de protocols d'aquesta capa són X.25 i Host/IMP Protocol d'ARPANET.

Amb l'arribada del concepte d'interxarxa, es van afegir noves funcionalitats a aquest nivell basades en l'intercanvi de dades entre una xarxa origen i una xarxa destinació. Generalment això inclou un encaminament de paquets a través d'una xarxa de xarxes coneguda com a internet.

Dins de la família de protocols d'Internet, IP realitza les tasques bàsiques per aconseguir transportar dades des d'un origen a un destí. IP pot passar les dades a un conjunt de protocols superiors; cada un d'aquests és identificat com un únic Número de protocol IP. Per exemple, ICMP i IGMP són els protocols 1 i 2, respectivament.

Alguns dels protocols que es troben per sobre d'IP, com ara ICMP (utilitzat per transmetre informació de diagnòstic i control d'error sobre transmissions IP) i IGMP (usat per dirigir el tràfic multicast), tot i trobar-se en nivells superiors, realitzen funcions de nivell de xarxa, cosa que mostra una certa incompatibilitat entre els models d'Internet i el model OSI. Tots els protocols d'encaminament (com ara BGP, OSPF i RIP) també formen part del nivell de xarxa, tot i que ells pertanyen a nivells encara més alts a la pila.

Nivell d'enllaç 
La capa d'enllaç no forma part realment de la pila TCP/IP però és el mètode utilitzat per passar paquets de la capa Internet d'un dispositiu a la capa Internet d'un altre. Aquest procés pot ser controlat tant per programari com per maquinari (hardware). D'aquesta manera es realitzen funcions d'enllaç de dades tals com afegir una capçalera al paquet per preparar-lo per a la seva transmissió i enviar-lo posteriorment per un mitjà físic. D'altra banda, la capa d'enllaç s'encarrega de rebre trames de dades, extreure les capçaleres d'aquestes i entregar els paquets rebuts a la capa d'Internet.

Funcionament del TCP/IP 
Atès que en un sistema TCP/IP les dades transmeses es divideixen en petits paquets, aquests ressalten una sèrie de característiques.

La tasca d'IP és dur els paquets d'un lloc a un altre. Els ordinadors que troben les vies per a dur les dades d'una xarxa a una altra (anomenats encaminadors) utilitzen IP per a traslladar les dades. En resum, IP mou els paquets de dades entre les màquines, mentre que TCP s'encarrega del flux de dades i assegura que les dades siguin correctes.

Mitjançant la pila TCP/IP, es poden compartir els canals de comunicació entre diversos usuaris. Qualsevol tipus de paquet pot transmetre's al mateix temps, i s'ordenarà i combinarà quan arribi a la seva destinació. El funcionament és completament diferent de la manera que es transmet una conversa telefònica: una vegada que s'estableix una connexió telefònica, es reserven alguns circuits per a l'emissor i no podran ser emprats per altres trucades (encara que no s'estigui transmetent res pel telèfon) fins que no hagi acabat la connexió telefònica (és a dir, quan s'hagin penjat els respectius telèfons).

En canvi, en un sistema no orientat a connexió com el TCP/IP, les dades no han d'enviar-se directament entre dues computadores. Cada paquet passa de computadora en computadora fins a arribar a la seva destinació sense que els paquets segueixin necessàriament el mateix camí. Aquest, és clar, és el secret de com es poden enviar dades i missatges entre dues computadores encara que no estiguin connectades directament entre si. El que realment sorprèn és que només es necessiten alguns segons per a enviar un arxiu de bona grandària d'una màquina a una altra, encara que estiguin separades per milers de quilòmetres i malgrat que les dades han de passar per múltiples computadores. Una de les raons de la rapidesa és que, quan alguna cosa camina malament, només és necessari tornar a transmetre un paquet, no tot el missatge.

Com s'ha comentat anteriorment, els paquets no necessiten seguir la mateixa ruta. La xarxa pot dur cada paquet d'un lloc a un altre i usar la connexió més idònia que estigui disponible en aquest instant. No tots els paquets dels missatges han de viatjar, necessàriament, per la mateixa ruta, ni necessàriament han d'arribar tots al mateix temps. La flexibilitat del sistema fa que sigui molt fiable. Si un enllaç es perd, el sistema n'usa un altre. Quan s'envia un missatge, el protocol TCP divideix les dades en paquets, ordena aquests en seqüència, agrega certa informació per a control d'errors i després els llança cap a fora, i els distribueix. En l'altre extrem, el TCP rep els paquets, verifica si hi ha errors i els torna a combinar per a convertir-los en les dades originals. En cas de produir-se un error en algun punt, el programa TCP destinació envia un missatge sol·licitant que es tornin a enviar el paquet (o paquets) afectats per l'error.

Implementacions 
La majoria de sistemes operatius en ús avui en dia, inclosos tots els sistemes dirigits al consumidor, inclouen una implementació de TCP/IP.

Les aplicacions mínimament acceptables inclouen la implementació de (de més essencials als menys essencials) IP, ARP, ICMP, UDP, TCP i en algun moment IGMP. En principi, és per donar suport a un dels protocols de transport (és a dir, simples UDP), però es fa poques vegades, ja que limita l'ús de tota la implementació.

IPv6, més enllà de pròpia versió de l'ARP (NBP) i ICMP (ICMPv6), i IGMP (IGMPv6) tenen algunes funcionalitats addicionals requerides i, sovint s'acompanya amb una capa integrada de seguretat IPSec. Altres protocols poden ser fàcilment afegits més tard (sovint que puguin realitzar-se completament en l'espai d'usuari), per exemple DNS per resoldre noms de domini a adreces IP o el client DHCP per a la configuració automàtica d'interfícies de xarxa.

La majoria de les implementacions d'IP són accessibles als programadors que utilitzen l'abstracció socket (utilitzable també amb altres protocols) i API adequada per a la majoria de les operacions. Aquesta interfície es coneix com a sockets BSD i va ser utilitzat inicialment al c /

implementacions úniques inclouen Lightweight TCP / IP, una pila de codi obert dissenyat per a sistemes integrats i KA9Q ENS, una pila i protocols associats per a l'aficionat sistemes de paquets de ràdio i ordinadors personals connectades a través de línies sèrie.

Alguns protocols de la pila TCP/IP 
 FTP (File Transfer Protocol). S'utilitza per a transferència d'arxius.
 SMTP (Simple Mail Transfer Protocol). És una aplicació per al correu electrònic.
 TELNET: Permet la connexió a una aplicació remota des d'un procés o terminal.
 RPC (Remote Procedure Call). Permet crides a procediments situats remotament. S'utilitzen les cridades a RPC com si fossin procediments locals.
 SNMP (Simple Network Management Protocol). Es tracta d'una aplicació per al control de la xarxa.
 NFS (Network File System). Permet la utilització d'arxius distribuïts pels programes de la xarxa.
 X-Windows. És un protocol per al maneig de finestres i interfícies d'usuari

Referències

Vegeu també 
 IP mòbil
 OSI
 Llista de números de port
 MQTT

Enllaços externs 

 "Comunicacions Informàtiques i de Dades" 8a ed. William Stallings 

Xarxes informàtiques
Protocols de xarxa