Você está na página 1de 64

Fundamentos

de Redes
ProtocolosdeTransporte
Djamel Sadok
Dnio Mariz
{jamel,dmts}@cin.ufpe.br
Cin/UFPE, JUN/2003
1

Internet e TCP/IP
Internet
Agrupamentodegrandequantidadederedesaoredordomundo,

ligadaspeloprotocoloIP
Redemundialdecomputadores
TCP/IP

Famliadeprotocolosdecomunicao
Servioseacessoindependentedetecnologia
Permiteainterconexoderedesfsicasdiferentes
Interconexorealizadaporroteadores
Protocolo IP

Noorientadoaconexo,roteamentomelhoresforo
Noconfivel,semcontroledefluxooudeerrossimples
Roteamentobaseadonoendereodaredededestino
2

Protocolos,
Servios &
Portas
3

Modelo de camadas OSI & TCP/IP


Aplicao
Apresentao

Aplicao

Sesso
Transporte
Rede
Enlace

Transporte
Inter-Rede
Sub-IP

Fsico
Modelo OSI

Modelo TCP/IP
4

SNMP

NFS

OSPF

FTP

HTTP

SSH

SMTP

Aplicao

Transporte
Inter-Rede
Enlace & Fsico

UDP

ARP

ETHERNET

SCTP

IGMP

RTP

IP

TCP

ICMP

PPP TOKENRING FDDI

ATM

RARP

802.11

...

SISTEMA OPERACIONAL

DNS

USURIO

Famlia TCP/IP

Modelo TCP/IP
5

Encapsulamento

DADOS

PacotedaAplicao

CABEALHO
TCP

DADOS

PacoteTCP

CABEALHO CABEALHO
IP
TCP

DADOS

PacoteIP

CABEALHO CABEALHO CABEALHO


ETHERNET
IP
TCP

DADOS

RODAP
ETHERNET

PacoteEthernet

Identificao da aplicao no host


Como cada mquina identificada unicamente na

Internet?
Como a entidade de rede (IP) identifica qual o
protocolo de transporte est sendo utilizado ?
Dentro do host, como a entidade de transporte
(TCP,UDP) sabe para qual aplicao entregar o
pacote ?
Como uma aplicao do cliente sabe qual a
aplicao dentro do servidor remoto para poder
enviar pacotes?

Identificao da aplicao no host

porta
20348
porta
20345

TCP

protocolo=6

porta
10340
porta
15398

UDP

porta
6970

ssh.cin.ufpe.br
150.161.2.106
procololo=6
porta=22

protocolo=17

Internet
host013.re.apartnet.br.inter.net
200.199.75.13

www.uol.com.br
200.221.8.18
procololo=6
porta=80

www.bbc.co.uk
212.58.224.61
protocolo=17
porta=44585

servidorDNS
200.185.56.49
protocol=17
porta=53

Identificao da aplicao no host


HTTP server X
porta=80
HTTP server Y
porta=80

Pacote
IP
Pacote
IP

TCP

Host A

As aplicaes no confundem os pacotes que chegam ?

Aplicao

Aplicao

Aplicao

Porta 1

Porta 2

Porta N

UDP

TCP
Transporte

IP, IPX, ICMP, ARP, ...


Rede

Sistema Operacional

Pilha de Protocolos, na prtica

Driver da Interface de Rede


Interface de Rede
Rede (hub, switch, router, ...)

10

Pilha de Protocolos, na prtica

Porta 4251

UDP

FTP Server

Porta 21

TCP
Transporte
IP
Rede

Driver da Interface de Rede

SNMP agent FTP client Web Server

Porta 161

Porta 3245

UDP

Porta 80

TCP
Transporte
IP
Rede

HOST B Linux

Porta 3245

Browser

HOST A Windows 2000

Browser

Driver da Interface de Rede

Interface de Rede

Interface de Rede
Rede (hub, switch, router, ...)
Outro host

OTCP/IPsabeparaqualaplicaoentregaropacoteolhandoaTUPLA:

EndereoIPorigem,EndereoIPdestino,Portaorigem,Portadestino,Protocolo

11

