Arquitetura TCP/IP Aplicação Transporte Rede Enlace Física Camada de Transporte ● ● ● ● Fornece serviço diretamente aos processos Não é implementada em roteadores Fornece meio de transporte lógico Processos em hosts diferentes utilizam conexão lógica da camada de transporte ● PDU da camada é o Segmento Camada de Transporte ● Camada de Rede identifica o host ● Camada de transporte identifica o processo ou usuário do host ● Permite que diversos aplicativos enviem dados a partir de um único host ● Sistemas Operacionais são multi-tarefas Camada de Transporte Camada de Transporte ● Multiplexação ○ ○ Reunir dados provinientes de diferentes processos de aplicação Transmissor ● Demultiplexação ○ ○ Entrega dos segmentos para a aplicação Receptor ● Utiliza números de porta e endereço IP ● Exemplo Camada de Transporte ● Arquitetura TCP/IP basicamente 2 protocolos ○ ○ TCP UDP UDP ● User Datagrama Protocol ● Serviço não confiável ○ ○ Segmentos podem não chegar Segmentos podem chegar fora de ordem ● Não orientado a conexão ○ ○ Cada segmento tratado independente Não há apresentação entre o transmissor e o receptor UDP ● Protocolo simples ● Mínimas funções da camada de transporte ● Basicamente detecção de erro e entrega os dados para o processo correto ● Aplicação fala quase diretamente o IP ● Pouco acrescenta a camada de rede ● Então porque utilizar? UDP ● Entrega de forma mais rápida, sem estabelecimento de sessão ● Sem controle de congestionamento ● Sem estado de conexão ● Cabeçalho pequeno UDP ● Estrutura do segmento UDP ● Estrutura do segmento ○ Source port ■ Porta de origem da aplicação ○ Destination Port ■ Porta de destino da aplicação ○ UDP length ■ Tamanho total do segmento em bytes ○ UDP checksum ■ Campo opcional ■ Complemento de 1 da soma de todas as palavras UDP ● Utilização ○ ○ ○ ○ Aplicações cliente x servidor Um consulta para uma resposta Aplicações de mídia Aplicações tolerantes a falha TCP ● Transmission Control protocol ● Serviço confiável ○ Garante que os dados serão entregues na forma que foram enviados ● Orientado a conexão ○ Conexões nos sistemas finais ● Controle de fluxo ○ Transmissor não esgota a capacidade do receptor TCP ● Controle de congestionamento ○ Transmissor não esgota recursos da rede ● Gerencia timers ○ Necessita de timers para executar o trabalho ● Mais complexo que o UDP ● Principal protocolo ● Utilizado pela maioria das aplicações TCP ● Recebe fluxo da aplicação e divide em partes ○ Com frequência, temos 1460 para que ele possa caber em um quadro ethernet ● Camada de rede aceita cada parte como um segmento distinto ● Destino restaura o fluxo original TCP ● Destino retorna um segmento com número de confirmação com o número da próxima sequência a receber ● Se expirar o timer, o segmento será retransmitido TCP ● Serviço TCP utiliza o conceito de socket ○ ○ Endereço IP + Número da porta Portas abaixo de 1024 - Portas bem conhecidas ● O serviço TCP necessita estabelecimento de sessão ● Fluxo ○ ○ ○ Estabelecimento de sessão Transferência de dados Término da conexão TCP ● Conexões são identificadas por socket ○ ○ ○ ○ Endereço IP de origem Porta de origem Endereço IP de destino Porta de destino ● Conexões são full-duplex ● Analogia ao endereço de um edifício TCP ● Segmento TCP ● Source Port (16 bits) ○ Porta de origem ● Destination Port (16 bits) ○ Porta de destino ● Sequence number (32 bits) ○ Identifica a posição no fluxo de bytes do segmento enviado pelo transmissor. ● Acknowledgement number (32 bits) ○ Confirmação de recebimento TCP ● TCP header length (4 bits) ○ Quantas palavras de 32 bits existem no cabeçalho ● Flags 1 bit: URG, ACK, PSH, RST, SYN e FIN TCP ● URG ○ Indica o deslocamento para dados urgentes ● ACK ○ Indica se contém confirmação ● PSH ○ ○ Informa para não retardar a conexão Pouco utilizado ● RST, SYN e FIN ○ ○ Gerenciamento de conexão Veremos com mais detalhes TCP ● Windows size (16 bits) ○ Controle de fluxo ● Checksum (16 bits) ○ Total de verificação ● Options (máximo 40 byts) ○ Opções futuras ● Data ○ Dados transportados TCP ● Transferência confiável ○ ○ ○ Garante que a cadeia de dados que o processo lê de seu buffer ■ Não está corrompida ■ Não tem lacunas ■ Não possui duplicação ■ Está ordenada Exatamente como foi transmitida Campos: Sequence number e Ack number TCP ● Gerenciamento da conexão ○ ○ ○ ○ ○ Gerencia o estabelecimento de conexão entre o transmissor e o receptor Campos: RST,SYN e FIN RST ■ Recusa uma tentativa de conexão SYN ■ Inicia uma conexão FIN ■ Finaliza uma conexão TCP ● Estabelecimento de conexão ○ ○ ○ ○ Passo 1: Cliente inicia conexão com SYN=1 e ack=0 Passo 2: Servidor responde com SYN=1 e ack=1 Passo 3: Cliente responde com SYNC=1 e ack=1 Famoso: 3-way handshake TCP TCP ● Término de conexão ○ ○ ○ ○ Passo 1: host 1 envia FIN ao host 2 Passo 2: host 2 responde FIN para host 1 com ACK Passo 3: host 2 envia FIN ao host 1 Passo 4: host 1 responde FIN para host 2 com ACK TCP TCP ● Controle de fluxo ○ Evitar que o transmissor esgote a capacidade do receptor ○ No estabelecimento de sessão é alocado um buffer de recepção e informado ao par ○ Em toda confirmação é enviado o espaço disponível no buffer (janela) ○ Campos: Windows size ■ Indica quantos bytes podem ser enviados TCP ● Controle de congestionamento ○ ○ ○ ○ Quando a carga oferecida a qualquer rede é maior que a capacidade, tem-se um congestionamento Sintomas: ■ Perda de pacotes ■ Atrasos grandes Pode ser piorado se a camada de transporte retransmite dados Pode causar colapso TCP ● Controle de congestionamento ○ TCP utiliza quantidade de pacotes perdidos como uma medida de congestionamento ○ Reduz a taxa de transmissão quando esse número aumenta ○ A maioria dos timeouts se deve a congestionamento e não por erros de transmissão TCP ● Controle de congestionamento X Controle de fluxo TCP ● Gerenciamento de timers ○ ○ ○ Utiliza um timer de retransmissão Quando um segmento é enviado um timer é ativado Se o segmento for confirmado antes do timer ele será interrompido ○ Se o timer expirar antes, um novo segmento sera retransmitido e um novo timer iniciado ○ Definição baseada no RTT ○ Tempo de viagem de ida e volta ○ Cada conexão mantém um RTT ■ Valor curto ■ Valor longo