Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
10/10/01 1 4.1 - Destino final da mensagem • sistema operacional na maioria dos computadores suporta multiprogramação, o que significa que vários programas de aplicação podem ser executados simultaneamente. • No jargão do sistema operacional, referimos cada programa em execução como um processo. • É natural pensarmos que um processo em uma determinada máquina é o destino final para um mensagem. • Entretanto, • Como os processos são criados, destruídos e substituídos dinamicamente, os remetentes dificilmente saberiam identificar um processo numa outra máquina. • Portanto, • Em vez de pensar num processo como sendo último endereço, seria melhor imaginar que cada máquina contém um conjunto de pontos abstratos de destino denominados portas de protocolos. Camada de Transporte 10/10/01 2 4.2 - Portas de protocolos • Cada porta de protocolo é identificada por um número positivo. • sistema operacional local fornece uma interface através da qual os processos podem especificar uma porta e utilizá-la. • Em geral, as portas possuem buffers para que os pacotes fiquem armazenados até que sejam retirados pelos processos. • Para se comunicar com uma porta externa, um remetente precisa conhecer o endereço IP da máquina destinatária e o número da porta do protocolo dentro desta máquina. • Cada mensagem carrega consigo, o número da porta da máquina destino para onde a mensagem deve ser enviada, e o número da porta da máquina fonte por onde as respostas devem ser endereçadas. Camada de Transporte 10/10/01 3 Portas disponíveis e reservadas • Muitas portas são reservadas. São denominadas portas conhecidas. • Tais portas são estáticas e assinaladas através de uma autoridade central. • Outras portas são assinaladas dinamicamente. • Um programa para solicitar um serviço residente em uma outra estação deve possuir uma porta. • Normalmente, portas dinâmicas são assinaladas para estes programas nas estações locais. • servidor residente na outra estação responde enviando mensagens para esta porta. Camada de Transporte 10/10/01 4 4.3 - Protocolo UDP • Definição: • UDP ou User Datagram Protocol, fornece um meio através da qual os programas de aplicação podem enviar datagramas para outras aplicações. • UDP fornece portas para distinguir os processos que executam numa mesma máquina. • Cada mensagem UDP contém os números das portas origem e destino. • UDP usa a camada IP para transportar as mensagens. • UDP fornece a mesma semântica de entrega, não confiável e sem conexão do protocolo IP, ou seja: • Características: • Não usa ACKs para garantir que a mensagem chegou ao destino • Não ordena as mensagens que chegam, na seqüência certa. • Não fornece realimentação para controlar a taxa com que as informações fluem entre as máquinas. • Portanto, as mensagens UDP podem se perder, duplicar, ou chegar fora de ordem. • As aplicações que usam UDP, devem fornecer serviço de entrega confiável. Camada de Transporte 10/10/01 5 Formato de datagrama UDP Porta de origem Porta de destino Tamanho da mensagem Checksum dados … Endereço destino Endereço origem Tipo Cabeçalho IP CRC Porta de origem e de destino identificam os números das portas. Tamanho da mensagem contém o número total de octetos do datagrama UDP, incluindo o cabeçalho e dados. Checksum é opcional e não precisa ser usado em todos os datagramas. Um valor zero neste campo indica que ele não deve ser tratado. O Checksum é calculado apenas sobre o cabeçalho. Camada de Transporte 10/10/01 6 Pseudo cabeçalho do UDP • Antes de calcular o checksum, o UDP adiciona um pseudo cabeçalho ao datagrama original e calcula o checksum sobre o datagrama inteiro. • Este pseudo cabeçalho não é transmitido com o datagrama UDP nem incluído no seu tamanho. • .O pseudo cabeçalho inclui os seguintes campos: • Endereço IP de origem • Endereço IP de destino • Protocolo • Tamanho do UDP ( sem incluir o pseudo cabeçalho ) • propósito de utilizar o pseudo cabeçalho é verificar se o datagrama UDP alcançou o seu destino correto. • Observação : O cabeçalho UDP só especifica o número das portas do protocolo. • No destino o UDP verifica o checksum utilizando os endereços IP obtidos do cabeçalho do datagrama IP que carrega a mensagem UDP. Camada de Transporte 10/10/01 7 4.4 - Encapsulamento de UDP Encapsulamento de dados UDP na Ethernet Dados Cabeçalho UDP Dados Dados Cabeçalho UDP Cabeçalho IP # porta UDP origem (16 bits) # porta UDP destino (16 bits) protocolo = UDP end. origem Internet (32 bits) end. destino Internet (32 bits) protocolo = UDP end. Ethernet origem (48 bits) end. Ethernet destino (48 bits) Frame Ethernet Dados Cabeçalho UDP Cabeçalho IP Cabeçalho IP Cabeçalho IP 14 20 8 4 Camada de Transporte 10/10/01 8 Camada de Transporte 4.5 - Multiplexação e Demultiplexação • software UDP efetua multiplexação e demultiplexação entre a camada UDP e os programas de aplicação. • A multiplexação e demultiplexação ocorre através do mecanismo de portas. • Na maioria das implementações, quando um programa de aplicação solicita uma porta, o sistema operacional cria também, uma fila interna para armazenar as mensagens que chegam para esta porta. • Quando UDP recebe um datagrama, ele verifica se o número da porta destino coincide com uma das portas correntemente em uso. • Se não coincidir, envia uma mensagem ICMP de erro ( port unreachable ) e descarta o datagrama. • Se coincidir, enfileira o novo datagrama na porta. Demultiplexação baseado em número de portas Camada UDP Porta 53 Porta 69 Porta 4500 Camada IP 4 3 APLICAÇÃO X DNS TFTP 10/10/01 9 Camada de Transporte 4.6 - TCP ( Transmission Control Protocol ) • Fornece um serviço de entrega confiável de dados aos programas de aplicação. • Efetua também, a demultiplexação de número de portas para identificar a aplicação. As principais características de TCP: • Protocolo orientado a conexão. • Transferência confiável de dados. • Transferência orientada a cadeia ( stream ) de bytes • Ressequenciamento. • Controle de fluxo ( janela deslizante ), • Multiplexação • Transmissão full-duplex • Graceful close. 10/10/01 10 Camada de Transporte TCP ( Transmission Control Protocol ) Protocolo orientado a conexão • Antes de efetuar a transmissão de dados, o aplicativo deve solicitar o estabelecimento de uma conexão com o outro aplicativo. • módulo TCP mantém o estado de cada conexão existente. Transferência confiável de dados • protocolo TCP usa números de seqüência e reconhecimentos para conversar com outra estação na rede. • Números de seqüência são usados para determinar a ordem dos dados que chegam e para detectar pacotes que estão faltando. • número de seqüência com reconhecimento é usado para efetuar uma comunicação confiável. • TCP usa sequenciamento orientado a bytes. • Cada byte possui um número seqüencial. • Cada pacote é assinalado com um número de seqüencial. • número de seqüência pula conforme a quantidade de bytes que existem dentro dos pacotes. 10/10/01 11 Camada de Transporte TCP ( Transmission Control Protocol ) Sequenciamento de bytes no TCP 54 53 51 52 44 45 46 47 48 49 50 40 41 42 43 Número de seqüência = 51 Número de seqüência = 44 Número de seqüência = 40 Dado (byte) dentro do pacote 10/10/01 12 Camada de Transporte TCP ( Transmission Control Protocol ) Transferência orientada a cadeia ( stream ) de bytes: • Protocolo orientado a stream de bytes são aqueles projetados para enviar bytes individuais, e não blocos, frames ou datagramas. • . Os dados são passados da camada superior, bytes a bytes • . A camada TCP, agrupa estes bytes em segmentos TCP. • Estes segmentos são passados para camada IP ( ou outro protocolo de rede ) para a transmissão. • tamanho dos segmentos é determinado pelo TCP, embora o implementador do sistema possa determinar como TCP deve fazer essa decisão. • Em virtude da natureza orientada a stream, TCP não reconhece dados estruturados. • Por exemplo, não existe meio para uma aplicação de folha de pagamentos ter as fronteiras dos streams estarem na fronteira dos registros dos empregados. • A aplicação deve cuidar disso. 10/10/01 13 Camada de Transporte TCP (Transmission Control Protocol ) Ressequenciamento • TCP põe na ordem correta, os segmentos que chegam fora de ordem. • . TCP usa um esquema de reconhecimento eficiente no qual reconhece apenas o maior número contíguo dos segmentos recebidos sem erro. • Não reconhece um número de segmento se os anteriores não foram recebidos. • Descarta também, os segmentos duplicados. Controle de fluxo • TCP efetua o controle de fluxo enviando um valor de " janela " ao transmissor. • O transmissor pode transmitir um número especificado de bytes dentro dessa janela., quando essa janela é fechada e o transmissor para de enviar os dados. • Multiplexação • TCP permite multiplexar várias sessões de usuários dentro de um único host. • Esse mecanismo é baseado em portas e sockets. 10/10/01 14 Camada de Transporte TCP (Transmission Control Protocol) Transmissão full-duplex • Fornece transmissão simultânea nos dois sentidos. Graceful close • Permite encerrar (fechar) a conexão assegurando que todos os dados foram reconhecidos antes de remover a conexão. 10/10/01 15 Camada de Transporte TCP (Transmission Control Protocol) Portas, pontos finais e conexões • O TCP define um ponto final como sendo um par de inteiros (host, porta), onde host é o endereço IP do host e porta é uma porta TCP no host. • Esse valor deve ser único na internet. • Um par de pontos finais define uma conexão. • Como o TCP identifica uma conexão por um par de pontos finais, uma porta TCP pode ser compartilhada por múltiplas conexões. • Isto significa que um programa pode fornecer serviço concorrente para múltiplas conexões simultaneamente sem precisar de uma porta para cada conexão. 10/10/01 16 TCP (Transmission Control Protocol) Distinção entre conexões. • O ponto final (128.1.2.3,25) especifica uma porta TCP de porta 25 na máquina de endereço 128.1. 2.3. • O par de pontos finais (128.3.2.1,100) e (128.1.2.3,25) definem uma conexão entre estes dois pontos finais. • Um novo par de pontos finais (128.3.2.1,200) e (128.1.2.3,25) definem uma nova conexão. Camada de Transporte 10/10/01 17 TCP (Transmission Control Protocol) Formas de estabelecer uma conexão a) Passive Open – Modo na qual permite uma aplicação (por exemplo: servidor) dizer ao TCP para esperar uma por uma solicitação de conexão de sistemas remotos (por exemplo: processo cliente). b) Active Open – Modo no qual permite uma aplicação solicitar o estabelecimento de uma conexão. Estabelecimento de conexão • A aplicação de um dos lados executa uma função (Passive Open) de sistema operacional para aguardar uma conexão da rede. • Nesse instante o sistema operacional assinala uma porta para esse lado da conexão. • A aplicação do outro lado solicita uma função (Active Open) do sistema operacional para estabelecer uma conexão. • Os dois módulos de software TCP se comunicam entre si para estabelecer uma conexão. • Uma vez estabelecida a conexão, os programas podem passar os dados. Camada de Transporte 10/10/01 18 TCP (Transmission Control Protocol) Formato de Segmento • A unidade de transferência de dados trocada entre estações usando protocolo TCP é denominada Segmento. • Os Segmentos são usados para: • Estabelecer conexões; • Transferir dados; • Enviar reconhecimentos; • Dar aviso do tamanho da janela; • Fechar conexões. Camada de Transporte 10/10/01 19 TCP (Transmission Control Protocol) Camada de Transporte 10/10/01 20 TCP (Transmission Control Protocol) Segmento TCP • Porta de Origem e Porta de Destino – contém os números das portas TCP associadas aos programas de aplicação em cada ponto da conexão. • Número de seqüência – identifica o número de seqüência do primeiro octeto desse segmento dentro do stream como um todo. • Número de reconhecimento (Ack) – identifica o número do próximo octeto que o destino espera receber. • HLEN – contém um inteiro que especifica o tamanho de cabeçalho do segmento medido em múltiplos de 32 bits. • Bits de código • URG – Campo Urgent Pointer é valido; • ACK – Campo número de ACK é válido; • PSH – Este segmento solicita uma operação push; • RST – Ocorre reiniciação da conexão; • SYN – Sincroniza os número de seqüência; • FIN – O transmissor deseja terminar a conexão,. • Janela – Indica quantos bytes o receptor está disposto a aceitar. O valor de bytes que o transmissor pode transmitir é estabelecido adicionando-se o valor contido no campo Número de ACK com o valor contido no campo Janela. • Checksum – É baseado na soma em complemento de um pseudocabeçalho, do cabeçalho e dos dados. O mesmo artifício é usado pelo UDP. Camada de Transporte 10/10/01 21 TCP (Transmission Control Protocol) Segmento TCP • Urgent Pointer – É usado para identificar um bloco de dados urgentes dentro do segmento TCP. • Opções – Esse campo é usado para TCP negociar, com o TCP na outra ponta da conexão, o tamanho máximo do segmento (MSS). • O receptor usa este campo para informar o tamanho máximo do seu buffer. • Se não usar essa opção, o tamanho do segmento pode variar até o tamanho máximo (64 kbytes). • Padding – Para garantir que o tamanho do cabeçalho do segmento é múltiplo de 32 bits. Camada de Transporte 10/10/01 22 Gerenciamento de Conexão TCP • O TCP é um protocolo dirigido por estados (state-driven). • Portanto, as operações seguem as regras descritas por um diagrama de estados; • Cada sessão de usuário que usa o protocolo TCP é gerenciada por um diagrama de estado (instância de TCP). Camada de Transporte 10/10/01 23 Estabelecimento de uma conexão TCP (Open) Exemplo: 1. O usuário TCP A envia uma primitiva active-open ao TCP; 2. O usuário remoto B envia uma primitiva passive-open ao TCP; 3. Active-open faz com que TCP prepare um segmento com o bit SYN em 1. O segmento é enviado ao TCP B (No exemplo, envia SYN SEQ 100, onde 100 é usado como número de seqüência inicial); 4. Ao receber o SYN, TCP B retorna um ACK (seqüência de numero 101) e também um SEQ (no exemplo, SEQ 177); 5. Ao receber este segmento, TCP B responde um ACK com SEQ (178); 6. e 7. Uma vez ocorrido os eventos 3, 4 e 5 (denominado Three Way Handshake), os dois módulos TCP devolvem o resultado dos respectivos opens aos usuários. Camada de Transporte 10/10/01 24 Estabelecimento de uma conexão TCP (Open) Exemplo: Camada de Transporte 10/10/01 25 Estabelecimento de uma conexão TCP (Open) Exemplo: Operação simultânea de opens Camada de Transporte 10/10/01 26 Término de uma conexão TCP • Dois programas que utilizam TCP podem terminar a conversação elegantemente (graceful close) utilizando a operação CLOSE. • Neste caso, TCP utiliza também um mecanismo de three-way handshake para encerrar a conexão. • Vale lembrar que a conexão TCP é full-duplex e pode conter dois streams independentes sendo transferidos um em cada direção. • Uma vez encerrada a conexão em uma direção, o TCP não aceita mais dados daquela direção. • Entretanto, os dados podem continuar fluindo na direção oposta até que ao emissor encerre a conexão utilizando procedimento análogo ao de estabelecimento de conexão. Camada de Transporte 10/10/01 27 Término de uma conexão TCP Exemplo: 1. Usuário TCP A deseja terminar uma conexão com o usuário TCP B. Envia a primitiva Close ao B; 2. Como efeito dessa primitiva, o módulo TCP A envia um segmento com bit FIN em 1. O número de seqüência 151 da figura representa a próxima seqüência de dados que estará sendo enviada para o usuário B; 3. O TCP B reconhece FIN SEQ 151. No seu segmento tem SEQ=188 (representando a última seqüência reconhecida pelo módulo A) e ACK=152; 4. Como efeito de 3, TCP B envia uma primitiva Closing A ao usuário B; 5. Nesse exemplo, o usuário B reconhece e executa Close ao A; 6. Como efeito, o módulo TCP B envia um segmento com o bit FIN em 1, SEQ=188 e ACK=152. 7. O módulo TCP A reconhece o segmento final com ACK=189; 8. e 9. Como resultado dessas operações, os sinais de término de conexão são enviados aos usuários. Camada de Transporte 10/10/01 28 Camada de Transporte Término de uma conexão TCP Exemplo: • Término de uma conexão TCP 10/10/01 29 Camada de Transporte 4.7 - Técnica usada para garantir entrega confiável • Utiliza-se a técnica denominada reconhecimento positivo com retransmissão. • Essa técnica exige que o receptor envie uma mensagem de reconhecimento ao remetente sempre que recebe um dado. • • O remetente mantém um registro de cada pacote que ele envia e espera por um reconhecimento antes de enviar o próximo pacote. • O remetente inicia também um temporizador ao mandar um pacote e retransmite o pacote se ocorrer o “time-out” antes da chegada do reconhecimento. • • Outro problema de confiabilidade consiste na duplicação de pacotes. • A duplicação pode ser provocada pelas camadas inferiores ou quando a rede introduz um grande atraso provocando uma retransmissão. • Tanto pacotes como reconhecimentos podem ser duplicados. • Tanto pacotes como reconhecimentos podem ser duplicados. • Normalmente, protocolos confiáveis detectam pacotes duplicados assinalando cada pacote com um número de seqüência. • Os protocolos de reconhecimento positivo enviam também números de seqüência de volta nos reconhecimentos, de forma que o receptor possa associar reconhecimentos com os pacotes. 10/10/01 30 Camada de Transporte 4.8- Sliding window • Um protocolo de reconhecimento positivo simples desperdiça a capacidade da rede porque ele deve esperar pelo reconhecimento do pacote anterior antes de enviar o prôximo. • A técnica de sliding window consiste em transmitir múltiplos pacotes antes de esperar por um reconhecimento. • O protocolo coloca uma janela na sequência de pacotes a serem transmitidos e transmite todos os pacotes que estão dentro da janela. • Por exemplo, num protocolo de sliding window com janela de tamanho 8, o remetente pode enviar 8 pacotes antes de receber um reconhecimento. • Quando o remetente receber um reconhecimento para o primeiro pacote dentro da janela, ele “desliza” a janela e envia o próximo pacote. • A janela desliza a medida que os reconhecimentos são recebidos. • O protocolo de sliding window sempre lembra quais pacotes foram reconhecidos e mantém um timer separado, para cada pacote não reconhecido. • No lado do receptor, o software de protocolo mantém urna janela análoga. aceitando e reconhecendo pacotes a medida que chegam. 10/10/01 31 Camada de Transporte 10/10/01 32 Sliding Window do TCP • O Sliding Window do TCP opera a nível de bytes, e não a nível de segmentos ou de pacotes. • Os bytes de um stream são numerados seqüencialmente. • O remetente (e o destinatário) mantém 3 ponteiros associados com cada conexão. • Os ponteiros definem o Sliding Window. Conceitos Gerais 10/10/01 33 Camada de Transporte Janela de Tamanho Variável e Controle de Fluxo • TCP permite que o tamanho da janela varie com o tempo. • Cada reconhecimento, que especifica quantos bytes foram recebidos, contém um “aviso” (no campo Windows) que especifica quantos bytes adicionais o receptor está preparado para receber. • Esse aviso pode significar o tamanho atual do buffer do receptor. • Em resposta a um aviso de aumento de tamanho do buffer, o remetente aumenta o tamanho do seu sliding window. • Em resposta a um aviso de diminuição do tamanho do buffer, o remetente diminui o tamanho do seu sliding window. Isto é, deixa de deslizar a janela. • No extremo caso, o remetente pode receber um aviso com tamanho zero. Isto faz para a transmissão. • A vantagem de usar janela variável consiste no fato de fornecer fluxo de controle junto com uma transferência confiável. 10/10/01 34 Camada de Transporte Janela de Tamanho Variável e Controle de Fluxo • Exemplo de uma atualização de janela. 10/10/01 35 Camada de Transporte 4.9- RECONHECIMENTOS E RETRANSMISSÕES • Como TCP envia dados em segmentos de comprimentos variáveis, os reconhecimentos não podem referenciar número de datagramas ou de segmentos. • Em vez disso, os números referem a posição de byte dentro do stream. • O receptor acumula bytes desde o início do stream. • Os reconhecimentos sempre especificam o número de seqüência do próximo byte que o receptor espera receber da fonte. • O esquema de reconhecimento do TCP é denominado de reconhecimento acumulativo. 10/10/01 36 Camada de Transporte 10/10/01 37 Camada de Transporte 4.10- TIME- OUT E RETRANSMISSÃO • A escolha de um valor para o temporizador de retransmissão é complexa. • Num ambiente internet, um segmento pode atravessar diversas redes de capacidades diferentes, através de múltiplos gateways com atrasos que variam conforme o tráfego. • Os segmentos enviados pelo transmissor podem se perder, invalidando qualquer estimativa de atraso. • Os reconhecimentos enviados pelo receptor também podem se perder, invalidadando também as estimativas de atraso. • O software TCP acomoda essa variação dos atrasos usando algoritmo de retransmissão adaptiva. • TCP monitora o desempenho de cada conexão e calcula valores razoáveis para timeouts. • TCP registra o tempo decorrido entre o envio de cada segmento e o recebimento do seu ACK (RTT – Round Trip Time). 10/10/01 38 Camada de Transporte • Sempre que TCP obtém um novo RTT, ele ajusta o seu RTT médio para essa conexão, usando a seguinte fórmula: RTTmédio = (a . RTTanterior) + ((1 – a) . RTTnovo) Onde: 0 ≤≤≤≤ a <<<< 1 Se a > 1, RTT fica imune as grandes variações de delay Se a > 0, RTT responde rapidamente as variações de delay. • Ao enviar um pacote, TCP calcula o valor de timeout em função de RTT. • Nas implementações originais, usava-se a fórmula: Timeout = b . RTT onde b > 1 • Para detectar perda de pacotes rapidamente, b > 1. - Otimiza througput – não espera desnecessariamente para retransmitir. - Causa retransmissão desnecessária, congestionando a rede. - A especificação original recomendava b = 2. 10/10/01 39 Camada de Transporte 4.11- AMOSTRAGEM DE RTT • A complicação da amostragem surge quando o temporizador chega ao fim e o TCP envia o segmento novamente num segundo datagtrama. • Como os dois datagramas carregam exatamente o mesmo dado, a origem não tem meios de saber se o ACK corresponde ao datagrama original ou ao datagrama retransmitido. • Se associar o reconhecimento com a transmissão original, o valor de RTT estimado pode crescer à cada retransmissão. • Se associar o reconhecimento com a mais recente retransmissão pode ocorrer o contrário, isto é, o novo RTT será menor que o anterior e as retransmissões podem ocorrer antes da chegada normal de um ACK. ALGORITMO DE KARN’S • TCP não atualiza o RTT quando existe retransmissão. • Atualiza RTT apenas nos casos de ACKs de segmentos transmitidos apenas uma vez. • Se o temporizador chega ao fim e causa uma retransmissão, TCP aumenta o valor de timeout. Por exemplo: Timeout novo = c * timeout C típico = 2 • Quando um ACK chega antes de time-out, TCP calcula o novo RTT e utiliza para o cálculo de novo time-out. en
Compartilhar