Identificao da aplicao no host


HTTP server X
porta=80
HTTP server Y
porta=80

Pacote
IP
Pacote
IP

PORTA=4756
PORTA=4943

PACOTEIP
EndereoIPorigem
EndereoIPdestino
Portaorigem
Portadestino
Protocolo

PORTA=5623

TCP

Host A

Pacote informa a aplicao atravs da


PORTA

12

Identificao da aplicao no host


Como cada mquina identificada unicamente na Internet?
NmeroIP

IPv42^32=4.294.967.296hosts
IPv62^128=340.282.366.920.938.463.463.374.607.431.768.211.456

hosts
Como a entidade de rede (IP) identifica qual o protocolo de
transporte est sendo utilizado ?
TipodeprotocoloestindicadonocabealhoIP

Dentro do host, como a entidade de transporte (TCP,UDP) sabe

para qual aplicao entregar o pacote ?

CadaaplicaotemumaPortanicanohost
PortaidentificadanopacoteIP

Como uma aplicao do cliente sabe qual a aplicao dentro

do servidor remoto para poder enviar pacotes?

Algunsserviostmnmerosdeportasjconvencionadas(portasbem

conhecidas)

13

Identificao de aplicaes
Como cada mquina identificada unicamente na Internet ?
NmeroIP

Como a entidade de rede (IP) identifica qual o protocolo de

transporte est sendo utilizado ?


TipodeprotocoloestindicadonocabealhoIP
Dentro do host, como a entidade de transporte identifica qual
aplicao est sendo utilizada ?
CadaaplicaotemumaPortanicanohost
PortaidentificadanopacoteIP
Como uma aplicao cliente sabe qual a porta de uma
aplicao servidora para poder enviar pacotes?
Algunsserviostmnmerosdeportasjconvencionadas(portas
bemconhecidas)
14

Nmeros de portas
1-255
256-1023
1-1023

1024-4999
5000-

reservadas para servios padro


portas bem conhecidas
reservado para servios Unix
Somente podem ser usadas
por usurios privilegiados
(super-usurio)
Usadas por processos de
sistema e de usurio
Usadas somente por processos
de usurio

15

Algumas Portas Bem Conhecidas


21 FTP
22 SSH
23 Telnet

110 POP3
135-139 NetBIOS Services
161-162 SNMP

25 SMTP
53 DNS
69 TFTP

443 HTTPS (HTTP+SSL)


995 POP3S (POP3+SSL)
1433 MS-SQL Server

79 Finger
80 HTTP
88 KERBEROS

2049 NFS
3006 MySQL
6000 X Windows

Detalhesemwww.iana.org/assignments/portnumbers
16

Nvel de Transporte
Usurios de nvel de transporte so

processos de aplicao no host


Entidade de transporte: pode ser no kernel
do SO, um processo separado, biblioteca,
NIC, etc.
Tipos de servios de transporte: orientados
ou no a conexo
Nvel de transporte => usurio querendo
controlar a conexo
Oferece uma interface nica para diferentes
subredes => portabilidade das aplicaes

Exemplo de Primitivas de Transporte


(Sockets)

Estabelecimento de Conexes
Perda e duplicao de pacotes de pedidos de

conexes -problema de duplicatas atrasadas


Mecanismos para retirar da rede pacotes
velhos
projetolimitadodasubrede
usodecontadores(hopcounter)nospacotes
usodeinformaodetemponospacotes

(timestamps)

O Three-Way Handshake

Liberao de Conexo sem


Perda - Problema dos dois
exrcitos

Alocao de Buffers
Problema Do
Estacionamento

Recuperao de Falhas ->


no transparente!!

Protocolos de Transporte da
Internet
Transmission Control Protocol
orientado a conexo (RFC 793, 1122 e 1323)
oferece um servio fim-a-fim confivel sobre
subredes com diferentes (velocidades,
topologias, atrasos, tamanho de pacotes,
etc.)
executa no host na forma de um processo de
usurio ou no kernel
diviso dos mensagens em pacotes
(segmentos) de ate 64KB (normalmente
1500 bytes)

Modelo de Servio do TCP


