Redes
Prof. Edgard Jamhour
email: [email protected]
URL: http://ppgia.pucpr.br/~jamhour
Redes TCP/IP
CONTEÚDO
•
•
•
•
1) Camada de Transporte
2) TCP
3) UDP
3) Camada de Aplicação
2007, Edgard Jamhour
Protocolo do nível de transporte
• Conceito: Os protocolos de transporte são capazes de manipular
múltiplos endereços numa mesma estação, permitindo que várias
aplicações executadas no mesmo computador possam enviar e
receber datagramas independentemente.
Camada de Aplicação
Camada de Transporte
(TCP ou UDP)
cabeçalho
de controle
Dados
Dados
Unidade de dados do
protocolo de transporte
T-PDU
datagrama IP
Camada de Rede
(IP)
Dados
Camada de Enlace de
dados
quadros
representação lógica binária
0001101010101010101010001
A T-PDU é
encapsulad
a no campo
de dados
do
datagrama
IP.
Camada Física
representação elétrica ou óptica
meio físico de transmissão
2007, Edgard Jamhour
Protocolo TCP
• Conceito: Protocolo da camada de transporte que oferece um serviço
de comunicação confiável e orientado a conexão sobre a camada de
rede IP.
• O Protocolo TCP (Transmission Control Protocol) é um protocolo
orientado a conexão destinado a construir comunicações ponto a
ponto confiáveis.
• O protocolo TCP utiliza um nível de endereçamento complementar
aos endereços IP, que permite distinguir vários endereços de
transporte numa mesma estação.
•
• Os endereços de transporte são números inteiros de 16 bits
denominados portas.
2007, Edgard Jamhour
Endereçamento por Portas
O protocolo TCP identifica u ma conexão
pelo par (IP,porta) de ambas as
extremidades. Dessa forma, u ma mes ma
porta pode ser usada para estabelecer
simu ltaneamente duas conexões sem
nenhuma ambiguidade.
A aplicação B se comunica como se
estivesse utilizando uma ligação ponto a
ponto dedicada com cada u ma das outras
aplicações.
Aplicação
B
Aplicação
A
CAMADA DE
APLICAÇÃO
CAMADA
TDP
Porta
53
Porta
1184
4
Porta
25
Porta
53
Aplicação
C
Porta
1184
Porta
1069
CAMADA
IP
CAMADAS
INFERIO RES
128.10.2.3
ESTAÇÃO A
Conexão bid irecional formada pelo
par (128.10.2.3,1184) e
(128.10.2.4,53)
128.10.2.4
128.10.2.5
ESTAÇÃO B
ESTAÇÃO C
Conexão bid irecional formada
pelo par (128.10.2.5,1184) e
(128.10.2.4,53)
2007, Edgard Jamhour
Transmissão Por Fluxo
• O protocolo TCP é implementado no sistema operacional.
• Ele oferce aos desenvolvedores a possibilidade de escrever
aplicações que transmitem e recebem bytes num fluxo contínuo, sem
se preocupar com a fragmentação dos dados em pacotes.
aplicação
aplicação
Fluxo contínuo de
bytes (stream)
socket
Fluxo contínuo de
bytes (stream)
socket
TCP
TCP
segmentos
IP
segmentos
IP
2007, Edgard Jamhour
Segmentação
• O fluxo contínuo de bytes é transformado em segmentos para
posterior encapsulamento no protocolo IP. O tamanho máximo de um
segmento é denominado MSS (Maximum Segment Size).
• O valor default do MSS é geralmente escolhido de forma a evitar a
fragmentação IP (MSS < MTU).
Fluxo Contínuo de Bytes
0
200
0
Dados
SEGMENTO
800
500
200
Dados
SEGMENTO
500
bytes
Dados
SEGMENTO
2007, Edgard Jamhour
TCP = Protocolo Confiável
• O protocolo TCP é um protocolo confiável e orientado a conexão. A
técnica usada pelo TCP é retransmissão por ausência de confirmção.
Um protocolo confiável inclui mensagens
para confirmação de recebimento
Mensagem
Processo
Transmissor
ACK
Processo
Receptor
Mensagem
ACK
Kernel
Kernel
A mensagem é
retransmitida
se não houver
confirmação
REDE
2007, Edgard Jamhour
Segmento TCP
0
4
8
12
Byte 1
16
Byte 2
20
Byte 3
Porta de origem
24
28
31
Byte 4
Porta de destino
Número de Seqüência
Número de Confirmação
HLEN
Reservado
Janela de Recepção
BITS DE CÓDIGO
Ponteiro de Urgência
Checksum
Opções
Dados
…..
FLAGS: URG, ACK, PSH, RST, SYN, FIN
tamanho do cabeçalho
em paravras de 32 bits
2007, Edgard Jamhour
Campos TCP
• Número de Sequência (32 bits)
– Corresponde ao número do primeiro byte do segmento
em relação a fluxo contínuo de bytes da conexão TCP.
– Na prática, o número inicial não é 0, mas sim um
número escolhido de forma aleatória para cada
conexão.
• Essa técnica diminui a possiblidade de que segmentos de uma
conexão antiga já encerrada sejam inseridos em novas
conexões TCP.
• Número de Confirmação (32 bits)
– Número de sequência do próximo byte que o host está
aguardando receber.
2007, Edgard Jamhour
Comunicação Confiável
100 - 149 150 - 179
200 - 209 210 - 299
peer
peer
seq=100, conf=200, dados=50 bytes
seq=200, conf=150, dados=10 bytes
seq=150, conf=210, dados=30
seq=210, conf=180, dados=90 bytes
tempo
tempo
2007, Edgard Jamhour
Estabelecimento de uma Conexão TCP
• Estágio 1: do cliente para o servidor (segmento SYN)
– Define o valor inicial do número de sequência do cliente:
• SEQ = clienteseq
– Flag de controle:
• SYN = 1, ACK = 0
• Estágio 2: do servidor para o cliente (segmento SYNACK)
– Confirma o valor do número de sequência:
• ACK = clienteseq + 1
– Define o valor inicial do número de sequencia do servidor
• SEQ = servidorseq
– Flag de controle:
• SYN = 1, ACK = 1
• Estágio 3: do cliente para o servidor
– Confirma o valor do número de sequência:
• SEQ = servidorseq + 1
• ACK = servidorseq + 1
• SYN = 0, ACK = 1
2007, Edgard Jamhour
Encerramento da Conexão
• O encerramento de conexão e feito utilizando o
Flag FIN.
• Exemplo: O cliente encerra a conexão
1. Do cliente para o servidor
– FIN = 1
2. Do servidor para o cliente
– ACK
3. Do servidor para o cliente
– FIN = 1
4. Do cliente para o servidor
– ACK
2007, Edgard Jamhour
Retransmissão
• A técnica de retransmissão do TCP é o
reconhecimento positivo com temporizadores.
– O TCP não usa NAK.
– Se o ACK não chegar no transmissor num tempo prédeterminado, o segmento é retransmitido.
• O receptor pode enviar pacotes sem dados,
apenas com confirmação, quando não tem nada
para transmitir.
2007, Edgard Jamhour
Temporização
• A temporização é estimada em função do tempo médio de Round-Trip
Time (RTT) para enviar e confirmar um segmento.
• O transmissor pode adotar várias técnicas para estimar este tempo.
Uma estratégia comum é a seguinte:
– EstimatedRTT = 0.875 EstimatedRTT + 0.125 SampleRTT
– Temporizador = EstimatedRTT + 4 . Desvio
– Desvio = 0.875 Desvio + 0.125 (SampleRTT – EstimatedRTT)
• Onde:
– SampleRTT: última medição de RTT
– Desvio: medida da flutuação do valor do RTT
2007, Edgard Jamhour
Recomendações RFC 1122 e 2581
EVENTO
•
•
•
Chegada de um segmento na
ordem.
Chegada de um segmento fora de
ordem (número mais alto que o
esperado).
Chegada de um segmento que
preenche a lacuna.
AÇÃO TCP DESTINATÁRIO
•
Aguarda 500 ms. Se outro
segmento não chegar, confirma o
segmento. Se outro segmento vier,
confirma os dois com um único
ACK.
•
Envia imediatamente o ACK
duplicado com o número do byte
aguardado (isto é, repete o último
ACK de ordem correta).
•
Envia imediatamente o ACK (se o
preechimento foi na parte contigua
baixa da lacuna).
2007, Edgard Jamhour
Retransmissão Rápida
• Segmentos que são recebidos fora de ordem não
são confirmados pelo receptor.
– O receptor repete o último valor confirmado para o
transmissor.
• Se o transmissor receber 3 segmentos com o
mesmo número de confirmação, ele retransmite
os segmentos perdidos.
– Essa técnica é denominada retransmissão rápida
(retransmissão antes de expirar o temporizador do
segmento).
– Algumas implementações de TCP usam a
retransmissão de 3 ACK duplicados como um NAK
implícito.
2007, Edgard Jamhour
Controle de Fluxo
• Janela de Recepção (32 bits)
– Informa a quantidade de bytes disponíveis no
buffer de recepção do host.
– Quando o receptor informa ao transmissor que
a janela de recepção tem tamanho 0, o
transmissor entra num modo de transmissão
de segmentos de 1 byte, até que o buffer do
receptor libere espaço.
2007, Edgard Jamhour
Controle de Fluxo
• Transmissão de A para B
– RcvBuffer = buffer de recepção de B
– LastByteRead = número do último byte lido pela aplicação B
– LastByteRcvd = último byte recebido por B
• A janela de recepção enviada de B para A é definida por:
– RcvWindow = RcvBuffer - [LastByteRcvd - LastByteRead]
• A quantidade máxima de pacotes de A para B é dada por:
– LastByteSent - LastByteAcked <= RcvWindow
2007, Edgard Jamhour
Controle de Congestionamento
• Na prática, o TCP impõe uma outra janela que limita o enviou de
bytes pelo tranmissor:
• LastByteSent - LastByteAcket <= min(CongWin, RcvWindow)
• A janela CongWin é recalculada a cada RTT.
• A taxa de envio máxima é dada por:
– CongWing/RTT bytes/s
• A janela CongWin é aumentada pelo transmissor se seus pacotes são
recebidos com sucesso, e diminuída em caso de falha.
2007, Edgard Jamhour
Algoritmo
• a) Inicialização:
– CongWin = 1 MSS (Maximum Segment Size = 1460 bytes)
– Threshold = 65 kbps
• b) Fase de crescimento exponencial (a cada ACK recebido)
– se CongWin < Threshold vai para Partida Lenta
• CongWin = CongWin + MSS
• Isto é, CongWin= Congwin*2 por RTT
– senão vai para Prevenção de Congestionamento
• CongWin = CongWin + (MSS/CongWin)
• Isto é, CongWin = CongWin + 1 MSS por RTT
• c) Em caso de detecção de perda por 3 ACK duplicados:
• Threshold = CongWin = CongWin/2
• Vai para prevenção de congestionamento
• d) Em caso de detecção de perda por Temporização
• Threshold = CongWin/2
• CongWin = 1 MSS (volta para partida lenta)
2007, Edgard Jamhour
Variantes do TCP
• TCP Tahoe:
– mais antiga
– volta para partida lenta (CongWin=1MSS) para qualquer evento de perda
• TCP Reno:
– mais recente
– adota uma recuperação rápida (CongWin=CongWin/2) no caso de
deteção de perda por 3 ACK duplicados e partida lenta em caso de
detecção de perda por temporização.
• TCP Vegas:
– proposta
– Reduz a taxa de transmissão de pacotes mesmo antes da ocorrência de
perda, monitorando o aumento do valor do RTT (confirmação dos ACKs).
2007, Edgard Jamhour
Outros Bits de Controle
• PHS
– O receptor deve passar os dados
imediatamente para a camada superior.
• URG
– Existem dados no segmento marcados como
urgentes.
– A indicação do último byte considerado urgente
no segmento é definida pelo ponteiro de
urgência (16 bits).
2007, Edgard Jamhour
Protocolo UDP
•
•
Conceito: Protocolo
da camada de
transporte que
oferece um serviço
de comunicação
não orientado a
conexão,
construído sobre a
camada de rede IP.
Sendo não
orientado a
conexão, o
protocolo UDP
pode ser utilizado
tanto em
comunicações do
tipo difusão
(broadcast) quanto
ponto a ponto.
aplicação
A
aplicação
B
CAMADA DE
APLICAÇÃO
Porta 1
Porta 2
Porta 3
As aplicações
recebem as
mensagens
endereçando as
portas da camada
UDP.
Porta N
...
Demulti plexagem
CAMADA UDP
CAMADA IP
CAMADAS
INFERIO RES
A
demult iplexagem
é feita analisando
a porta de
destino, indicada
no cabeçalho de
controle das
mensagens que
chegam na
estação.
datagrama co m a
mensagem UDP
encapsulada.
2007, Edgard Jamhour
Mensagem UDP
• As mensagens UDP são bem mais simples que o
TCP pois não oferece a mesma qualidade de
serviço.
16
0
31
Porta de Origem
Porta de Destino
Comprimento da Mensagem
checksum
Dados
…..
2007, Edgard Jamhour
TCP X UDP
TCP
UDP
Orientado a Conexão
Não Orientado a Conexão
Transmissão por Fluxo
Segmentação e Remontagem feita
pelo S.O.
Transmissão por Datagramas:
Segmentação e Remontagem feita
pela aplicação.
Confiável (confirma recebimento e
retransmite pacotes perdidos)
Não confiável
Somente Unicast
Unicast, Multicast ou BroadCast
Controle de Fluxo
Controle de Congestionamento
Sem controle
Indicado para transferir grandes
quantidades de dados
Indicado para transmissões
rápidas (poucos dados) ou que não
admitam grande atraso (temporeal)
2007, Edgard Jamhour
Protocolos do nível de aplicação.
•
Conceito: Protocolos que disponibilizam serviços padronizados de
comunicação, destinados a dar suporte ao desenvolvimento de aplicações
para os usuários.
Modelo OSI
Arquitetura TCP/IP
Aplicação
FTP
TELNET SMTP
HTTP
Apre sentação
SNMP
...
NFS
Protocolos
de
Aplicação
Sessão
Transporte
TCP
UDP
Rede
IP
Enlace de Dados
Enlace de Dados
Física
Física
2007, Edgard Jamhour
Descrição dos Protocolos de Aplicação
•
•
•
•
•
•
FTP: File Transfer Protocol. Protocolo que implementa serviços de
transferência de arquivos de uma estação para outra (ponto a ponto) através
de rede.
TELNET: Serviço de Terminal Remoto. Protocolo utilizado para permitir aos
usuários controlarem estações remotas através da rede.
SMTP: Simple Mail Transfer Protocol. Protocolo utilizado para transferência
de mensagens de correio eletrônico de uma estação para outra. Esse
protocolo especifica como 2 sistemas de correio eletrônico interagem.
HTTP: Hypertext Tranfer Protocol. Protocolo utilizado para transferência de
informações multimídia: texto, imagens, som, vídeo, etc.
SNMP: Simple Network Monitoring Protocol. Protocolo utilizado para
monitorar o estado das estações, roteadores e outros dispositivos que
compõe a rede.
NFS: Network File System. Protocolo desenvolvido pela "SUN Microsystems,
Incorporated", que permite que as estações compartilhem recursos de
armazenamento de arquivos através da rede.
2007, Edgard Jamhour
Download

ppt - PPGIa