Introdução TCP Serviço de Transporte Confiável 1 Introdução O serviço de entrega IP não garante um serviço confiável. Apresenta problemas a serem resolvidas como: – – – – 2 Pacotes duplicados; Pacotes fora de ordem; Perda de pacotes; Pacotes adulterados. TCP - Transmission Control Protocol 3 O TCP oferece um serviço confiável de entrega de dados: – Utiliza o serviço não confiável de Entrega IP; – Ele oferece um serviço de entrega onde os pacotes são entregues na ordem correta, sem perda de dados ou duplicação. TCP - Transmission Control Protocol 4 É considerado um ótimo protocolo para Inter-Rede; O serviço oferecido pelo TCP tem 7 características importantes: – Orientado à conexão; – Comunicação ponto a ponto; – Confiabilidade completa; – Comunicação full duplex; – Interface de stream; – Partida de conexão confiável; – Desligamento de conexão graciosa. TCP - Transmission Control Protocol Serviço Fim à Fim: – – 5 É um serviço que é oferecido diretamente as aplicações. Os serviços simples como: enviar e receber dados, abrir e fechar a conexão) Conexão virtuais (criada via software); Confiabilidade Perda de pacote: – – 6 O TCP trata das questões das perdas de pacotes através da retransmissão; Deve ser flexível quanto ao time-out para espera do acknowledgment. Confiabilidade Retransmissão Adaptativa: – Antes de inventarem o TCP, os time out eram fixos e não funcionavam bem; – O modo adaptativo oferecido pelo TCP provou ser melhor, pois tem um esquema que mede o atraso a cada envio de dados; 7 O esquema faz estimativas a cada transmissão do tempo de atraso da rede. Fazendo médias ponderadas, mantém uma estimativa da variância, e combinações lineares da mediana para responder a mudanças de velocidades. A variância permite o TCP responder rápido as mudanças de velocidades, como as provocadas pelas rajadas de pacotes; A media ponderada permite recuperar e manter os valores após um boot. Confiabilidade 8 Confiabilidade Buffer, Controle de Fluxo e Janela – – Funcionamento: – – 9 O TCP utiliza o mecanismo de Janela para controle de Fluxo de dados. A cada Acknowledgment, o receptor retorna o tamanho de janela restante para informar ao emitente o quanto de buffer tem disponívelAnuncio de janela; Se o receptor for muito rápido, ele enviará sempre um ack informando uma janela positiva; Se o Remetente for mais rápido que o receptor, então o buffer do receptor irá logo ficar cheio, informando ao remetente um ack de tamanho cada vez menor até atingir tamanho ZERO. Confiabilidade 10 Exemplo de anúncio de Janelas Confiabilidade 11 Three Way Handshake – É usado pelo TCP para estabelecer ou encerrar uma conexão de forma confiável; – Através da troca de 3 mensagem apenas é suficiente para garantir um acordo não ambíguo apesar do perda de pacotes, duplicação e atraso. Confiabilidade 12 O TCP utiliza o termo Segmento de SYN para definir uma msg 3 Way Handshake para iniciar uma conexão; O TCP usa o termo Segmento FIN para definir uma msg 3 Way Handshake para fechar uma conexão; Tem retransmissão de pacote e numeração aleatória para para garantir a comunicação entre as partes; Confiabilidade 13 Controle de Congestionamento: – O TCP usa a perda de pacote como medida de congestionamento e reduzir a taxa de transmissão; – Quando o dado é perdido, o TCP inicia enviando apenas um pacote em vez de tentar preencher o buffer do receptor. A medida que ele for recebendo o ACK, ele vai dobrando o número de pacotes até atingir o a metade do tamanho máximo que é o tamanho da janela. A partir daí ele diminui a taxa. Confiabilidade Formato do Segmento TCP: – – Tem um único formato para todas as mensagens; Tem campos para ambas as direções: 14 Ack; Anúncio de Janela; Dados; Confiabilidade 15 Source Port - Porto do aplicativo que enviou os dados; Destination Port - Porto do aplicativo que vai receber os dados; Sequence Number - É numeração usada para pelo receptor para reorganizar os dados que chegam fora de ordem; Acknowledgment Number - Especifica o numero dos dados que foram recebidos no receptor; Window - Diz o tamanho do buffer de recepção (janela); Checksum - Checksum de todos os dados incluindo o cabeçalho.