Cada entidade de transporte cria um socket com

endereo IP + numero de porta (16 bits)


Mais de uma conexo pode terminar no mesmo
socket
Identificao de uma conexo atravs da dupla
(socket1, socket2)
Nmeros de portas ate 256 so conhecidos e
reservados (ftp-21, telnet 23)
Conexes TCP so full duplex e ponto a ponto
TCP no suporta comunicao muticast ou
broadcast
TCP e baseado em um stream de bytes (no
baseado em mensagens)

24

Modelo de Servio do TCP


Uso de um flag para indicar dados urgentes

(a entidade para de acumular dados para


mandar o mensagem)
CRC (checksum) do cabealho baseado no
complemento de 1 => resultado deve ser 0
Segmentos podem ser sem dados (ACKs,
mensagens de controle)
Default payload = 536 bytes + 20 do
cabealho do segmento = 556 bytes

25

O Cabealho TCP
16bitsourceportnumber

16bitdestinationportnumber

32bitsequencenumber
32bitacknowledgmentnumber
4bithdr
length

6bit
(reserved)

U A P R S F
R C S S Y I
G K H T N N

16bitTCPchecksum

16bitwindowsize
16biturgentpointer

options
data

O Protocolo TCP
Estabelecimento de Conexo
Protocolo
Passo 1: o cliente envia um segmento SYN

especificando a porta do servidor ao qual deseja se


conectar e seu nmero de sequncia inicial
Passo 2: o servidor responde enviando outro segmento
SYN com o ACK do segmento recebido e o seu prprio
nmero de sequncia
Passo 3: o cliente retorna um ACK e a conexo se
estabelece

Otamanhomximodesegmento(MSS)quecadalado

sepropeaaceitartambmdefinidonomomentodo
estabelecimentodaconexo

Podeacontecerumhalfopen

TCP Como Funciona


Server

Status:LISTENING

TEMPO

Client

28

TCP Como Funciona


Client

Server

Conexosolicitadapelocliente

TEMPO

SYN

Status:SYN_RECV

29

TCP Como Funciona


Client

Server

Status:SYN_RECV

SYN

TEMPO

SYNACK

Servidoralocarecursos(memria)
Paraapotencialconexo
eligarelgiodeTIMEOUT

30

TCP Como Funciona


Client

Server

Status:ESTABILISHED

SYN
SYNACK
TEMPO

ACK
(DATA)

Clienteconfirmaopedidodeconexo
Einiciaenviodedados.

31

TCP Como Funciona


Client

Server

Status:ESTABILISHED

SYN
SYNACK
TEMPO

ACK

THREEWAYHANDSHAKE

32

O Protocolo TCP-Estabelecimento de Conexo


(cont.)
Cliente

Servidor

Cliente

SYN(SEQ=x)

SYN(SEQ=y,
ACK=x+1)

Servidor
SYN(SEQ=x)

Tempo

SYN(SEQ=y)
SYN(SEQ=y,
ACK=x+1)

SYN(SEQ=x+1,
ACK=y+1)

SYN(SEQ=x,
ACK=y+1)

O Protocolo TCP
Trmino de Conexo
Cadadireodaconexo

encerradaindependentemente
Protocolo
Passo 1: o cliente envia um

segmento FIN
Passo 2: o servidor retorna
um FIN e um ACK para o
cliente
Passo 3: o cliente envia um
ACK e a conexo se
encerra

possvelefetuarumhalf

close,mantendoseapenas
umaconexosimplex

Cliente

Servidor
FIN

ACK
FIN

ACK

Tempo

TCP Como Funciona


Client

Server

Status:CLOSED
Status:STABLISHED

SYN
SYNACK
ACK
TEMPO

(DATA)
(DATA)
(DATA)

FIN
FINACK
ACK

Apstrocadeinformao,umdos
ladossolicitafimdaconexoeo
outroladoconfirma.

35

Protocolos de Transporte da Internet


(cont.)
Uso de uma tamanho de janela de 16 bits =>

