46
EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE Objetivos: No Capítulo 4, vimos três tipos principais de endereços IP (Classes A, B e C) Neste capítulo examinaremos algumas técnicas que permitem que um site utilize um único endereço de rede IP para múltiplas redes físicas. Revisão: Os endereços IP são dividos em duas partes (NetID e HostID). Isto é extremamente importante para o roteamento. Endereços Classe A possuem 8 bits para o NetID e 24 para o HostID. Endereços Classe B possuem 16 bits para cada. Endereços Classe C possuem 24 bits para o NetID e 8 para o HostID.

EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Embed Size (px)

Citation preview

Page 1: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

EXTENSÕES DE ENDEREÇO DA

SUB-REDE E DA SUPER-REDE

Objetivos: No Capítulo 4, vimos três tipos principais de endereços IP

(Classes A, B e C)

Neste capítulo examinaremos algumas técnicas que permitem

que um site utilize um único endereço de rede IP para múltiplas

redes físicas.

Revisão: Os endereços IP são dividos em duas partes (NetID e HostID).

Isto é extremamente importante para o roteamento.

Endereços Classe A possuem 8 bits para o NetID e 24 para o

HostID. Endereços Classe B possuem 16 bits para cada.

Endereços Classe C possuem 24 bits para o NetID e 8 para o

HostID.

Page 2: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Extensões de Endereço da

Sub-Rede e da Super-Rede • Os sites individuais podem modificar os

endereços e as rotas, desde que: – Estas mudanças permaneçam invisíveis para os outros sites.

– Todos os hosts e roteadores do site concordem em reconhecer o

esquema de endereçamento dele.

• Estes esquemas especiais de endereçamento

tornaram-se importantes por causa do crescimento

da Internet, acima do esperado pelos projetistas do

TCP/IP.

• Como reduzir o número de endereços de rede

atribuídos sem destruir o esquema de

endereçamento original?

Page 3: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Redução dos Números da Rede

• Uma idéia simples seria utilizar endereços classe

C em lugar de endereços classe B.

• Problemas:

– As informações de roteamento devem ser alteradas em

todas a máquinas que estão conectadas às redes

envolvidas.

– Como fazer com os endereços classe C?

• Para reduzir os endereços de rede, o mesmo

prefixo do endereço IP deve ser compartilhado por

múltiplas redes físicas.

• A técnica mais utilizada, que se tornou padrão, é a

sub-rede IP

Page 4: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Endereçamento da Sub-Rede

• O modo mais fácil de entender o endereçamento

de sub-rede é imaginar que um site tenha um

endereço classe B atribuído a ele, mas tenha que

tenha duas ou mais redes físicas.

• Somente os roteadores locais sabem da existência

de múltiplas redes físicas.

• Os roteadores dos outros sites roteiam todo o

tráfego como se houvesse uma única rede física.

Page 5: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Endereçamento da Sub-Rede

Page 6: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• Conceitualmente, a inserção de sub-redes altera

ligeiramente a interpretação dos endereços IP:

• Em vez de se ter um prefixo de rede e

um sufixo de host, tem-se uma parte da

rede e uma parte local.

• A interpretação da parte da rede permanece

inalterada.

• A interpretação da parte local fica a cargo do site.

Endereçamento da Sub-Rede

Page 7: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• Isto nos dá um endereçamento hierárquico que nos

leva a um roteamento hierárquico, similar ao que

acontece no sistema telefônico.

Endereçamento da Sub-Rede

Page 8: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Flexibilidade na Atribuição de

Endereços da Sub-Rede

Page 9: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• O padrão especifica que um site que utiliza o

endereçamento de sub-rede deve escolher uma

máscara de sub-rede de 32 bits para cada rede.

• O bits da máscara são definidos como 1, caso

sejam tratados com parte do endereço da rede.

• O bits da máscara são definidos como 0, caso

sejam tratados com parte do endereço do host.

• Exemplo:

11111111 11111111 11111111 00000000

• Esta máscara especifica que os 3 primeiros octectos

identificam a rede e o quarto octecto identifica um host

