310 likes | 429 Views
Redes de Computadores. Transmission Control Protocol - TCP. O modelo TCP/IP. Aplicativo. TCP,UDP. Transporte. IP. Internet. Interface de Rede. Comunicação vista pelo TCP. O Serviço de Transporte.
E N D
Redes de Computadores Transmission Control Protocol - TCP Administração e Gerenciamento de Redes - SCE 238
O modelo TCP/IP Aplicativo TCP,UDP Transporte IP Internet Interface de Rede Administração e Gerenciamento de Redes - SCE 238
Comunicação vista pelo TCP Administração e Gerenciamento de Redes - SCE 238
O Serviço de Transporte • Recebe dados da camada de aplicativos e os divide em unidades menores para a camada internet (IP). • multiplexação/demultiplexação • Orientado à conexão (ponto a ponto) • Controle de Fluxo (congestionamento) • Confiabilidade (tratar erros) Administração e Gerenciamento de Redes - SCE 238
Transporte X Data Link • Controle de Erros • Controle de Fluxo • Seqüenciamento de Pacotes Administração e Gerenciamento de Redes - SCE 238
Roteador SubRede Roteador Host Host Meio Físico a) Ambiente do Data Link b) Ambiente da camada de transporte • Dissimilaridades • Endereçamento • Conexão • Capacidade de armazenamento (buffering) Administração e Gerenciamento de Redes - SCE 238
Estabelecendo uma conexão • Requisição de conexão conexão aceita • Não é tão simples: Pacotes • perdidos • armazenados (por roteadores) • duplicados Administração e Gerenciamento de Redes - SCE 238
Formato de um segmento TCP Administração e Gerenciamento de Redes - SCE 238
De onde vem a confiabiliade ? • Técnica de Reconhecimento com Retransmissão: (Aknowledgement with Retransmission) • Receptor comunica-se com emissor enviando uma msg ACK (aknowledgement) ao receber dados. • Emissor mantém registro de cada pacote enviado e mantém um timer p/ retransmissão Administração e Gerenciamento de Redes - SCE 238
Reconhecimento c/ retransmissão Eventos no Emissor Msgs na Rede Eventos no Receptor Envia pacote 1 Recebe Pacote 1 Envia ACK 1 Recebe ACK 1 Envia Pacote 2 Recebe Pacote 2 Envia ACK 2 Recebe ACK 2 Administração e Gerenciamento de Redes - SCE 238
Pacote perdido ou corrompido Eventos no Emissor Msgs na Rede Eventos no Receptor Pacote perdido Envia pacote 1 Inicia Timer Pacote deveria chegar ACK deveria ser enviado ACK deveria chegar Tempo espira Retransmite Pac. 1 Inicia Timer Recebe Pacote 1 Envia ACK 1 Recebe ACK 1 Cancela timer Administração e Gerenciamento de Redes - SCE 238
Pacotes duplicados • Origem de pacotes duplicados • Gerados por camadas inferiores de rede • Atrasos (delays) na rede • Solução • Atribuir a cada pacote um nro de seqüência • exigir do receptor que “lembre” qual nro de seqüência recebeu Administração e Gerenciamento de Redes - SCE 238
Segmentos, Streams e Nros de seqüência • TCP enxerga fluxo de dados (data stream) • sequência de octetos (bytes) • Agrupados em Segmentos • Cada segmento viaja dentro de um datagrama IP • Transporte utiliza janelas deslizantes • melhor eficiência (maior throughput) • controle de fluxo (buferização) Administração e Gerenciamento de Redes - SCE 238
Janelas Deslizantes • No TCP, as janelas deslizantes operam ao nível de octetos (não segmentos ou pacotes) • Octetos são numerados seqüencialmente • conceitualmente, a cada octeto é atribuído um nro de seqüência. • Emissor mantém 3 ponteiros sobre a janela para cada conexão. Administração e Gerenciamento de Redes - SCE 238
Janela Deslizante 1 2 3 4 5 6 7 8 9 10 11 ... Somente enviados após movimentação da janela Octetos enviados e reconhecidos Octetos não enviados mas que serão sem delay Octetos enviados e não reconhecidos Administração e Gerenciamento de Redes - SCE 238
Three-way handshake • Procedimento usado para estabelecer conexão • normalmente iniciado por um TCP e atendido por outro TCP • Por que 3? • a escolha do nro inicial de seqüência (ISN) não está atrelada a um clock global de rede. Administração e Gerenciamento de Redes - SCE 238
Handshake: abrindo conexão Eventos no Emissor Msgs na Rede Eventos no Receptor Envia SYNseq = x Recebe segmento SYN Envia SYN seq = y, ACKx +1 Recebe SYN +ACK Envia ACKy + 1 Recebe ACK Obs: Se SYN está presente: nro de seqüência é ISN O primeiro octeto de dados será ISN+1. Administração e Gerenciamento de Redes - SCE 238
Seleção do 1º nro de sequência (ISN) • Aleatório: clock fictício de 32 bits incrementado a cada 4 microsegundos • ciclo de 4.55 horas • tempo máximo de vida de um segmento (MSL) < 4,55 • ISN será único. Administração e Gerenciamento de Redes - SCE 238
Conexão antiga TCP A TCP B 1. FECHADA LISTEN 2. SYN-ENV. --> <SEQ=100><CTL=SYN> ... 3. (duplicate) ... <SEQ=90><CTL=SYN> --> SYN-RECEB. 4. SYN-ENV. <-- <SEQ=300><ACK=91><CTL=SYN,ACK> <-- SYN-RECEIVED 5. SYN-ENV. --> <SEQ=91><CTL=RST> --> LISTEN 6. ... <SEQ=100><CTL=SYN> --> SYN-RECEB. 7. SYN-ENV. <-- <SEQ=400><ACK=101><CTL=SYN,ACK> <-- SYN-RECEB. 8. ESTAB. --> <SEQ=101><ACK=401><CTL=ACK> --> ESTAB. Administração e Gerenciamento de Redes - SCE 238
Fechando uma conexão • Conexão TCP: full duplex • contém 2 streams independentes de dados • O TCP que recebe pedido de fechamento, passa a não aceitar mais dados • O TCP que iniciou o fechamento, pode ainda receber dados. Administração e Gerenciamento de Redes - SCE 238
Fechando conexão Eventos no Emissor Msgs na Rede Eventos no Receptor Aplicativo fecha conexão Envia FINseq = x Recebe segmento SYN Envia ACKx +1 (informa aplicativo) Recebe ACK Aplicativo fecha conexão Envia FINseq = y,ACK x + 1 Recebe SYN +ACK Envia ACKy + 1 Recebe ACK Administração e Gerenciamento de Redes - SCE 238
O que é uma janela ?Controle de Congestão • Janela enviada em cada segmento indica faixa de nro de sequências que o emissor da janela está preparado para receber. • Tam. relacionado ao buffer da conexão Administração e Gerenciamento de Redes - SCE 238
Emissor Receptor 0 4K Aplicativo passa 2K vazio 2K seq=0 2K ACK=2048 WIN=2048 Aplicativo passa 2K 2K seq=2048 cheio Emissor bloqueado ACK=4096 WIN=0 Aplicativo lê 2K ACK=4096 WIN=2048 2K Emissor pode env. 2K 1K seq=4096 2K 1K Administração e Gerenciamento de Redes - SCE 238
Observações • Emissor não tem que transmitir assim que dados chegam do aplicativo • Receptor não tem que retransmitir ACKs imediatamente. (pode esperar o buffer encher) Administração e Gerenciamento de Redes - SCE 238
Formato de um segmento TCP Administração e Gerenciamento de Redes - SCE 238
Tamanho máximo segmento • Header TCP: 20 bytes • Header IP: 20 bytes • Max: • 65535 - 20 - 20 = 65495 bytes de dados Administração e Gerenciamento de Redes - SCE 238
Conteúdo do Segmento 1 • Sequence Number: nro do primeiro octeto no segmento (exceto SYN) • Aknowledgement: nro do octeto que o emissor espera receber. • Hlen: comprimento do cabeçalho • Reserved: não usado (projeto bem feito!) Administração e Gerenciamento de Redes - SCE 238
Conteúdo do Segmento 2 • Code Bits: propósito/objetivo do segmento U R G A C K P S H R S T S Y N F I N • URG: indica dado urgente sendo transmitido • ACK: Se 0, desprezar nro de aknowledgement • PSH: transmite segmento sem bufferizar • RST: resetar conexão (queda do host, rejeitar segmento) Administração e Gerenciamento de Redes - SCE 238
Code Bits 2.1 • URG: indica dado urgente sendo transmitido • ACK: Se 0, desprezar nro de aknowledgement • PSH: transmite segmento sem bufferizar • RST: resetar conexão (queda do host, rejeitar segmento) • SYN: estabelecer conexões (SYN=1) • FIN: liberar uma conexão • SYN e FIN tem nros de sequência. Administração e Gerenciamento de Redes - SCE 238
Conteúdo do Segmento 3 • Window: quantos octetos podem ser mandados começando a partir do byte no campo aknowledgement number. • window = 0: receptor precisa de “descanso”. • Checksum: cabeçalho+dados • Options: funções extras • Especificar valor inicial da janela • se ausente, usar default (536+20=556 octetos) Administração e Gerenciamento de Redes - SCE 238