problema em linhas de grande atraso (satlite ou


transcontinental)
RFC 1323 define um extenso ao tamanho da
janela a ser 32 bits (suportado pelas
implementaes)
RFC 1106 prope o uso de uma repetio seletivo
no lugar do go back n usando NAKs
Gerenciamento de Conexes em TCP
Estabelecimento de conexo TCP usando o Threeway handshake
Na liberao de conexo (FIN), temporizadores so
usados para evitar o problema dos exrcitos

Gerenciamento de buffers no
TCP

Poltica de Transmisso em TCP


O gerenciamento da janela TCP no

direitamente ligado aos reconhecimentos


(ACKs)
Quando o tamanho == 0, o transmissor
pode enviar dados urgentes, ou um
segmento de 1 byte pedindo ao receptor reanunciar o prximo byte esperado (para
evitar deadlock no caso da perda de um
ACK!)
Atrasar (de 500 msec) ACKs e updates das
janelas para economizar na troca de pacotes
38

O Protocolo TCP - Trfego Interativo


Cada letra digitada gera um segmento:

Telnet, Rlogin
Muitos pacotes pequenos podem provocar
congestionamento em redes lentas (WAN)
O TCP tenta minimizar o nmero de pacotes
trocados:
Reconhecimentos(ACKs)atrasados
AlgoritmoNagle
Apenas um segmento pequeno pode ficar

pendente (sem reconhecimento) a cada momento


A taxa de envio dos pacotes se adequar a
velocidade da rede
Nem sempre desejvel. Ex: X Windows

O Protocolo TCP - Trfego


constante
FTP, SMTP
Controle de fluxo efetuado atravs do protocolo de

janela deslizante (Sliding Window Protocol):


Oservidor(receptor)ficaenviandootamanhodesuajanela
derecepo(ndebytesdisponveisnobufferdeentrada)
Ajaneladeenviodoclienteevoluidaseguinteforma:
a janela fecha quando segmentos so enviados e

reconhecidos
quando o servidor l os dados recebidos liberando o
buffer do TCP, este sinaliza a nova janela de recepo
para o cliente, que abre sua janela de envio

Oclienteestabeleceumpersisttimerparaficarinquirindo

oservidorquantoaotamanhodesuajaneladerecepo
mesmoqueelaestejaaparentementefechadaparaevitar
deadlocks
O problema da Silly Window Sindrome(aplicao lendo
1 byte cada vez!)

Controle de
Congestionamento
no TCP

41

Segmentos TCP
Um segmento consiste em um

cabealho seguido de bytes de dados.


O software TCP decide qual deve ser o

tamanho dos segmentos.


Porm, cada segmento deve caber na

carga til do IP, que 64KB.


42

Temporizadores
Quando um segmento enviado, o

transmissor ativa um temporizador.


Quando o segmento chega ao destino, a

entidade TCP receptora retorna um


segmento com o prximo nmero de
seqncia que espera receber.
Se o temporizador do transmissor expirar

antes da confirmao chegar, haver uma


retransmisso.
43

Janela de Congestionamento
Uma conexo TCP controla sua taxa de transmisso

limitando o seu nmero de segmentos que podem


ser transmitidos sem que uma confirmao seja
recebida.

Esse nmero chamado o tamanho da janela do

TCP (w)
Uma conexo TCP comea com um pequeno valor
de w e ento o incrementa arriscando que exista
mais largura de banda.
Isso continua a ocorrer at que algum segmento
seja perdido.
Nesse momento, a conexo TCP reduz w para um
valor seguro, e ento continua a arriscar o
44
crescimento.

Controle de Congestionamento
O controle feito atravs de duas variveis

adicionadas em cada lado da conexo:


JaneladeCongestionamento;
Janela do TCP explicada anteriormente.

Limiar;
Serve para controlar o crescimento da janela de
congestionamento.

45

Graficamente ...

46

Janela do Receptor
O nmero mximo de segmentos

no confirmados dado pelo


mnimo entre os tamanhos das
janelas de congestionamento e do
receptor.
Ouseja,mesmoquehajamais

larguradebanda,oreceptor
tambmpodeserumgargalo.

47

Evoluo de uma Conexo TCP


