TCP - Transmissão Fiável
- Confirmação de recepção
- O recetor confirma, através de uma mensagem curta (Acknowledgemente), que recebeu o segmento enviado;
- Retransmissão
- Se a confirmação não for recebida dentro de um período determinado, o segmento é reenviado;
TCP - Retransmissão
- Quanto tempo esperar pela confirmação (ACK)?
- Depende da distância ao destino e das condições do tráfego no momento.
- O momento de espera num determinado momento é estimado a partir do Round-Trip Time de cada ligação e do tempo estimado presente:
- Chama-se, por isso, retransmissão adaptável.
- O segredo do sucesso do TCP.
TCP - Controlo de congestão
- A congestão é detetada por:
- Ocorrência de Timeout (ACKs não chegam)
- Receção duplicada de ACKs.
- Ao serem detetadas colisões:
- O envio de segmentos é reduzido drasticamente (Collision Avoidance Algorithm);
- Depois começa a aumentar devagar, inicialmente e exponencialmente com o tempo (Slow Start Algorithm);
TCP - Controlo de Fluxo
- O recetor:
- Anuncia, a cada ACK, o espaço livre do seu buffer (window size);
- O emissor:
- Envia segmentos até ao limite da janela (window size), sem ter de esperar por confirmação (ACKs);
- Este mecanismo é conhecido como Protocolo da Janela Deslizante (Sliding Window Protocol).
TCP - Encerramento fiável
- Importante por causa da segurança:
- Se não for encerrada de forma correta, poderão ficar portas abertas;
- Alguém mal intencionado poderá aproveitar-se
- O mecanismo de encerramento de TCP permite que uma das partes termine a ligação e a outra possa continuar a enviar dados;
- Chama-se half-closed:
- O fecho da ligação num dos dados não obriga o fecho de ambos.
TCP - Formato
- Source/Destinaton Port
- Porta remente/destinatária (aplicação);
- Sequence Number
- Número de sequência do pacote;
- Acknowledgement Number
- Próximo número de sequência que o emissor espera receber;
- HLen (Header Length)
- Tamanho do cabeçalho;
- URG - O campo Urgent Pointer é válido.
- ACK - O segmento é uma confirmação (Acknowledgement);
- PSH - O recetor deverá passar os dados para a camada de aplicação logo que possível;
- RST - Segmento enviado não faz sentido (Exemplo: Porta não Existe);
- SYN - Pedido de sincronização de números de sequência (para iniciar ligação);
- FIN - Computador emissor acabou o envio de dados (para terminar ligação);
- Window
- Número de bytes que o host está disposto a aceitar (espaço livre na buffer);
- Checksum
- Cobre o cabeçalho+dados;
- Urgent Pointer
- Posição onde serão colocados os dados urgentes.
- Options
- A opção mais comum é a MSS (Maximum Segment Sender) que define o tamanho máximo de segmento que pode ser enviado.
Métodos de conexão por TCP
- É um método standard que permite a comunicação entre processos (que se encontram eventualmente em diferentes máquinas), isto é, um conjunto de regras e procedimentos a respeitar para emitir e receber dados numa rede.
- Existem vários métodos, de acordo com o que se espera da comunicação.
- Certos protocolos, por exemplo, serão especializados na troca de ficheiros (FTP), outros poderão servir para gerir simplesmente o estado da transmissão, e os erros (é o caso do protocolo ICMP), …