Você está na página 1de 28

Redes

Prof. Edgard Jamhour

email: jamhour@ppgia.pucpr.br
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.
cabeçalho
Camada de Aplicação de controle
Unidade de dados do
protocolo de transporte
T-PDU
Camada de Transporte Dados
(TCP ou UDP)

Dados datagrama IP
Camada de Rede A T-PDU é
(IP) encapsulad
a no campo
Dados quadros de dados
do
Camada de Enlace de datagrama
dados representação lógica binária
IP.
0001101010101010101010001

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 A aplicação B se comunica como se
extremidades. Dessa forma, u ma mes ma estivesse utilizando uma ligação ponto a
porta pode ser usada para estabelecer ponto dedicada com cada u ma das outras
simu ltaneamente duas conexões sem aplicações.
nenhuma ambiguidade.

Aplicação Aplicação
Aplicação
B C
A
CAMADA DE
APLICAÇÃO
Porta Porta Porta Porta Porta Porta
CAMADA 53 1184 25 53 1184
TDP
1069
4
CAMADA
IP
CAMADAS
INFERIO RES

128.10.2.3 128.10.2.4 128.10.2.5


ESTAÇ ÃO A ESTAÇÃO B ESTAÇÃO C

Conexão bid irecional formada pelo


par (128.10.2.3,1184) e Conexão bid irecional formada
(128.10.2.4,53) 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 Fluxo contínuo de
bytes (stream) bytes (stream)
socket socket

TCP TCP
segmentos segmentos

IP 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 500 800 bytes

0 Dados 200 Dados 500 Dados

SEGMENTO SEGMENTO 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 ACK Processo


Transmissor Receptor
Mensagem A mensagem é
retransmitida
ACK se não houver
confirmação
Kernel Kernel
REDE

2007, Edgard Jamhour


Segmento TCP
0 4 8 12 16 20 24 28 31

Byte 1 Byte 2 Byte 3 Byte 4


Porta de origem Porta de destino

Número de Seqüência

Número de Confirmação
HLEN Reservado BITS DE CÓDIGO Janela de Recepção

Checksum Ponteiro de Urgência

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 AÇÃO TCP DESTINATÁRIO

• Chegada de um segmento na • Aguarda 500 ms. Se outro


ordem. segmento não chegar, confirma o
segmento. Se outro segmento vier,
confirma os dois com um único
ACK.

• Envia imediatamente o ACK


• Chegada de um segmento fora de duplicado com o número do byte
ordem (número mais alto que o aguardado (isto é, repete o último
esperado). ACK de ordem correta).

• Envia imediatamente o ACK (se o


• Chegada de um segmento que preechimento foi na parte contigua
preenche a lacuna. 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
aplicação aplicação As aplicações
A B recebem as
• Conceito: Protocolo mensagens
da camada de endereçando as
transporte que portas da camada
CAMADA DE UDP.
oferece um serviço APLIC AÇÃO
de comunicação
não orientado a Porta 1 Porta 2 Porta 3 Porta N
conexão,
construído sobre a ...
camada de rede IP.
Demulti plexagem
• Sendo não
orientado a CAMADA UDP A
conexão, o demult iplexagem
é feita analisando
protocolo UDP a porta de
pode ser utilizado CAMADA IP
destino, indicada
tanto em no cabeçalho de
controle das
comunicações do mensagens que
CAMADAS
tipo difusão INFERIO RES chegam na
(broadcast) quanto estação.
ponto a ponto.
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.

0 16 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 Transmissão por Datagramas:


Segmentação e Remontagem feita Segmentação e Remontagem feita
pelo S.O. pela aplicação.
Confiável (confirma recebimento e Não confiável
retransmite pacotes perdidos)
Somente Unicast Unicast, Multicast ou BroadCast

Controle de Fluxo Sem controle


Controle de Congestionamento
Indicado para transferir grandes Indicado para transmissões rápidas
quantidades de dados (poucos dados) ou que não
admitam grande atraso (tempo-
real)
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
TELNET SMTP HTTP
FTP SNMP NFS Protocolos
Apre sentação ... 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

Você também pode gostar