No incio, a janela de congestionamento tem o

tamanho de um segmento.
Talsegmentotemotamanhodomaiorsegmento
suportado.
O primeiro segmento enviado e ento
esperado seu reconhecimento.
Seomesmochegarantesqueocorraotimeout,o
transmissorduplicaotamanhodajanelade
congestionamentoeenviadoissegmentos.
Seessesdoissegmentostambmforem
reconhecidosantesdeseustimeouts,otransmissor
duplicanovamentesuajanela,enviandoagora
quatrosegmentos.
48

Evoluo de uma Conexo TCP


Esse processo continua at que:
Otamanhodajaneladecongestionamentoseja
maiorqueolimiar,oumaiorqueotamanhoda
janeladoreceptor;
Ocorraalgumtimeoutsantesdaconfirmao.

49

Duas Fases dessa Evoluo


A primeira fase, em que a janela de

congestionamento cresce
exponencialmente chamada de
inicializao lenta (slow start), pelo
fato de comear com um segmento.
Ataxadetransmissocomeapequena
pormcrescemuitorapidamente.

50

Graficamente ...

SLOW START
51

Duas Fases dessa Evoluo


Uma vez ultrapassado o limiar, e a

janela do receptor ainda no seja um


limitante, o crescimento da janela
passa a ser linear.
Essa segunda fase chamada de

preveno de congestionamento
(congestion avoidance).
Suaduraotambmdependedano
ocorrnciatimeouts,edaaceitaodofluxo
porpartedoreceptor.
52

Graficamente ...

CONGESTION
AVOIDANCE
53

E quando ocorrer um problema?

54

Evoluo de uma Conexo TCP


Na ocorrncia de um timeout, as

seguintes atitudes so tomadas:


Ovalordolimiarpassaaserametadedodo
atualtamanhodajanelade
congestionamento.
Otamanhodajaneladecongestionamento
voltaserdotamanhodeumsegmento.
Otamanhodajaneladecongestionamento
voltaacrescerexponencialmente.

55

Resumo
Quando o tamanho da janela de

congestionamento est abaixo do


limiar, seu crescimento exponencial.

Quando este tamanho est acima do

limiar, o crescimento linear.

Todas as vezes que ocorrer um timeout,

o limiar modificado para a metade do


tamanho da janela e o tamanho da
janela passa a ser 1.

56

Graficamente ...

57

O Header UDP
Pseudoheader
32bitsourceIPaddress
32bitdestinationIPaddress
00000000

protocol

length

Header
Sourceport

Destinationport

UDPlength

UDPchecksum

Portas UDP

Processos requerem portas UDP

para transmisso e recepo de


datagramas
Sistemas que suportam multicast
permitem que mais de um
processo compartilhe a mesma
porta
Os servidores que usam UDP
podem restringir o recebimento de

TCP vs UDP
60

TCP
Confivel,faztratamentodeerros(perdas)egarantea

entregadosdados
Adaptativo:fazcontroledecongestionamentovariandoa
taxadeenvio.Adaptaataxadetransmissobanda
disponvel
UsaACKs
Aplicaonosepreocupacomcontroledeperdasde
pacotesesequenciamento
Controledefluxo:janeladeslizantetemporizaoetimeout
UsadopelosprotocolosFTP,HTTP,POP,SMTP
Requertempoadicionalparaestabelecerconexo
61

UDP
NoConfivelnofaztratamentodeperdadepacotes
NoGaranteaentregadosdados
UsadopeloSNMP,DHCP,DNS
NoAdaptativo:tomaomximodabandadisponvel
Nofazcontroledefluxo
Exigequeaaplicaoexecutecontroledeperdasde

pacotesesequenciamento
Norequertempoadicionalparaestabelecerconexo

62

TCP Mvel
I-TCP Indirect TCP

Estaomvel

Pontodeacesso
(foreignagent)

TCPmodificado

Internet

TCPpadro

TCP Mvel
Snooping TCP

Retransmissolocal

foreign
agent
Internet

Estao
mvel

VerificaodeACKs

Armazenamentodedados

ConexoTCPfimafim

Você também pode gostar