<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=O_nivel_de_transporte</id>
	<title>O nivel de transporte - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=O_nivel_de_transporte"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=O_nivel_de_transporte&amp;action=history"/>
	<updated>2026-10-21T11:31:29Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=O_nivel_de_transporte&amp;diff=13029&amp;oldid=prev</id>
		<title>Arribi: /* Control de fluxo */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=O_nivel_de_transporte&amp;diff=13029&amp;oldid=prev"/>
		<updated>2009-10-06T11:04:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Control de fluxo&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introdución=&lt;br /&gt;
[[Image:transporte1.jpg|right]] No [[O_nivel_de_enlace|nivel de enlace]] os datos envíanse entre equipos dentro da mesma LAN, conectados por un &amp;#039;&amp;#039;switch&amp;#039;&amp;#039; fisicamente. [[O_nivel_de_rede|No nivel de rede]] os datos envíanse a través de distintas redes conectadas físicamente mediante &amp;#039;&amp;#039;routers&amp;#039;&amp;#039;. No nivel de transporte hai unha conexión directa entre os dous extremos que interveñen na comunicación pero é unha &amp;#039;&amp;#039;&amp;#039;conexión lóxica&amp;#039;&amp;#039;&amp;#039;. &lt;br /&gt;
&lt;br /&gt;
Por conexión lóxica entendemos que hai unha comunicación directa entre os programas ou equipos que interveñen na comunicación,  independentemente da rede onde se atopen pero &amp;#039;&amp;#039;&amp;#039;non existe conexión física directa entre eles&amp;#039;&amp;#039;&amp;#039;.  Existe, polo tanto, un &amp;#039;&amp;#039;&amp;#039;circuíto virtual&amp;#039;&amp;#039;&amp;#039; entre o emisor e receptor. A capa de transporte proporciona comunicación lóxica extremo a extremo, no canto de comunicación física.&lt;br /&gt;
O nivel de transporte non é consciente, nin debe selo, de como están interconectados fisicamente os dous equipos (por unha LAN, unha WAN ou unha combinación de múltiples redes de ambos tipos). Que a comunicación sexa extremo a extremo quere dicir que non se coñecen os detalles da subrede, polo tanto, o nivel de transporte non sabe nada de &amp;#039;&amp;#039;routers&amp;#039;&amp;#039;, fragmentación, &amp;#039;&amp;#039;switches&amp;#039;&amp;#039;, &amp;#039;&amp;#039;hubs&amp;#039;&amp;#039;, etc.&lt;br /&gt;
&lt;br /&gt;
=Servizos orientados a conexión=&lt;br /&gt;
Xeralmente as aplicacións requiren que o nivel de transporte lles garanta a entrega dos datos ao destinatario, sen erros, perdas, nin duplicados. Para que isto sexa posible o nivel de transporte pode ofrecer un &amp;#039;&amp;#039;&amp;#039;servizo orientado a conexión&amp;#039;&amp;#039;&amp;#039;, con retransmisións en caso necesario. Este é o caso do protocolo TCP (&amp;#039;&amp;#039;Transport Control Protocol&amp;#039;&amp;#039;), utilizado en moitas aplicacións (FTP, SMTP, HTTP...).&lt;br /&gt;
&lt;br /&gt;
Noutros casos as aplicacións confórmanse (ou ata prefiren) un servizo menos fiable no que os datos se envían sen pedir confirmación, de forma independente uns doutros (como fai o IP cos paquetes). Este tipo de servizo ofréceo un protocolo &amp;#039;&amp;#039;&amp;#039;non orientado a conexión&amp;#039;&amp;#039;&amp;#039; que é UDP (&amp;#039;&amp;#039;User Datagram Protocol&amp;#039;&amp;#039;). UDP úsase, por exemplo, nas aplicacións en &lt;br /&gt;
tempo real, onde non se quere incorrer no retardo propio dun protocolo orientado a conexión.&lt;br /&gt;
&lt;br /&gt;
=Portos=&lt;br /&gt;
[[Image:transporte2.jpg|right]]En TCP/IP defínense dúas direccións que permiten a relación cos niveis superiores e inferiores:&lt;br /&gt;
*A dirección IP, que xa coñecemos&lt;br /&gt;
*O &amp;#039;&amp;#039;&amp;#039;número de porto&amp;#039;&amp;#039;&amp;#039;, que identifica a aplicación que require a comunicación&lt;br /&gt;
Os portos son os enderezos do nivel de transporte. Cada porto está asociado a unha aplicación. Pódense asignar de dous xeitos dependendo de se falamos da aplicación cliente ou da aplicación servidor:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Aplicación cliente&amp;#039;&amp;#039;&amp;#039;: cando se abre unha aplicación, por exemplo un navegador web, cliente ftp, etc. o sistema operativo asígnalle un porto dos que teña libres.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Aplicación servidor&amp;#039;&amp;#039;&amp;#039;: as aplicacións servidor están sempre escoitando nun porto chamado &amp;#039;&amp;#039;&amp;#039;ben coñecido&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;well known port&amp;#039;&amp;#039;). Este porto configúrase manualmente. Un porto ben coñecido é como un número de teléfono no que sabemos que existe un servizo determinado, por exemplo, 091 é a policía, 112 son emerxencias, etc.&lt;br /&gt;
&lt;br /&gt;
Toda conexión TCP idéntificase polo par &amp;#039;&amp;#039;&amp;#039;(IP_orixe, Porto_orixe)-(IP_destino, Porto_destino)&amp;#039;&amp;#039;&amp;#039;. Vexamos o seguinte exemplo: &lt;br /&gt;
&lt;br /&gt;
Un usuario con IP 194.145.10.5 fai dobre clic sobre o navegador web. Nese intre o sistema operativo asígnalle un porto a esa aplicación (1500). O servidor ten, por exemplo, a IP 200.50.100.45.  A aplicación cliente sabe en que porto está escoitando o servidor as peticións (neste caso no 80, xa que é o servizo Web). Se a aplicación servidor está escoitando nun porto distinto ao que lle corresponde, o usuario debe expresar cal é ese porto, por exemplo, o 81. A conexión TCP anterior identifícase polo par (194.145.10.5, 1500) - (200.50.100.45, 80).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;As conexión TCP son full dúplex&amp;#039;&amp;#039;&amp;#039;, é dicir, a información envíase en ambos sentidos por canais independentes. Isto fai que os números de porto se invirtan, dependendo de quen sexa o emisor ou o receptor, tal e como podemos ver na seguinte figura:&lt;br /&gt;
&lt;br /&gt;
[[Image:transporte3.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
No seguinte gráfico podemos ver dous clientes usando o mesmo porto de destino (80) para comunicarse co mesmo servidor Web.&lt;br /&gt;
&lt;br /&gt;
[[Image:transporte4.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
=A Unidade de Datos do Protocolo (PDU)=&lt;br /&gt;
O conxunto de bytes que transmite o nivel de transporte TCP coñécese como &amp;#039;&amp;#039;&amp;#039;segmento TCP&amp;#039;&amp;#039;&amp;#039;, mentres que ao conxunto de bytes que transmite o protocolo de transporte UDP chámase &amp;#039;&amp;#039;&amp;#039;datagrama UDP&amp;#039;&amp;#039;&amp;#039;. Ambos son PDU (&amp;#039;&amp;#039;Protocol Data Unit&amp;#039;&amp;#039;) do nivel de transporte en TCP/IP.&lt;br /&gt;
&lt;br /&gt;
=O UDP (&amp;#039;&amp;#039;User Datagram Protocol&amp;#039;&amp;#039;)=&lt;br /&gt;
Vimos que TCP ten a robustez e funcionalidades propias dun protocolo orientado a conexión o cal conleva unha certa complexidade. O UDP, que está definido no RFC 768, é o protocolo da capa de transporte non orientado a conexión. Xa que logo, non garante que os datos se entreguen en orde (nin sequera que se entreguen, xa que non existen asentementos ou ACK), nin que a conexión se recupere de erros. En consecuencia, é máis rápido que TCP pero tamén máis inseguro.&lt;br /&gt;
==Por que UDP==&lt;br /&gt;
As aplicacións que non requiren unha fiabilidade total e non poden tolerar o retardo producido pola complexidade de TCP usan UDP. Algúns exemplos deste tipo de aplicacións son:&lt;br /&gt;
*Transmisión de vídeo ou audio en tempo real&lt;br /&gt;
*Aplicacións que requiren o envío dunha ou dúas mensaxes unicamente&lt;br /&gt;
*Sincronización de reloxos (NTP)&lt;br /&gt;
*Consultas ao servidor de nomes (DNS)&lt;br /&gt;
*Mensaxes de xestión da rede (SNMP)&lt;br /&gt;
*Obtención dinámica de dirección IP (DHCP)&lt;br /&gt;
&lt;br /&gt;
Tamén usan UDP as aplicacións interesadas en transmitir información en modo &amp;#039;&amp;#039;multicast&amp;#039;&amp;#039; ou &amp;#039;&amp;#039;broadcast&amp;#039;&amp;#039;, é dicir, a un grupo de usuarios ou a todos os usuarios da rede, respectivamente. Isto só é posible cun protocolo non orientado a conexión, xa que pola súa propia natureza os protocolos orientados a conexión son punto a punto (en TCP non é posible establecer conexións multipunto).&lt;br /&gt;
&lt;br /&gt;
==A PDU de UDP==&lt;br /&gt;
A Unidade de Datos do Protocolo no UDP é moi simple e os seus campos son os que se ven na seguinte táboa:&lt;br /&gt;
[[Image:transporte5.jpg|center]]&lt;br /&gt;
O significado dos campos é o seguinte:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Porto orixe&amp;#039;&amp;#039;&amp;#039;: especifica o porto da aplicación que xera o datagrama. Este valerá normalmente cero, salvo que a aplicación solicite unha resposta.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Porto destino&amp;#039;&amp;#039;&amp;#039;: especifica o porto da aplicación á que vai dirixido o datagrama.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Lonxitude&amp;#039;&amp;#039;&amp;#039;: indica a lonxitude do datagrama, incluíndo os campos de cabeceira.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Checksum&amp;#039;&amp;#039;&amp;#039;: é opcional, como en IPv4. Cando UDP recibe un datagrama e determina que hai erros, descártao e non o entrega a ningunha aplicación sen avisar ao emisor.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Datos&amp;#039;&amp;#039;&amp;#039;: contén os datos a transmitir. Un datagrama UDP vai encapsulado nun datagrama IP, o cal fixa a lonxitude máxima deste campo.&lt;br /&gt;
&lt;br /&gt;
=O TCP (&amp;#039;&amp;#039;Transport Control Protocol&amp;#039;&amp;#039;)=&lt;br /&gt;
UDP non garante a entrega de información que lle proporciona unha aplicación. Tampouco reordena a información no caso de que chegue nunha orde diferente daquela en que se transmitiu. Todo o contrario que o TCP, especificado na RFC 793, que  proporciona fiabilidade á aplicación xa que garante a entrega de toda a información no mesmo orde en que foi transmitida e proporciona un servizo orientado a conexión con control de fluxo e erros, ta e como veremos a continuación.&lt;br /&gt;
==Funcións==&lt;br /&gt;
Entre as funcións encargadas a TCP están as seguintes:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Transmisión libre de erros&amp;#039;&amp;#039;&amp;#039;: entrega á aplicación de destino exactamente a mesma información que lle entregou a aplicación de orixe&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Garante de entrega da información&amp;#039;&amp;#039;&amp;#039;: toda a información transmitida pola aplicación de orixe entrégase á aplicación de destino. Se non é posible, o TCP debe avisar á aplicación.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Garante de mantemento da secuencia de transmisión&amp;#039;&amp;#039;&amp;#039;: garante a entrega no mesmo orde en que lle foi entregado pola aplicación de orixe.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Eliminación de duplicados&amp;#039;&amp;#039;&amp;#039;: o TCP garante que só entregará unha copia da información transmitida á aplicación de destino. No caso de que reciba copias a causa do funcionamento da rede ou dos protocolos que se implementan por baixo do nivel de transporte, eliminaranse.&lt;br /&gt;
&lt;br /&gt;
==Características==&lt;br /&gt;
Entre as principais características deste protocolo están as seguintes:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Orientado a conexión&amp;#039;&amp;#039;&amp;#039;: para realizar unha comunicación entre dous puntos extremos, séguense tres pasos:&lt;br /&gt;
#Establecer a conexión (o cliente indícalle ao servidor que quere comunicarse con el)&lt;br /&gt;
#Unha vez establecida a conexión realízase o intercambio de información&lt;br /&gt;
#Finalizado o intercambio, libérase a conexión&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Orientado a fluxos de bytes&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;stream oriented&amp;#039;&amp;#039;): as aplicacións non teñen ningún modo de indicar ao TCP os límites en que queren transferir a información. É o TCP o que decide en cada momento cantos bytes transfire nun segmento. Para transmitir eses fluxos usa &amp;#039;&amp;#039;&amp;#039;buffers de envío e recepción&amp;#039;&amp;#039;&amp;#039;, tamén coñecidos como ventás de recepción. Se a aplicación xera un byte o TCP pode esperar que a memoria intermedia (o buffer) estea máis chea antes de transferir a información. Se xera fluxos de gran tamaño transfírea de inmediato (mecanismo &amp;#039;&amp;#039;push&amp;#039;&amp;#039;).&lt;br /&gt;
[[Image:transporte6.jpg|center]]&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Ten un tamaño máximo de segmento&amp;#039;&amp;#039;&amp;#039;: o MSS (&amp;#039;&amp;#039;Maximun Segment Size&amp;#039;&amp;#039;) é o tamaño do campo de datos do segmento que se especifica durante o establecemento da conexión. Polo tanto, o MSS no inclúe as lonxitudes das cabeceiras IP e TCP (MSS = MTU – 20 – 20). Cada extremo especifica un MSS pero non existe unha negociación entre os extremos. Se son distintos escollerase o menor. O feito de elixir o MSS non é trivial. En xeral, canto maior sexa o MSS, mellor, posto que as cabeceiras IP e TCP se “amortizan” máis. Con todo, se a MTU é pequena, será preciso fragmentar o datagrama IP (é dicir, o segmento TCP). Xa que logo, por norma xeral non interesa elixir MSS maiores que a MTU.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Usa asentimentos&amp;#039;&amp;#039;&amp;#039;: Son acuses de recibo, é dicir, segmentos que envía o receptor ao emisor para informalo de se recibiu correctamente o que o emisor enviou. A estes asentementos chámaselles ACK, do inglés &amp;#039;&amp;#039;acknowledgement&amp;#039;&amp;#039;. Contempla a técnica de &amp;#039;&amp;#039;piggybakcing&amp;#039;&amp;#039; que permite incluír ACK nun segmento de datos, co correspondente aforro fronte ao envío de segmentos específicos de recoñecemento.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;O TCP utiliza unha conexión full dúplex&amp;#039;&amp;#039;&amp;#039;: xa o comentamos. A transferencia de información é en ambos sentidos. A aplicación ve dous fluxos independentes de bytes. No caso de que a aplicación peche un dos fluxos, a conexión pasa a ser half dúplex. Iso significa que un dos extremos (o que non pechou a conexión) pode continuar enviando información pola canle, mentres que o outro extremo (o que pechou a conexión) limítase a recoñecer a información.&lt;br /&gt;
&lt;br /&gt;
==A PDU de TCP==&lt;br /&gt;
Xa vimos que á Unidade de Datos do Protocolo TCP chámaselle segmento e o seu formato é o seguinte:&lt;br /&gt;
[[Image:transporte7.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Os seus campos teñen o seguinte significado:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Porto orixe e porto destino&amp;#039;&amp;#039;&amp;#039;: identifican os portos que van a utilizar en cada equipo as aplicacións.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Número de secuencia&amp;#039;&amp;#039;&amp;#039;: indica o primeiro byte do campo datos dese segmento. En TCP numéranse os bytes non os segmentos, xa que é un protocolo orientado a fluxos de bytes.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Número de ACK&amp;#039;&amp;#039;&amp;#039;: TCP recoñece datos por medio de &amp;#039;&amp;#039;piggybacking&amp;#039;&amp;#039;. Ao activar un bit da cabeceira TCP (o bit ACK), indica ao outro extremo o próximo byte que está disposto a recibir, tal e como podemos ver no seguinte exemplo:&lt;br /&gt;
[[Image:transporte8.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Na figura anterior vese como o host A envía un segmento co número de secuencia 42. O host B resposta cun segmento de datos que ten o bit ACK activado. O número de ACK é 43, é dicir, Número de secuencia +1, xa que logo &amp;quot;recoñece&amp;quot; o segmento anterior ou o que é o mesmo, indícalle ao host A que recibiu correctamente o segmento 42 e espera recibir o 43. Por último, o host A envía o segmento 43 co bit ACK activado e número de ACK = 80, polo que tamén recoñece o semento enviado polo host B.&lt;br /&gt;
&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Lonxitude de cabeceira TCP&amp;#039;&amp;#039;&amp;#039;: especifica a lonxitude en palabras de 32 bits, excluído o campo datos (o campo opcións fai que dita lonxitude poida variar).&lt;br /&gt;
&lt;br /&gt;
A continuación hai 6 bits non utilizados, seguidos por outros 6 bits indicadores que se están activados (a 1) teñen un significado específico, que é o seguinte:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Bit URG&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;urgent&amp;#039;&amp;#039;): serve para indicar que o segmento contén datos urxentes. Utilízase en aplicacións como telnet e rlogin cando se pulsa a tecla de interrupción, ou no FTP cando se aborta a transferencia dun ficheiro.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Bit ACK&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;acknowledgement&amp;#039;&amp;#039;): indica que é un segmento ACK.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;PSH&amp;#039;&amp;#039;&amp;#039; (push): indica que se lle entreguen á aplicación todos os datos que estean na memoria intermedia de recepción (no buffer), sen esperar a recibir un segmento de tamaño máximo.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;RST&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;reset&amp;#039;&amp;#039;): indica que se debe abortar unha conexión porque se detectou un erro de calquera tipo; por exemplo que se recibiu un segmento cun valor inadecuado do número de secuencia ou número de ACK.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;SYN&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;synchronize&amp;#039;&amp;#039;): este bit indica que se está establecendo a conexión. Está activado só no primeiro segmento enviado por cada un dos dous equipos no inicio da conexión.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;FIN&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;finish&amp;#039;&amp;#039;): indica que non se teñen máis datos que enviar e que se quere pechar a conexión.&lt;br /&gt;
Os seguintes campos da PDU de TCP son:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Tamaño de ventá&amp;#039;&amp;#039;&amp;#039;: indica a cantidade de bytes que se está disposto a aceptar do outro lado &amp;#039;&amp;#039;&amp;#039;en cada momento&amp;#039;&amp;#039;&amp;#039;. Suponse que se garante unha cantidade suficiente de espazo nos buffers. Mediante este parámetro o receptor establece un control de fluxo sobre o caudal de datos que pode enviar o emisor. Cada extremo terá a súa ventá de recepción.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Checksum&amp;#039;&amp;#039;&amp;#039;: utilízase para detectar erros.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;O campo Urgent pointer&amp;#039;&amp;#039;&amp;#039;: ten sentido cando o bit de control URG está activo polo que os datos que envía a orixe son urxentes. Así, este campo identifica o último byte do campo de datos que é urxente.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Opcións&amp;#039;&amp;#039;&amp;#039;: permite engadir funcionalidades extras ao protocolo.&lt;br /&gt;
&lt;br /&gt;
==Establecemento da conexión==&lt;br /&gt;
Para establecer unha conexión o TCP utiliza un mecanismo coñecido como &amp;#039;&amp;#039;&amp;#039;three-way handshake&amp;#039;&amp;#039;&amp;#039;, ou conexión a tres bandas, porque necesita tres segmentos TCP para poder establecer dita conexión. Inicialmente o servidor está nun estado de escoita, chamado &amp;#039;&amp;#039;listen&amp;#039;&amp;#039;. O cliente quere establecer unha conexión co servidor polo que o TCP da máquina cliente iniciará a petición de conexión, que será contestada polo TCP da máquina servidor. O intercambio de segmentos podemos velo no seguinte gráfico:&lt;br /&gt;
[[Image:transporte9.jpg|right]] &lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Paso 1: petición de conexión&amp;#039;&amp;#039;&amp;#039;. O TCP cliente envía unha petición de conexión ao servidor mediante un segmento SYN (ten o bit SYN da cabeceira activado). Especifica tamén nese segmento o ISN ou &amp;#039;&amp;#039;&amp;#039;Número de Secuencia Inicial&amp;#039;&amp;#039;&amp;#039; para empezar a numerar os bytes que se enviarán, así como outros parámetros como o MSS. O ISN escóllese ao chou.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Paso 2: confirmación de conexión&amp;#039;&amp;#039;&amp;#039;. O servidor responde á petición de establecemento da conexión cun segmento SYN que indica o número de secuencia inicial que utilizará el. Este segmento contén un recoñecemento (ACK) do segmento SYN do cliente que indica o ISN do cliente máis 1. TCP numera os ACK co número de secuencia do próximo byte que espera recibir, tal e como xa se comentou anteriormente. &lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;Paso 3: recoñecemento da conexión&amp;#039;&amp;#039;&amp;#039;. O cliente recoñece o segmento SYN do servidor cun ACK que contén o ISN do servidor máis 1, establecendo nese momento a conexión lóxica entre o cliente e o servidor.&lt;br /&gt;
&lt;br /&gt;
Quen envía o primeiro segmento SYN (neste caso, o cliente) efectúa unha &amp;#039;&amp;#039;&amp;#039;apertura activa&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;active open&amp;#039;&amp;#039;). Quen recibe o primeiro segmento SYN e envía o seguinte segmento SYN (neste caso, o servidor) leva a cabo unha &amp;#039;&amp;#039;&amp;#039;apertura pasiva&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;passive open&amp;#039;&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
==Peche da conexión==&lt;br /&gt;
[[Image:transporte10.jpg|right]]Cando a transferencia de datos remata, TCP dispón dun mecanismo de finalización da conexión para pechala. Unha conexión TCP é full dúplex, os datos flúen en ambos sentidos, independentes o un do outro, polo que calquera conexión debe pecharse independentemente. O intercambio de segmentos para o peche dunha conexión TCP podémolo ver na seguinte figura:&lt;br /&gt;
#&amp;#039;&amp;#039;&amp;#039;Paso 1: peche da conexión nun sentido&amp;#039;&amp;#039;&amp;#039;. O cliente envía un segmento TCP co bit FIN activado o que significa que non haberá máis datos dende o cliente ao servidor, nese sentido (cliente-&amp;gt;servidor). O servidor envía unha confirmación de peche por medio dun segmento ACK. O TCP servidor indica á súa aplicación que o cliente pecha a conexión.&lt;br /&gt;
#&amp;#039;&amp;#039;&amp;#039;Paso 2: peche da conexión no outro sentido&amp;#039;&amp;#039;&amp;#039;. O servidor envía un segmento TCP de tipo FIN ao cliente. O TCP cliente responde automaticamente cun ACK.&lt;br /&gt;
&lt;br /&gt;
Quen envía o primeiro segmento FIN (neste caso o cliente) leva a cabo un &amp;#039;&amp;#039;&amp;#039;peche activo&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;active close&amp;#039;&amp;#039;). Quen o recibe (neste caso o servidor) realiza un &amp;#039;&amp;#039;&amp;#039;peche pasivo&amp;#039;&amp;#039;&amp;#039; (&amp;#039;&amp;#039;passive close&amp;#039;&amp;#039;).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Transferencia de datos==&lt;br /&gt;
Unha vez establecida a conexión o TCP pode empezar a transferencia de segmentos en ambos os dous sentidos. Para transmitir información de xeito fiable, TCP implementa protocolos de control de erros e de fluxo.&lt;br /&gt;
&lt;br /&gt;
Cando o TCP envía datos mantén un temporizador (&amp;#039;&amp;#039;timeout&amp;#039;&amp;#039;) ata que recibe un ACK do receptor. Se o temporizador salta, o TCP retransmite os datos (&amp;#039;&amp;#039;&amp;#039;técnica de envío - espera&amp;#039;&amp;#039;&amp;#039;). Cando o TCP recibe un segmento de datos envía un recoñecemento. Este último pódese retornar atrasado (non de inmediato) se o TCP o considera necesario. &lt;br /&gt;
&lt;br /&gt;
Se un segmento recibido é incorrecto (o &amp;#039;&amp;#039;checksum&amp;#039;&amp;#039; indícao), o TCP descártao e devolve un segmento co mesmo número de ACK que recoñecera a última vez (&amp;#039;&amp;#039;&amp;#039;ACK duplicado&amp;#039;&amp;#039;&amp;#039;). O transmisor verá un ACK cun número repetido e interpretará que non lle recoñecen a información e, xa que logo, terá que volver a enviala.&lt;br /&gt;
&lt;br /&gt;
No caso de que non tivese datos para enviar en sentido contrario, o TCP pode enviar un segmento que non conteña datos. Este segmento tería o indicador ACK activado e recoñecería os bytes pertinentes no campo Número de ACK. &amp;#039;&amp;#039;&amp;#039;O número de secuencia non se incrementaría, posto que non se envían datos&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Se os segmentos chegan desordenados o TCP reordénaos e pasa os datos correctamente ordenados á aplicación. Se recibe segmentos duplicados, o TCP descarta as copias. &lt;br /&gt;
&lt;br /&gt;
TCP posúe unha memoria limitada polo que é necesario que efectúe un control de fluxo: cada extremo avisa dos datos que está disposto a recibir en cada momento utilizando o campo Tamaño da Ventá da cabeceira TCP visto anteriormente. Trátase dun mecanismo de &amp;#039;&amp;#039;&amp;#039;ventá deslizante&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
Na seguinte figura vemos un escenario interesante dende o punto de vista da transferencia da información, no que se reflicte unha retransmisión debida a unha perda de segmento. &lt;br /&gt;
[[Image:transporte11.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
Outro escenario interesante é o da seguinte figura na que se amosa o caso dun ACK duplicado. &lt;br /&gt;
[[Image:transporte12.jpg|center]]&lt;br /&gt;
Ambos escenarios usan &amp;#039;&amp;#039;&amp;#039;ACK acumulativos&amp;#039;&amp;#039;&amp;#039;, é dicir, un único segmento ACK pode recoñecer varios segmentos de golpe.&lt;br /&gt;
===Control de fluxo===&lt;br /&gt;
As memorias intermedias de recepción dos extremos TCP pódense encher, xa que logo, é necesario un protocolo de ventá deslizante (&amp;#039;&amp;#039;sliding window&amp;#039;&amp;#039;) para controlar o fluxo de datos. A idea é que cada extremo TCP regula a cantidade de datos que o outro extremo pode transmitir. Por iso, cada extremo notifica ao outro, cada vez que envía un segmento, a ventá que pode aceptar nese momento.&lt;br /&gt;
&lt;br /&gt;
A cabeceira do segmento TCP especifica tres parámetros para a técnica de ventá deslizante:&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;O número de secuencia&amp;#039;&amp;#039;&amp;#039;, que indica á súa conexión oposta o primeiro byte de datos que contén o segmento transmitido.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;O número de ACK&amp;#039;&amp;#039;&amp;#039;, que indica á súa conexión oposta o próximo byte que espera recibir e, xa que logo, o último byte recibido correctamente.&lt;br /&gt;
*&amp;#039;&amp;#039;&amp;#039;O tamaño da ventá&amp;#039;&amp;#039;&amp;#039;, que indica á súa conexión oposta o tamaño da memoria intermedia de recepción e, xa que logo, o tamaño da fiestra que o transmisor debe utilizar.&lt;br /&gt;
&lt;br /&gt;
O protocolo de ventá deslizante consiste en establecer límite no números de bloques de información que o emisor pode enviar sen recibir acuse de recibo deles. O tamaño da ventá deslizante en TCP mídese en bytes, isto é, cantos bytes se van poder enviar sen estar pendente do acuse de recibo.&lt;br /&gt;
&lt;br /&gt;
--[[Usuario:Arribi|Arribi]] 12:04 6 oct 2009 (BST)&lt;/div&gt;</summary>
		<author><name>Arribi</name></author>
	</entry>
</feed>