nesta rede.

Implementação de Sub-Redes

com Máscaras

Page 10: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• O algoritmo de roteamento padrão deve ser alterado

para funcionar com os endereços de sub-rede.

• O algoritmo de roteamento continua baseando-se em

tabelas de rotas para tomar suas decisões.

• Entretanto, em vez de ter-se entradas do tipo: (endereço da rede, endereço do próximo passo da rota)

teremos: (máscara da sub-rede, endereço da rede, endereço do próximo passo da rota)

• O algoritmo executa um “and” bit a bit entre o

endereço IP de destino e a máscara e compara o

resultado com o endereço da rede, para decidir ou

não pelo roteamento por aquela entrada.

Roteamento na Presença de

Sub-Redes

Page 11: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Algoritmo de Roteamento

Modificado

Page 12: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• Observe que este algoritmo não trata explicitamente

das exceções como roteamento para host específico

e rotas default.

• Contudo eles podem ser simulados usando máscaras

apropriadas: – Usa-se uma máscara com todos bits iguais a 1, juntamente com o

endereço IP do host para mapear para um host específico

– Usa-se uma máscara com todos bits iguais a 0, juntamente com um

endereço de rede com todos os bits 0 para mapear uma rota default.

• Além disso, as máscaras podem direcionar as rotas

para as redes convencionais. – Exemplo: Redes classe B, usam máscaras com os dois primeiros

octetos compostos de bits 1 e os outros dois de bits zero.

Algoritmo de Roteamento

Modificado

Page 13: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• Objetivos:

–Em vez de utilizar um único endereço IP de rede

para múltiplas redes físicas em determinada

organização, a divisão de super-rede permite o

uso de muitos endereços IP de rede para uma

única organização.

– Isto se faz necessário em organizações onde

endereços classe C são insuficientes e endereços

classe B são mais do que o necessário. Por

exemplo: Num Fornecedor de Serviços de Rede.

Endereçamento de Super-Rede

Page 14: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• Uma técnica conhecida como CIDR (ClassLess

Inter-Domain Routing) resolve este problema.

• Ela utiliza uma única entrada para representar o

bloco de endereços, representada pelo par:

(endereço da rede, contagem)

• Exemplo: A entrada (192.5.48.0, 3) especifica os

endereços 192.5.48.0, 192.5.49.0 e 192.5.50.0

• Na prática, o CIDR utiliza máscara de bits que

representa o campo contagem como uma potência de

dois.

Endereçamento de Super-Rede

Page 15: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

• Máscara:

11111111 11111111 11111000 00000000

Notação Decimal com Ponto: 255.255.248.0

Endereçamento de Super-Rede

Page 16: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

USER DATAGRAM PROTOCOL

UDP: Protocolo utiliza para distinguir para qual usuário

ou aplicativo deve ser encaminhado um datagrama

destinado a uma máquina que esteja executando mais

de um processo.

Problemas:

Os processos são criados e destruídos dinâmicamente e os

transmissores raramente sabem o bastante para identificar um

processo de uma outra máquina.

Deseja-se substituir os processos (no caso de uma

reinicialização da máquina) sem informar a todos os

transmissores.

Como permitir que um transmissor entre em contato com um

servidor (de arquivos, por exemplo) sem saber qual processo na

máquina de destino.

Page 17: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

User Datagram Protocol

• Solução:

• Portas de protocolo: São pontos de destino abstratos,

identificadas por um número inteiro positivo.

• Elas utilizam “buffer”, que modo que os dados que

chegarem antes que um processo esteja pronto para

aceitá-los não sejam perdidos. Os buffers são

implementados como filas.

• Para comunicar-se com uma porta exterior, um

transmissor precisa conhecer tanto o endereço IP como

o número da porta na máquina de destino.

• Além da porta de destino, uma mensagem UDP deve ter

também a informação sobre a porta de origem para

onde as respostas deverão ser endereçadas.

Page 18: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

User Datagram Protocol

• Assim como o IP, o UDP oferece um serviço não-confiável

de transmissão sem conexão.

