Olá! Esse é o meu segundo post no blog, após, é claro, do clássico “Olá Mundo”. Neste artigo, vou tratar de explicar o cabeçhalho do protocolo TCP (Transmission Control Protocol, RFC 793). Para muitos, as “portas” já são velhas conhecidas. Tanto o UDP e o TCP utilizam-nas, diferindo apenas se há garantia de entrega ou não do datagrama. As portas e seus respectivos serviços são definidos pela IANA, que são no total 65435 possibilidades, sendo as de 0 à 1024 reservadas para serviços bem conhecidos, como, por exemplo: SMTP (25), HTTP(80), HTTPS(443).

Para começar, vamos definir o porque da garantia da entrega de fluxo. Imagine que você queira enviar correspondências para seu amigo que se encontra no outro lado do planeta. Para isso, você contrata um funcionário especializado, com a seguinte premissa: quando a carta chegar, você quer ser avisado. Assim, você têm a garantia que a carta foi entregue.

Caso seu amigo desejar enviar, poderá lhe enviar cartas também, utilizando o mesmo funcionário contratado, apelas alterando a origem e destino (portas, nesse caso). Perceba que tanto você quanto o seu amigo podem se comunicar utilizando a mesma via, numa conexão full-duplex.

/*Um exemplo de conexão half-duplex são os walkie-talkies. Um transmite enquanto o outro aguarda a sua vez.*/

Exemplo de confirmação de envio.

Caso a confirmação de recebimento do pacote 1 (ack 1) não seja recebida em tempo, o pacote será retransmitido. O mesmo acontece no lado do servidor.

A retransmissão de pacotes pode gerar pacotes duplicados na rede. Este problema é resolvido atribuindo um número de sequência para as confirmações.

Até a próxima!