Professional Documents
Culture Documents
Pilha TCP/IP
Orientado a datagrama
No orientado conexo
No executa controle de fluxo, controle de erro
e sequenciamento
No tem reconhecimento dos datagramas
(ACK/NACK)
Header UDP
0
16
31
Porta Origem
Porta Destino
Tamanho
Checksum
Dados
Onde,
Porta Origem e Porta Destino identificam o processo de
aplicao que est enviando dados e o processo de aplicao que
ir receber os dados.
Tamanho representa o tamanho total do frame UDP
Checksum calculado usando o header UDP e tambm a rea
de dados, e destina-se a verificao de erros de transmisso.
Checksum UDP
Pseudo-Header
0
16
31
Endereo IP Origem
Endereo IP Destino
Zero
Protocolo
Tamanho
Onde,
Endereo IP Origem e Endereo IP destino so do nvel de rede
(protocolo IP) utilizadas para a segunda validao do destino do datagrama.
Zero um campo com valor zero para complementar a estrutura
do pseudo-header.
Protocolo indica qual o protocolo de transporte (TCP ou UDP), pois
o pseudo-header utilizado para os dois protocolos.
Tamanho indica o tamanho do frame de transporte (UDP ou TCP)
16
31
Endereo IP Origem
Endereo IP Destino
Zero
Header UDP
Protocolo
Pseudo-Header
Tamanho
Porta Origem
Porta Destino
Tamanho
Checksum
Datagrama UDP
Dados
Ateno!
O Pseudo-Header no transmitido junto com o datagrama
UDP, ele utilizado apenas para clculo do Checksum.
Processamento do Checksum
Processamento do Checksum
Truncando Datagramas
Orientado conexo
Controle de erros com retransmisso
Controle de fluxo
Sequenciamento
Entrega ordenada
Header TCP
Porta origem
Porta destino
Nmero de Seqncia
Acknowlegement
Tam.
Reser.
Flags
Checksum
Window
Urgent Pointer
Header TCP
Onde,
Porta Origem e Porta Destino identificam o processo de aplicao que
est enviando dados e o processo de aplicao que ir receber os
dados.
Nmero de seqncia identifica os bytes enviados. Na prtica ele a
identificao do primeiro byte de dados contido no segmento enviado. Os
demais so seqenciados a partir deste byte.
Acknowledgement identifica os bytes que foram recebidos e tratados
sem erro pelo destino, bem como a seqncia do prximo byte esperado
Tamanho representa o tamanho total do frame TCP
Reservado um campo ainda no utilizado
FLAGS identifica as flags (syn, fin, psh, rst, ack, urg)
Window identifica o tamanho da janela para o controle de fluxo
Checksum destina-se a verificao de erros de transmisso. calculado
usando o pseudo header, o header TCP e tambm a rea de dados
Urgent Poninter um ponteiro para dados urgentes, contidos na rea
de dados.
Trs Fases
Estabelecimento da Conexo
Transmisso de Dados
Encerramento da Conexo
Flags
Estabelecimento da Conexo
Origem
A
ACK 1823083522
Destino
B
Ativo x passivo
Inicializao do Nmero de
Seqncia
RFC 793
Nmero de 32 bits
incrementado a cada 4 microsegundos
4.4BSD
MSS...
Exemplo
MSS 1460
MSS 256
Encerramento da Conexo
Origem
A
ACK 1415531523
ACK 1823083523
Destino
B
Encerramento da Conexo
Half Close
sun
FIN + ACK
Exemplo:
ACK
Data
Ack of Data
datafile
std
input
sun
rsh
terminal
std
output
bsdi
sort
FIN + ACK
ACK
Timeout no Estabelecimento da
Conexo
Tempo: 75 segundos
4.4 BSD: leva 76 segundos
Problema: Timeout
Estados x Mensagens
Origem
SYN_SENT
SYN
Destino
LISTEN
SYN_RCVD
SYN + ACK
ESTABLISHED
ACK
ESTABLISHED
FIN_WAIT 1
FIN
CLOSE_WAIT
ACK
FIN_WAIT 2
FIN + ACK
TIME_WAIT 2
LAST_ACK
ACK
CLOSED
RFC 793
Utilizao do 2MSL
Utilizao do 2MSL
Socket option
SO_REUSEADDR
Transpor as regras sobre uso do endereo das
portas
Quite Time
Reset de Conexes
Estabelecimento de Conexes
Simultneas
Encerramento de Conexes
simultneas
CLOSING
TIME_WAIT
Destino
FIN
ACK
FIN
ACK
FIN_WAIT 1
CLOSING
TIME_WAIT
SYN FLOOD
Intruso
SYN
SYN
SYN
SYN
SYN
SYN
Destino
Suposta Origem
SYN + ACK
RST
RST
Controle de Erros
No envia NACK
A necessidade de realizar uma retransmisso
detectada pela ausncia do ACK
Controle de Fluxo
O TCP executa o
algoritmo de
janela deslizante
A cada envio de
mensagens o host
informa o nmero
de bytes que podem
ser recebidos
Origem
Destino
Dados, ACK(D), Seq (O)
WIN (4096)
Dados, ACK(O), Seq (D)
WIN (512)
Dados, ACK(D), Seq (O)
WIN (4096)
Timeout
Erro!!!!
Fluxo Interativo
piggback
Exemplo: rlogin
Origem
digitado
Destino
Dados, ACK(D), Seq (O)
WIN (4096)
servidor
Origem
digitado
ACK(O) + WIN
Destino
Dados, ACK(D), Seq (O)
WIN (4096)
servidor
DADOS + ACK(O) + WIN
display
display
ACK(D) + WIN
echo
ACK(D) + WIN
delayed
echo
Algoritmo de Nagle
Exemplo do Rlogin
Problema?
1 byte de dados
20 bytes TCP + 20 Bytes IP
Overhead de controle
Nagle:
Algoritmo de Nagle
Algoritmo self-clocking
Exemplo: Ethernet
RTT aproximadamente de 16 ms
Para ser mais rpido deveria digitar mais de 60
caracteres por segundo
Isto significa que raramente aplicado nestas redes
Utilizado em redes com RTT maior (p.ex: WAN)
Desabilitando Nagle
Quando necessrio?
Trafego Interativo
Xwindow (movimentos do mouse....)