• Desta forma, fica a cargo do aplicativo resolver o problema

da confiabilidade, como perda de mensagens, duplicação,

retardo, transmissão defeituosa e perda de conectividade.

• Formato de mensagens UDP:

• O campo Comprimento contém o número de octetos na mensagem UDP

• O campo Soma de Verificação é opcional, pois evita overhead em redes de alta confiabilidade.

Page 19: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

User Datagram Protocol

• Pseudocabeçalho UDP

• Tem como finalidade verificar se a mensagem UDP

atingiu o seu destino correto.

• O destino correto consiste em uma máquina específica e

uma porta específica dentro desta máquina.

• O pseudocabeçalho não é transmitido junto como a

mensagem UDP, mas a soma de verificação o abrange.

• No destino final, o pseudocabeçalho é remontado a

partir do datagrama IP

Page 20: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

User Datagram Protocol

• Encapsulamento UDP

• Colocação conceitual em camadas

Page 21: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

User Datagram Protocol

• Contradição entre organização em camadas e o cálculo da

soma de verificação UDP.

• Multiplexação: O software UDP aceita mensagens de

muitos programas aplicativos e os passa ao IP.

• Demultiplexação: E aceita mensagens UDP recebida de IP

e as passa ao programa aplicativo apropriado.

• Quando o UDP recebe uma mensagem, verifica se o

número da porta de destino confere com uma das portas

atualmente em uso. Se não houver correspondência, a

mensagem é descartada e uma mensagem de erro é

enviada. Caso contrário, o UDP enfileira a mensagem na

porta apropriada. Se não houver espaço na fila, a

mensagem é descartada e uma mensagem de erro é gerada.

Page 22: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

User Datagram Protocol

Page 23: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

User Datagram Protocol

• Como deverão ser atribuídos números de porta de

protocolo?

1. Uso de autoridade central que atribua números de

portas de acordo com a necessidade e publique a lista.

2. Atribuição dinâmica: Sempre que um programa

necessita de uma porta, o software de rede atribui uma.

Para saber que número de porta a máquina de destino

está usando, o emissor enviar uma mensagem

perguntando: “que porta o serviço X está usando?”

• O TCP/IP usa uma abordagem híbrida. Algumas portas são

atribúidas a priori e outras são deixadas a cargo dos

aplicativos.

Page 24: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

UDP: PROGRAMAÇÃO SOCKET

Interação Cliente/Servidor usando UDP:

Servidor Cliente

Cria Socket:

socketServidor =

DatagramSocket()

Lê mensagem de

socketServidor

Escreve resposta

em socketServidor

Cria Socket:

socketCliente =

DatagramSocket()

Cria endereço: host, porta de

origem. Envia mensagem

em socketCliente

Lê resposta de socketCliente

Fecha socketCliente

Page 25: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

PROGRAMAÇÃO SOCKET COM UDP:

EXEMPLO USANDO JAVA import java.io.*;

import java.net.*;

public class ClienteUDP {

public static void main(String argv[]) throws Exception

{

int porta;

byte[] dadosEnviados;

byte[] dadosRecebidos = new byte[1024];

String frase = null;

String fraseModificada = null;

//argv[1] contem o numero da porta do servidor no host

porta = (new Integer(argv[1])).intValue();

//Cria Stream de entrada. Redireciona entrada do teclado

BufferedReader entradaDoUsuario =

new BufferedReader(new InputStreamReader(System.in));

//Cria socket cliente

DatagramSocket socketCliente = new DatagramSocket();

//Localiza o host especificado na linha de comando.

//A classe InetAddress contem as informacoes de end. IP do host

InetAddress enderecoIP = InetAddress.getByName(argv[0]);

Page 26: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

PROGRAMAÇÃO SOCKET COM UDP:

EXEMPLO USANDO JAVA //Le frase do teclado

frase = entradaDoUsuario.readLine();

dadosEnviados = frase.getBytes();

//Cria datagrama de envio. Em JAVA, a classe DatagramPacket e' usada para

//conter as informacoes do datagrama. Estas informacoes sao: array de

//bytes (dadosEnviados), comprimento do array, endereco IP do destino,

//porta UDP do destino.

DatagramPacket datagramaEnviado =

new DatagramPacket(dadosEnviados, dadosEnviados.length, enderecoIP, porta);

//Envia datagrama para servidor

socketCliente.send(datagramaEnviado);

//Espera resposta do servidor

//Cria datagrama para receber mensagem do servidor

DatagramPacket datagramaRecebido =

new DatagramPacket(dadosRecebidos, dadosRecebidos.length);

//Recebe datagrama do servidor

socketCliente.receive(datagramaRecebido);

//Imprime resultado

fraseModificada = new String(datagramaRecebido.getData());

System.out.println(enderecoIP.getHostName() + " : " + fraseModificada);

//Fecha socket

socketCliente.close();}}

