Faculdade de Tecnologia Senac Pelotas Curso Superior em Tecnologia de Redes de Computadores Unidade Curricular - Redes de Computadores II Prof. Eduardo Maroñas Monks Camada de Transporte: protocolo TCP Parte 1 Sumário Funções da camada de transporte Protocolo TCP Características do TCP Estados do TCP API do TCP Referências Bibliográficas 2 Camada de Transporte A camada de Transporte é o link entre a camada de Aplicação e a camada de rede, que são responsáveis pela transmissão na rede. Esta camada aceita dados de diferentes conversações e os passa para as camadas inferiores como segmentos gerenciáveis que podem ser repassados ao meio físico. 3 Camada de Transporte PING User Process Firefox User Process Cliente de NTP User Process TCP User Process Application Layer UDP Transport Layer ICMP IP IGMP Network Layer ARP Hardware Interface RARP Link Layer Media 4 Camada de Transporte ● ● Os protocolos da camada de transporte têm a função de possibilitar a comunicação fim a fim entre os hosts São protocolos implementados nos hosts que Apache:80 hospedam aplicações de usuário HOST HOST Firefox:2012 Application Application Transport Network Data Link Transport Network Data Link Network Data Link Data Link 5 Camada de Transporte Os dois protocolos principais do modelo TCP/IP são o UDP e o TCP UDP – (User Datagram Protocol) TCP – (Transmission Control ● Orientado a datagramas Sem recursos de confiabilidade, sem conexão Simples Transmissões em unicast e multicast Útil somente em algumas aplicações, por exemplo áudio e vídeo, jogos e multicast Muito usado em serviços, tais como: gerenciamento da rede (SNMP), roteamento (RIP), resolução de nomes (DNS). Protocol) Orientado por fluxo Com recursos de confiabilidade, e orientado a conexão Complexo Somente transmissões em unicast Usado pela maioria das aplicações na Internet: web (HTTP), e-mail (SMTP), transferência de arquivos (FTP), terminal remoto (telnet e SSH), etc. 6 Protocolo TCP O protocolo TCP (Transmission Control Protocol) definido na RFC 793, possui as seguintes facilidades para a camada de aplicação: Recuperação de erros; Controle de fluxo; Confiabilidade; Orientado à conexão; 7 O conceito TCP O principal objetivo do TCP é fornecer um serviço de conexão entre dois pares de processos. O protocolo não conta com a confiabilidade dos protocolos de mais baixo nível (por exemplo IP). Antes de qualquer transferência de dados, o protocolo TCP estabelece uma conexão 8 O conceito TCP Um dos participantes é o cliente (o qual inicia a conexão) e o outro é o servidor (o que aguarda a conexão). Após a conexão ser estabelecida, é criada uma via de comunicação bidirecional entre as duas aplicações. 9 Características do TCP Transferência de fluxo de dados; Confiabilidade; Controle de fluxo; Multiplexação; Conexões lógicas; Comunicação Bi-direcional. 10 Características do TCP Transferência de fluxo de dados: Do ponto de vista da aplicação, o TCP transfere um fluxo contínuo de bytes através da rede. Desta forma a aplicação não precisa controlar a divisão dos dados em blocos. Os dados são divididos em segmentos e enviados para a camada de rede 11 Serviço de fluxo de bytes Para as camadas inferiores, o TCP manipula os dados em blocos, os chamados SEGMENTOS Para as camadas superiores, o TCP manipula os dados como uma sequência de bytes e não identifica limites entre os bytes (fluxo contínuo) Application Application 1. write 100 bytes 2. write 20 bytes Observação: as camadas superiores não sabem ondem começam ou terminam os TCP SEGMENTOS! queue of bytes to be transmitted Segments 1. read 40 bytes 2. read 40 bytes 3. read 40 bytes TCP queue of bytes that have been received 12 Características do TCP Confiabilidade: Detecção de erros: Segmentos com O TCP assume um número de seqüência checagem de para cada byte transmitido e espera um integridade (campo checksum ) falhosdo reconhecimento positivo (ACK) são descartados no receptor. destino. Se esta confirmação não é recebida dentro de um tempo estabelecido, os dados são retransmitidos. Um temporizador é utilizado para cada conexão TCP. Os números de seqüência também são usados para reordenar os segmentos quando estes chegam foram de ordem ou para eliminar os segmentos duplicados. 13 Medições de Round-Trip Time O mecanismo de retransmissão do TCP é adaptativo Os temporizadores de retransmissão são configurados baseados nos tempos chamados de round-trip time (RTT) (tempo de ida e volta) que o TCP calcula Segment 1 RTT #1 nt 1 e ACK for Segm Segment 2 Segment 3 RTT #2 O RTT é baseado na diferença de tempo entre a transmissão do segmento e o recebimento do ACK O valor do RTT é calculado levando em conta a média dos tempos egment 2 ACK for S Segment +3 Segme 5 nt 4 RTT #3 egment 4 ACK for S egment 5 ACK for S 14 Características do TCP Controle de fluxo: Os hosts de rede têm recursos limitados, como memória e largura de banda. Quando a camada de Transporte está ciente de que esses recursos estão sobrecarregados, alguns protocolos podem solicitar que a aplicação de envio reduza a taxa de fluxo de dados. 15 Características do TCP Controle de fluxo: Isto é feito na camada de Transporte regulando a quantidade de dados agrupados que a origem transmite. O controle de fluxo pode prevenir a perda de segmentos na rede e evitar a necessidade de retransmissão. 16 Controle de Fluxo O protocolo TCP utiliza uma versão do mecanismo de controle de fluxo em janela Tamanho da Janela: deslizante Cada da conexão anuncia o seu tamanho de Olado envio de reconhecimentos é separado janela que é o máximo número de bytes que o da configuração do tamanho da janela do receptor pode aceitar emissormáximo é 216 = 65535 bytes O tamanho Os reconhecimentos não (Uso de multiplicador de janela nasaumentam opções, pode aumentar para 1GByte) o tamanho da janela de automaticamente http://en.wikipedia.org/wiki/TCP_window_scale_option transmissão Durante o estabelecimento da conexão, os participantes configuram o tamanho inicial da janela deslizante 17 Características do TCP Multiplexação: Ativado através do uso de portas, tal como no protocolo UDP. Podem haver muitas aplicações ou serviços sendo executados em cada host na rede. Cada uma destas aplicações ou serviços é designado a um endereço conhecido como uma porta A aplicação ou serviço sendo executado no host será identificado pela porta 18 Características do TCP Conexões lógicas: Os mecanismos que garantem a confiabilidade e o controle de fluxo obrigam que o TCP inicialize e mantenha informações do status de cada fluxo de dados. A combinação deste status, incluindo sockets, números de seqüência e tamanhos de janelas é chamado de conexão lógica. Cada conexão é unicamente identificada pelo par de sockets usados pelo processos que estão enviando e recebendo dados. Exemplo de identificação de conexão lógica: (tcp,192.168.200.254:2012, 200.18.98.87:80) 19 Características do TCP Comunicação Bi-direcional: O TCP provê comunicação em ambas as direções entre fluxos de dados concorrentes. Ao se estabelecer uma conexão, os dados podem ser enviados e recebidos pela mesma conexão lógica. 20 Princípio de Janela A forma mais simples de um protocolo garantir a entrega de um pacotes é a seguinte: Enviar um pacote; Esperar um reconhecimento por parte do receptor da chegada do pacote; Após o recebimento do reconhecimento, enviar o próximo pacote; Se um reconhecimento não for recebido por determinado tempo, retransmitir o pacote. 21 Princípio de Janela Embora este mecanismo garanta a confiabilidade na entrega dos pacotes, usa somente parte da largura de banda da rede disponível. 22 Princípio de Janela Outra forma de enviar pacotes com confiança e aproveitar melhor a rede, poderia usar as seguintes regras: - O emissor pode enviar todos os pacotes dentro de uma janela (conjunto de pacotes) sem receber um reconhecimento (ACK), mas deve iniciar um contador para cada um dos pacotes enviados; - O receptor deve reconhecer cada pacote recebido, indicando o número de seqüência do último pacote recebido; - O emissor desliza a janela a cada ACK recebido. 23 Princípio de Janela Neste exemplo o emissor pode transmitir os pacotes 1 até o 5 sem esperar por nenhum ACK: No momento que o emissor recebe um ACK 1 (reconhecimento para o pacote 1), ele pode deslizar a janela em um pacote para a direita. Neste ponto, o emissor pode enviar o pacote 6. 24 Princípio de Janela O mecanismo de Janela Deslizante garante: Transmissão confiável; Melhor uso da largura de banda da rede; Controle de fluxo, já que o receptor pode demorar para responder a um reconhecimento de um pacote, sabendo do seus buffers livres e do tamanho da janela na conexão. 25 Princípio de Janela aplicado ao TCP O mecanismo de Janela Deslizante é usado no TCP, mas com algumas diferenças: O TCP provê um conexão orientada a fluxo de bytes, números de seqüência são gerados para cada byte no fluxo de dados. O TCP divide este fluxo contínuo em segmentos O tamanho da janela será determinado pelo receptor quando a conexão é estabelecida e poder ser variável durante a transferência de dados. Cada ACK carregará o tamanho da janela. 26 Princípio de Janela aplicado ao TCP O fluxo de dados do emissor pode ser visto como: Demonstração do Sliding Windows do TCP Onde: A – Bytes que B – Bytes que reconhecidos; C – Bytes que reconhecimento; D – Bytes que foram transmitidos e já reconhecidos; foram enviados mas não foram ainda podem ser enviados sem esperar por nenhum não podem ser enviados ainda. 27 Formato do segmento TCP IP header TCP header 20 bytes TCP data 20 bytes 0 15 16 Source Port Number 31 Destination Port Number Sequence number (32 bits) header length 0 Flags TCP checksum 20 bytes Acknowledgement number (32 bits) window size urgent pointer Options (if any) DATA 28 Formato do segmento TCP Source Port – número da porta de origem (16 bits); Destination Port – número da porta de destino (16 bits); Sequence Number – número de seqüência do primeiro byte neste segmento. Se o bit de control SYN estiver setado, o número de seqüência é o número de seqüência inicial (n) e o primeiro byte de dados é n+1. Acknowledgment Number – se o bit de controle ACK estiver setado, este campo contêm o valor do próximo número de seqüência que o receptor está esperando receber. Data Offset – contêm o número de palavras de 32 bits no cabeçalho. Indica onde começa a parte de dados no segmento. Reserved – reservado para uso futuro, deve ser zero. Window – usado em segmento ACK. Especifica os número de bytes de dados, começando pelo indicado no campo do número de ACK, que o receptor está aceitando receber. Checksum - soma de verificação gerada em um pseudocabeçalho. 29 Formato do segmento TCP (Flags de Controle) URG – indica se o campo de urgência é significativo neste segmento. ACK – indica se o campo acknowldegment é significativo neste segmento. PSH – função PUSH (envia o restante dos segmentos antes de encerrar um conexão). RST – reseta a conexão. SYN – sincroniza os números de seqüência. FIN – sem mais dados do emissor (finaliza conexão). 30 Reconhecimentos e Retransmissões O TCP envia dados em segmentos de tamanhos variáveis. Os reconhecimentos especificam o número de seqüência do próximo byte que o receptor espera receber. Considerando que um segmento pode se perder ou se tornar corrompido, o receptor deve reconhecer todos os segmentos posteriores que forem recebidos ok, fazendo referência ao primeiro byte do pacote perdido. O emissor irá parar de transmitir quando tiver enviado todos os bytes na janela atual. Um timeout irá ocorrer e o segmento faltante irá ser retransmitido. 31 Reconhecimentos e Retransmissões No diagrama, o tamanho da janela é de 1500 bytes e o tamaho dos segmentos são de 500 bytes. 32 Reconhecimentos e Retransmissões Intervalos variáveis de Timeout: Cada implementação de TCP adapta de forma diferente os valores de tempos de timeout entre o envio e o recebimento de segmentos. Este tempos devem ser condições de tráfego da rede. adaptáveis as 33 Estabelecimento de uma conexão TCP Antes de qualquer dado ser transmitido, uma conexão deve ser estabelecida entre dois processos. Um destes processos, normalmente um servidor, implementa um chamada passiva de OPEN (passive OPEN) e outro processo uma chamada ativa de OPEN (active OPEN). A chamada passiva de OPEN permanece em espera até que outro processo tente se conectar a ela através de uma chamada de OPEN ativa. 34 Estabelecimento de uma conexão TCP 3-WAY Handshake: É chamado o processo de estabelecimento de conexão no protocolo TCP. Três segmentos de controle são trocados entre os processos: 35 Encerrando uma conexão TCP O fechamento de um conexão é feito através do envio de um segmento com o bit de controle FIN setado. Já que a conexão é bi-direcional o segmento FIN só encerra a transferência de um lado. O outro processo irá enviar os dados remanescentes e também irá enviar um segmento FIN, no término do envio. A conexão é desfeita quando ambos os lados fecharem seus fluxos de dados. 36 Encerrando uma conexão TCP O fechamento de um conexão pode ser feito com o uso da flag RESET. É uma forma mais rápida de encerramento de conexões Quando a porta não está em estado de LISTENING, o host retorna um segmento com a flag RESET Encerramento da conexão com o uso da flag RESET Tentativa de acesso em porta inexistente 37 Estados do TCP Durante o ciclo de vida de uma conexão TCP, podem ocorrer diversos estados. Prática com a ferramenta TCP View 38 Estados do TCP Procedimento normal de abertura e fechamento de conexão LISTEN SYN (S SYN_SENT (active open) eqNo = x) AckNo , y = o N q e (S SYN =x+1) (passive open) SYN_RCVD (AckNo = y + 1 ) ESTABLISHED ESTABLISHED FIN_WAIT_1 (active close) FIN_WAIT_2 TIME_WAIT FIN (SeqNo = m) (AckNo = m+ 1 ) CLOSE_WAIT (passive close) FIN (SeqNo = n ) (AckNo = LAST_ACK n +1 ) CLOSED 39 Estados do TCP Transições de estado na abertura de conexão CLOSED passive open send: . / . LISTEN recv: RST close or timeout active open send: SYN Application sends data send: SYN recv: SYN send: SYN, ACK SYN RCVD recvd: ACK send: . / . send: FIN simultaneous open recv: SYN send: SYN, ACK SYN SENT recv: SYN, ACK send: ACK ESTABLISHED recvd: FIN send: FIN 40 40 Estados do TCP Transições de estado no fechamento de conexão active close send: FIN ESTABLISHED FIN_WAIT_1 recv: ACK send: . / . passive close recv: FIN send: ACK recv: FIN send: ACK recv: FIN, ACK send: ACK FIN_WAIT_2 recv: FIN send: ACK CLOSING recvd: ACK send: . / . CLOSE_WAIT application closes send: FIN LAST_ACK TIME_WAIT Timeout (2 MSL) recv: ACK send: . / . CLOSED 41 Bibliografia RODRIGUEZ, Adolfo; GATRELL, John; KARAS, John;PESCHKE, Roland. TCP/IP Tutorial and Technical Overview. IBM Red Books, 2006. Disponível em: http://www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/gg243376.html KUROSE, J.;ROSS, K. Redes de computadores e a Internet – Uma abordagem top-down. 3ª edição. Editora Pearson, 2006. COMER, Douglas. Interligação em Rede com TCP/IP – Volume I. 3ª Edição. Editora Campus, 1998. WIRESHARK. Wiki. Disponível em http://wiki.wireshark.org/ 42