# Implementacions TCP

Transmission Control Protocol (TCP) són una sèrie de normes i recomanacions teòriques, però a la pràctica poden programar-se de diferents maneres. Per això existeixen diverses implementacions de TCP, cada una amb els seus avantatges i inconvenients. Per evitar la repetició de treball, és comú que unes es basin en les altres, el que porta a compartir les mateixes falles.

## Història

Les primeres implementacions varen sorgir en els anys 80, per part dels sistemes BSD, que deriven dels Unix. En aquesta època encara s'estava desenvolupant la Història de la Internet. 4.1aBSD, publicada el juny del 1981, ja tenia una versió preliminar de TCP/IP, basada en el treball de Bolt, Beranek i Newman, tot i que està una mica modificada. La versió 4.1cBSD (1982) té una implementació major, i va ser inclòs a la 4.2BSD (1983), que va ser la primera que es va distribuir a gran escala.
DARPA va decidir que seria aquesta versió la que es quedaria en 4.3BSD (juny 1986), a més és en aquesta versió es va millorar el seu rendiment. De 4.3BSD en deriva 4.3BSD-Tahoe (juny 1988), i d'aquesta 4.3BSD-Reno (1990), en el camí de la creació de 4.4BSD (1993). Els noms Tahoe i Reno són les que identifiquen a les implementacions TCP d'aquests sistemes. Corresponen a les ciutats Tahoe i Reno de l'estat de Nevada (EUA) famoses pels seus casinos; també Las Vegas va servir com ha nom per a una altra versió de 1994.
Un llistat del nivell d'implementació de TCP en cadascuna d'aquestes versions és:
* 1983: 4.2BSD: primera versió àmpliament disponible de TCP/IP
* 1986: 4.3BSD: millora rendiment de TCP
* 1988: 4.3BSD-Tahoe: Arrencada lent ("slow-start"), control de congestió ("congestion avoidance"), retransmissió ràpida ("fast retransmit")
* 1990: 4.3BSD-Reno: recuperació ràpida ("fast recovery"), predicció de capçaleres TCP, capçalera SLIP, compressió
* 1993: 4.4BSD: multidifusió, modificacions per a canals d'alt rendiment (RFC 1323)
* 1994: 4.4BSD-Lite
Existeix poca documentació tècnica que reculli els canvis entre versions. En els llibres de Karels i McKusick de 1986
es descriuen els canvis de 4.2BSD a 4.3BSD, i Jacobson descriu el 1990 els canvis de 4.3BSD-Tahoe a 4.3BSD-Reno. (, pàg. 5)

## Implementacions base

Durant l'inici de TCP hi va haver tres implementacions base:
* Tahoe, la de 4.3BSD-Tahoe, derivada de 4.3BSD
* Reno, la de 4.3BSD-Reno, derivada de Tahoe, i emprada després en 4.4BSD-Lite
* Vegas, que millora a Reno en velocitat entre un 40 y 70% (segons la pàgina de Vegas Arxivat 2006-10-06 a Wayback Machine., de 1994)
És especialment important la implementació de TCP de 4.4BSD-Lite, que va sortir el juny de 1994, i és la que es pren com a referència per haver estat la base de molts sistemes actuals. En l'actualitat, es segueix utilitzant per ensenyar com funciona un sistema TCP.
Moltes implementacions actuals s'han basat en alguna d'aquestes tres en algun moment. No obstant, si avui se'n creés una de nova, probablement es basaria en una de les modernes (com la de FreeBSD, OpenBSD, NetBSD o BSD/OS) abans que en l'original de 4.4BSD-Lite.
La reutilització del codi de BSD va ser possible degut a la seva llicència (llicència BSD), que permet que sigui utilitzat en altres sistemes, tant software lliure com privatiu. Per exemple, Microsoft Windows utilitza codi derivat de BSD en la seva implementació de TCP, i inclou eines de xarxa per consola originals de BSD (detalls). També Darwin BSD, el sistema base de Mac OS X, parcialment deriva de FreeBSD 5. Altres UNIX comercials, com Solaris, també inclouen codi BSD.

## Referències

* 1 2 3 Stevens, W. Richard; Wright, Gary R.. TCP/IP Illustrated: The Implementation, Vol. 2. Pearson Education, 1995. ISBN 0-201-63354-X.

## Enllaços externs

* RFC 793: descripció del TCP original. En castellà
* A brief history of TCP