Page 27: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

PROGRAMAÇÃO SOCKET COM UDP:

EXEMPLO USANDO JAVA import java.io.*;

import java.net.*;

import java.util.*;

public class ServidorUDP {

public static void main(String argv[]) throws Exception

{

byte[] dadosEnviados;

byte[] dadosRecebidos = new byte[1024];

String frase, fraseModificada;

InetAddress enderecoIPDoCliente;

int portaDoCliente;

//Cria socket UDP na porta 6789

DatagramSocket socketServidor = new DatagramSocket(6789);

while(true)

{

//Cria datagrama para receber mensagem do cliente

DatagramPacket datagramaRecebido =

new DatagramPacket(dadosRecebidos, dadosRecebidos.length);

//Recebe datagrama

socketServidor.receive(datagramaRecebido);

Page 28: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

PROGRAMAÇÃO SOCKET COM UDP:

EXEMPLO USANDO JAVA //O servidor deve obter o endereco IP do cliente e a porta UDP de origem.

//Isto se deve ao fato do protocolo UDP ser sem conexao, ou seja, cada pacote

//enviado deve conter o endereco do destino.

enderecoIPDoCliente = datagramaRecebido.getAddress();

portaDoCliente = datagramaRecebido.getPort();

//Executa o processamento. Neste caso, converte a frase para letras maiusculas

frase = new String(datagramaRecebido.getData());

System.out.println(enderecoIPDoCliente.getHostName() + " : " + frase);

fraseModificada = frase.toUpperCase();

//Prepara resposta para ser enviada ao cliente

//Converte String para byte[]

dadosEnviados = fraseModificada.getBytes();

//Cria datagrama para enviar a resposta ao cliente

DatagramPacket datagrama = new DatagramPacket(dadosEnviados, dadosEnviados.length,

enderecoIPDoCliente, portaDoCliente);

//Envia resposta para o cliente

socketServidor.send(datagrama);

//Para assegurar que nenhuma parte da mensagem anterior continue presente,

// preencha o buffer de dados recebidos com 0.

Arrays.fill(dadosRecebidos, (byte)0);

//Fim do loop while. Volta para o inicio e espera por outro datagrama

//Note que nao ha a necessidade de fechar um "socket de conexao". Porque ?

}

}

}

Page 29: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

PROGRAMAÇÃO SOCKET COM UDP:

EXEMPLO USANDO JAVA //O servidor deve obter o endereco IP do cliente e a porta UDP de origem.

//Isto se deve ao fato do protocolo UDP ser sem conexao, ou seja, cada pacote

//enviado deve conter o endereco do destino.

enderecoIPDoCliente = datagramaRecebido.getAddress();

portaDoCliente = datagramaRecebido.getPort();

//Executa o processamento. Neste caso, converte a frase para letras maiusculas

frase = new String(datagramaRecebido.getData());

System.out.println(enderecoIPDoCliente.getHostName() + " : " + frase);

fraseModificada = frase.toUpperCase();

//Prepara resposta para ser enviada ao cliente

//Converte String para byte[]

dadosEnviados = fraseModificada.getBytes();

//Cria datagrama para enviar a resposta ao cliente

DatagramPacket datagrama = new DatagramPacket(dadosEnviados, dadosEnviados.length,

enderecoIPDoCliente, portaDoCliente);

//Envia resposta para o cliente

socketServidor.send(datagrama);

//Para assegurar que nenhuma parte da mensagem anterior continue presente,

// preencha o buffer de dados recebidos com 0.

Arrays.fill(dadosRecebidos, (byte)0);

//Fim do loop while. Volta para o inicio e espera por outro datagrama

//Note que nao ha a necessidade de fechar um "socket de conexao". Porque ?

}

}

}

Page 30: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

PROGRAMAÇÃO SOCKET COM UDP

Resumo dos métodos utilizados:

Class DatagramSocket

void close() : Fecha o socket UDP.

void connect(InetAddress address, int port) : Conecta o socket a um endereço remoto.

void disconnect() : Desconecta o socket.

InetAddress getInetAddress() : Retorna o endereço ao qual este socket esta conectado.

InetAddress getLocalAddress() : Obtém o endereço local, ao qual o socket esta associado.

int getLocalPort() : Retorna o número da porta ‘a qual o socket esta associado.

int getPort() : Retorna a porta remota deste socket.

void receive(DatagramPacket p) : Recebe um datagrama.

void send(DatagramPacket p) : Envia um datagrama.

voidsetSoTimeout(int timeout) : Habilita/Desabilita SO_TIMEOUT, para o tempo timeout, em

milisegundos. Este é o máximo tempo que o método receive irá esperar por datagrama.

Page 31: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

SERVIÇO CONFIÁVEL DE TRANSPORTE

TCP (TRANSMISSION CONTROL PROTOCOL)

Motivação

Em um nível mais baixo, as redes de comunicação

fornecem uma entrega de pacotes não-confiável.

Em um nível mais alto, os aplicativos frequentemente

precisam enviar grandes volumes de dados.

A utilização de um serviço de transmissão sem conexão e

não-confiável (como o UDP) torna-se tediosa e irritante a

tarefa de programar aplicativos.

O TCP constitui um protocolo de transmissão (confiável)

do qual todos os aplicativos podem fazer uso.

Page 32: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Características:

– Orientação do Stream:

– O serviço de transmissão de streams da máquina de destino recebe

exatamente a mesma sequencia de octetos que o trasmissor passa

para ele.

– Conexão de Circuito Virtual:

– Fazer uma transferência de stream de dados equivale a fazer uma

chamada telefônica.

– Transmissão Bufferizada:

– O protocolo agrupa ou divide o stream de dados para garantir uma

transferência mais eficaz.

Page 33: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Características:

– Stream Desestruturado:

– O serviço de stream TCP/IP não reconhece os streams de dados

estruturados pelos aplicativos.

– Conexão Full Duplex :

– As conexões fornecidas pelo TC/IP permitem transferência em

ambas direções.

– Utiliza “piggyback” (carona) para confirmações dos dados, reduzin-

do o tráfego na rede.

Page 34: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Oferecendo Confiabilidade:

– Pergunta: Como um protocolo pode oferecer uma

transferência confiável se o sistema básico de comunicação

proporciona apenas transmissão de pacotes não-confiável?

– Resposta: Confirmação positiva com retransmissão.

Page 35: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Oferecendo Confiabilidade: – A figura abaixo mostra o que acontece quando um pacote é perdido ou

destruído.

– Outro problema que deve ser considerado é a duplicação de pacotes, que

ocorre quando um ACK é perdido ou uma retransmissão prematura é

feita devido a atrasos na rede. (Solução: Uso de números de sequência.)

Page 36: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• As Janelas Deslizantes: – Os protocolos de janela deslizante permitem que o transmissor transmita

pacotes múltiplos antes de esperar uma confirmação.

Page 37: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• As Janelas Deslizantes: – Exemplo de três pacotes transmitidos com um protocolo de janela

deslizante. O conceito principal é que o transmissor pode transmitir todos

os pacotes da janela, sem aguardar uma confirmação.

Page 38: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Portas, Conexões e Pontos Terminais: – Assim como o UDP, o TCP se encontra na camada acima do IP (como

pode ser visto na figura abaixo) e usa o conceito de portas de protocolo

para identifica o destino final numa máquina.

Page 39: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Portas, Conexões e Pontos Terminais: – O TCP utiliza a conexão, e não a porta de protocolo, como sua abstração

principal. As conexões são identificadas por um par de pontos terminais.

– Um ponto terminal é um par de números inteiros (host, porta), onde host

é o endereço IP para um host, e porta é uma porta TCP naquele host.

– Exemplos:

– Conexão da máquina (18.26.0.36) em Massachusetts com a máquina

(128.10.2.3) em Purdue:

(18.26.0.36, 1069) e (128.10.2.3, 25)

– Conexão da máquina (128.9.0.32) em Seattle com a mesma máquina

em Purdue:

(128.9.0.32, 1184) e (128.10.2.3, 53)

– Conexão da máquina (128.2.254.139) no CMU com a máquina em

Purdue:

(128.2.254.139, 1184) e (128.10.2.3, 53)

Page 40: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

Outras características: 1. O TCP considera o stream de

dados uma sequência de octetos

que ele divide em segmentos

para a transmissão.

2. Ele utiliza janelas deslizantes

tanto para obter uma transmissão

eficaz quanto para fazer o

controle de fluxo.

3. O mecanismo de janela deslizantes

opera em nível de octetos e não de

segmentos. O transmissor mantém

três ponteiros associados a janela

deslizante de cada conexão.

4. O tamanho da janela pode variar

com o passar do tempo devido ao

controle de fluxo e ao controle de

congestionamento.

Page 41: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Formato do Segmento TCP:

• CODE BITS: Informa a finalidade e o conteúdo do segmento (confirmação, dados,

estabelecimento ou encerramento de conexão)

• WINDOW: Informa quantos dados está esperando receber.

• URGENT POINTER: Usado, por exemplo, quando o usuário deseja abortar ou

interromper um programa.

Page 42: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Reação ao Congestionamento:

• Congestionamento: É uma condição de retardo longo causado por

sobrecarga de datagramas em um ou mais pontos de comutação.

• Numa situação de congestionamento os protocolos, normalmente,

detectariam o retardo e fariam a retransmissão dos datagramas,

aumentando ainda mais o congestionamente, até que a rede se tornasse

inútil, causando o colapso de congestionamento.

• O TCP utiliza duas técnicas para controle de congestionamento:

• Slow Start (Início lento): Inicia a janela de transmissão no tamanho

de um segmento e aumenta em um a cada confirmação que chega.

• Multiplicative Decrease (Redução Multiplicável): Reduz a janela de

transmissão pela metade, quando ocorre a perda de um segmento.

Page 43: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Estabelecendo uma conexão: • O TCP utiliza um handshake de três vias, como pode ser visto na figura

abaixo:

Page 44: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Serviço Confiável de Transporte

TCP (Transmission Control Protocol)

• Encerrando uma conexão: • O TCP utiliza um handshake de três vias modificado, como pode ser

visto na figura abaixo:

Page 45: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Síndrome da Janela Desnecessária

As implementações TCP anteriores apresentavam

um problema conhecido como síndrome de

janela desnecessária, na qual cada confirmação

informa que uma pequena área disponível em

cada segmento transporta uma pequena

quantidade de dados.

Page 46: EXTENSÕES DE ENDEREÇO DA SUB-REDE E DA SUPER-REDE · • Assim como o IP, o UDP oferece um serviço não-confiável de transmissão sem conexão. • Desta forma, fica a cargo do

Evitando a Janela Desnecessária

No receptor:

• Antes de enviar uma informação atualizada de janela, depois de

informar uma janela zero, espere até que o espaço disponível

seja no mínimo 50% do tamanho total do buffer, ou igual ao

tamanho máximo de um segmento.

No transmissor:

• Quando um aplicativo gera dados adicionais a serem enviados

através de uma conexão para a qual os dados anteriores foram

transmitidos, mas não confirmados, coloque os novos dados em

um buffer como sempre, mas não envie segmentos até que haja

dados suficientes para preencher um segmento de tamanho

máximo.