Buscar

Protocolo TCP UDP

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

7 - *
Protocolos TCP/UDP
7 - *
Objetivos
descrever as funções do protocolo TCP
entender as diferenças entre os protocolos TCP e UDP
identificar o trânsito de um pacote pelas camadas do protocolo TCP/IP
7 - *
TCP
Transmission Control Protocol
é orientado à conexão
realiza comunicação fim-a-fim
possui controle de fluxo através de janelamento
conexão é definida pelos processos origem e destino
aplicações mais comuns: TELNET, FTP, SMTP,HTTP
7 - *
Estabelecimento de sessão 
SYN
7 - *
Estabelecimento de sessão 
SYN
SYN, ACK
7 - *
Estabelecimento de sessão 
SYN
ACK
SYN, ACK
7 - *
Estabelecimento de sessão 
SYN
ACK
dados
SYN, ACK
7 - *
Término de sessão 
de modo ordeiro
dados
dados
de modo abrupto
7 - *
Término de sessão 
de modo ordeiro
dados
FIN
dados
de modo abrupto
7 - *
Término de sessão 
de modo ordeiro
dados
FIN
ACK,FIN
dados
de modo abrupto
ACK
7 - *
Término de sessão 
de modo ordeiro
dados
FIN
ACK,FIN
dados
RESET
de modo abrupto
ACK
7 - *
Endereço TCP 
Telnet 10.0.0.1
10.0.0.1
A
 SP DP
source port
destination port
...
1028
23
...
7 - *
Well-Known TCP Port
F
T
P
S
M
T
P
TCP
nível
Aplicação
nível
Transporte
port
numbers
TELNET
21
23
25
7 - *
Sequenciamento
dos pacotes
 SP DP SEQ ACK
1028
23
10
1
...
7 - *
Sequenciamento
dos pacotes
 SP DP SEQ ACK
23
1028
1
11
...
 SP DP SEQ ACK
1028
23
10
1
...
7 - *
Sequenciamento
dos pacotes
 SP DP SEQ ACK
23
1028
1
11
...
 SP DP SEQ ACK
1028
23
10
1
...
 SP DP SEQ ACK
1028
23
11
2
...
7 - *
Sequenciamento TCP orientado a byte 
SEQ=1 NBYTES=100
7 - *
Sequenciamento TCP orientado a byte 
SEQ=1 NBYTES=100
SEQ=101 NBYTES=50
7 - *
Sequenciamento TCP orientado a byte 
SEQ=1 NBYTES=100
SEQ=101 NBYTES=50
SEQ=151 NBYTES=200
SEQ
SEQ ANTERIOR
NBYTES TX
= 
+
7 - *
Acknowledgement do TCP 
SEQ=1 NBYTES=100
7 - *
Acknowledgement do TCP 
SEQ=1 NBYTES=100
ACK = 101
7 - *
Acknowledgement do TCP 
SEQ=1 NBYTES=100
ACK = 101
SEQ=101 NBYTES=50
7 - *
Acknowledgement do TCP 
SEQ=1 NBYTES=100
ACK = 101
SEQ=101 NBYTES=50
ACK = 151
ACK
SEQ ANTERIOR
NBYTES RX
= 
+
7 - *
Acknowledgement cumulativo
SEQ=1 NBYTES=100
7 - *
Acknowledgement cumulativo
SEQ=1 NBYTES=100
SEQ=101 NBYTES=50
7 - *
Acknowledgement cumulativo
SEQ=1 NBYTES=100
SEQ=101 NBYTES=50
SEQ=151 NBYTES=200
7 - *
Acknowledgement cumulativo 
SEQ=1 NBYTES=100
SEQ=101 NBYTES=50
SEQ=151 NBYTES=200
ACK=351
7 - *
Janela do TCP 
SEQ=1 NBYTES=500
janela TCP
de 1500 bytes
janela TCP
de 2000 bytes
7 - *
Janela do TCP 
SEQ=1 NBYTES=500
SEQ=501 NBYTES=200
janela TCP
de 1500 bytes
janela TCP
de 2000 bytes
7 - *
Janela do TCP 
SEQ=1 NBYTES=500
SEQ=501 NBYTES=200
SEQ=701 NBYTES=1000
janela TCP
de 1500 bytes
janela TCP
de 2000 bytes
7 - *
Janela do TCP 
SEQ=1 NBYTES=500
SEQ=501 NBYTES=200
SEQ=701 NBYTES=1000
SEQ=1701 NBYTES=?
janela TCP
de 1500 bytes
janela TCP
de 2000 bytes
7 - *
Confiabilidade do TCP 
101
201
301
401
501
601
Janela = 300 bytes
7 - *
Confiabilidade do TCP 
envia 101
envia 201
envia 301
101
201
301
401
501
601
101
201
301
Janela = 300 bytes
7 - *
Confiabilidade do TCP 
ack 401
101
201
301
401
501
601
101
201
301
envia 101
envia 201
envia 301
Janela = 300 bytes
7 - *
Confiabilidade do TCP 
envia 401
envia 501
envia 601
ack 401
101
201
301
401
501
601
101
201
301
envia 101
envia 201
envia 301
Janela = 300 bytes
7 - *
Confiabilidade do TCP 
ack 501
envia 401
envia 501
envia 601
ack 401
101
201
301
401
501
601
101
201
301
envia 101
envia 201
envia 301
401
601
Janela = 300 bytes
7 - *
Confiabilidade do TCP 
envia 501
ack 501
envia 401
envia 501
envia 601
ack 401
101
201
301
401
501
601
101
201
301
envia 101
envia 201
envia 301
401
601
Janela = 300 bytes
7 - *
Confiabilidade do TCP 
ack 701
envia 501
ack 501
envia 401
envia 501
envia 601
ack 401
101
201
301
401
501
601
101
201
301
envia 101
envia 201
envia 301
401
601
501
Janela = 300 bytes
7 - *
Retransmissão do TCP 
não possui pacote NACK
retransmite após timeout
intervalo de retransmissão é adaptativo e próximo ao round-trip time (RTT) médio
7 - *
Técnicas de retransmissão 
retransmite apenas o primeiro pacote
B
A
1º pacote
2º pacote
1º pacote
B
A
1º pacote
2º pacote
1º pacote
2º pacote
retransmite todos os pacotes
7 - *
Formato do cabeçalho TCP 
source port
destination port
sequence number
acknowledgement number
hlen
window
header checksum
urgent pointer
options
padding
reserved
F
I
N
S
Y
N
R
S
T
P
S
H
A
C
K
U
R
G
7 - *
UDP
User Datagram Protocol
não realiza confirmação fim-a-fim
não possui controle de fluxo
formato do cabeçalho:
aplicações: SNMP, TFTP, DNS
UDP source port
UDP destination port
UDP message length
UDP checksum
7 - *
Well-known UDP port
DNS
UDP
nível
Aplicação
nível
Transporte
port
numbers
TFTP
53
69
161
S
N
M
P
7 - *
Transição do pacote TCP/IP
T
E
L
N
E
T
F
T
P
D
N
S
T
F
T
P
endereço MAC
TCP
UDP
IP
Enlace
Físico
23
21
53
69
6
17
7 - *
Transição do pacote TCP/IP
T
E
L
N
E
T
F
T
P
D
N
S
T
F
T
P
type, SAP ou Protocol
endereço MAC
TCP
UDP
IP
Enlace
Físico
23
21
53
69
6
17
7 - *
Transição do pacote TCP/IP
T
E
L
N
E
T
F
T
P
D
N
S
T
F
T
P
protocol
endereço MAC
TCP
UDP
IP
Enlace
Físico
23
21
53
69
6
17
type, SAP ou Protocol
7 - *
Transição do pacote TCP/IP
port numbers
T
E
L
N
E
T
F
T
P
D
N
S
T
F
T
P
protocol
endereço MAC
TCP
UDP
IP
Enlace
Físico
23
21
53
69
6
17
type, SAP ou Protocol
7 - *
Resumo
o protocolo TCP realiza controle de fluxo fim-a-fim através de janelas
o sequenciamento do TCP é orientado a byte, e não a pacote
o intervalo de retransmissão do TCP é adaptativo
o UDP não implementa controle de fluxo nem sequenciamento de pacotes
O estabelecimento da conexão TCP é feito através de um segmento TCP que possui a indicação de tentativa de conexão, denominado SYN. Este segmento não possui dados, sendo reconhecido por possuir o bit SYN do campo flag do cabeçalho TCP “ligado”. Neste segmento são informados o tamanho da janela TCP e o tamanho máximo do campo de dados TCP, chamado de MSS (Maximum Segment Size).
A resposta do segmento TCP SYN é o segmento SYN-ACK, que também não possui dados e é reconhecido por ter os bits SYN e ACK do campo flag do cabeçalho TCP “ligados”. Neste segmento de aceite de pedido de conexão são também informadas a janela TCP e o MSS. A conexão estará estabelecida após o envio de um segmento ACK, completando o handshake TCP.
A recusa no estabelecimento da sessão TCP (através de um segmento TCP RST) normalmente indica um dos seguintes problemas: 
 o número de conexões no servidor ultrapassou o limite máximo, 
 a aplicação servidora não está ativa 
 a aplicação não está definida.
Após o envio dos dados, a sessão TCP pode ser encerrada por qualquer uma das partes (cliente ou servidor) elegantemente através de um segmento FIN. Este segmento não possui dados, sendo reconhecido por ter o bit FIN do campo flag do cabeçalho TCP “ligado”.
Em caso de falhas, a sessão TCP é encerrada de forma abrupta com um segmento RST (Reset). Este também não possui dados, sendo reconhecido por possuir o bit RST do campo flag “ligado”.
Os campos source port e destination port do cabeçalho TCP indicam respectivamente os endereços dos processos origem e destino.
Quando a estação de trabalho A, por exemplo, solicita uma sessão de emulação de terminal TELNET com o nó 10.0.0.1, ela envia um segmento de início de estabelecimento de sessão SYN com os campos source port e destination port preenchidos da seguinte forma:
 destination port identifica o processo servidor; estes endereços estão definidos na última RFC que descreve o padrão 2 (documento STD 2) do IETF
 source port contém um endereço gerado randomicamente que identifica o processo cliente
O nó 10.0.0.1, ao receber este segmento, irá verificar se a aplicação está ativa antes de dar o aceite do pedido de estabelecimento de sessão através do segmento SYN-ACK.
Os endereços dos ports TCP estão definidos no padrão 2 (documento STD 2) do IETF. Os números dos ports estão divididos nos seguintes grupos:
 de 0 a 254: reservados para aplicações de domínio público
 de 255 a 1023: reservados para aplicações comerciais cadastradas
 acima de 1023: desregulamentado
São chamados de well-known ports os ports situados na faixa de 1 a 1023.
Cada segmento TCP enviado tem um número de sequência para que o módulo TCP no nó destino possa reordena-los na chegada. 
Quando o nó destino recebe um segmento, envia uma confirmação através de um segmento TCP com o campo Acknowlege preenchido. Neste campo está o número de sequência do próximo segmento esperado, indicando para o nó origem o correto recebimento, pelo nó destino, dos pacotes anteriores.
O sequenciamento dos pacotes TCP é orientado a byte. O número de sequência do segmento é sempre igual ao número de sequência do segmento anteriormente transmitido, somado ao número de bytes transmitidos. O primeiro número de sequência é gerado randomicamente, e é determinado no estabelecimento da conexão TCP.
A confirmação de entrega dos segmentos TCP é também orientada a byte. O valor do campo acknowledgement de um segmento é sempre igual ao número de sequência do segmento que está sendo confirmado somado ao número de bytes recebidos.
Este valor indica para o nó origem o número de sequência do próximo segmento que o nó destino espera receber.
O ACK pode ser cumulativo, sendo enviado após o recebimento de todos os segmentos. Neste caso, o valor do campo acknowledgement será a soma do último número de sequência confirmado com o número de bytes recebidos. 
O segmento ACK poderá estar acompanhado de dados, sendo denominado ack piggybacking.
O controle de fluxo do TCP é implementado através de um mecanismo de janela. A janela define quantos bytes podem ser enviados sem a necessidade do recebimento de uma confirmação. Esta janela está relacionada ao tamanho do buffer de recepção do destinatário, e o seu valor inicial é informado quando do estabelecimento da sessão TCP. No diagrama acima, a estação de trabalho só poderá enviar até 2.000 bytes de dados ao servidor sem que haja recebimento de confirmação dos pacotes enviados.
No entanto, o tamanho da janela do TCP é ajustado dinamicamente de acordo com a disponibilidade de buffers no receptor. Este mecanismo implementa o controle de fluxo fim-a-fim: se o servidor detectar que a estação está enviando um número de pacotes maior do que sua capacidade de recepção, ele sinalizará no segmento de ACK ou de dados um valor menor para a janela TCP, forçando uma diminuição na taxa de transferência de pacotes.
A confiabilidade do TCP garante que os segmentos serão entregues ao seu destino sem que haja duplicação ou perda de pacotes. A técnica denominada positive acknowledgement with retransmission (confirmação positiva com retransmissão) assegura tal confiabilidade.
A estação de origem mantém um registro dos segmentos enviados que esperam confirmação. Toda vez que é enviado um segmento, é inicializado um temporizador. Se o temporizador expirar antes que a confirmação tenha chegado, ocorrerá uma retransmissão.
No diagrama acima, a estação origem enviou inicialmente os segmentos com número de sequência 101, 201 e 301. O destino confirmou a chegada de todos os segmentos com um ACK de número 401. A origem, ao receber esta confirmação, enviou mais três segmentos. Entretanto, devido a erros na rede, o segmento com número de sequência 501 chegou corrompido ao destino e foi descartado. Neste ponto entrou em ação o mecanismo de confiabilidade do TCP. 
Para cada pacote enviado existe um temporizador. A estação origem ficou à espera da confirmação dos segmentos enviados. Chegou um ACK de número 501, confirmando o segmento 401. Os temporizadores dos segmentos pendentes continuaram decrementando. Após expirar o tempo de retransmissão, a estação origem retransmitiu o segmento 501. A estação destino, após receber corretamente este pacote enviou um ACK de número 701 (ACK acumulativo), confirmando a recepção dos segmentos 501 e 601. 
A estação destino deve, através do número de sequência, ordenar os segmentos recebidos e passar o dados para a aplicação.
A retransmissão dos segmentos TCP ocorre por timeout, evitando pacotes desnecessários e reduzindo ao mínimo o overhead de protocolo. Não existe pacote de NACK. 
O intervalo de retransmissão é adaptativo, sendo ajustado dinamicamente em função do meio de transmissão e do tráfego na rede. Este intervalo de retransmissão é denominado RTT (Round-trip Time).
A RFC que define o TCP não faz nenhuma restrição quanto à forma de retransmissão dos pacotes TCP. É permitido retransmitir apenas o primeiro pacote que não obteve confirmação ou retransmitir todos os pacotes. 
Os campos source port e destination port do cabeçalho TCP contém respectivamente os endereços dos processos origem e destino.
Cada segmento tem um número de sequência (sequence number) para que o módulo TCP destino possa ordenar a mensagem na chegada. No campo acknowledgement number tem-se o número do segmento esperado, que servirá para o nó origem identificar os segmentos anteriores que foram enviados com sucesso.
O campo hlen indica o tamanho, em palavras de 32 bits, do cabeçalho TCP. Os seguintes bits, quando ligados, indicam o tipo de segmento:
 URG - sinaliza eventos assíncronos
 ACK - indica que é um segmento de ACK
 PSH - indica que este segmento requer urgência
 RST - indica segmento de término de sessão TCP de forma abrupta RESET
 SYN - indica segmento de pedido de estabelecimento de sessão TCP
 FIN - indica segmento de término de sessão TCP de forma natural FIN
O campo header checksum contém o resultado do cálculo do checksum do cabeçalho TCP. O campo window define o tamanho, em bytes, da janela.
O campo urgent pointer é usado para sinalizar eventos assíncronos através do envio de caracteres de controle ou de outros comandos de interrupção.
O UDP é um protocolo de transporte não orientado à conexão. Possui um cabeçalho menor que o TCP (8 bytes) e não faz sequenciamento dos pacotes, deixando esta tarefa a cargo da aplicação.
Os endereços dos ports UDP estão definidos no padrão 2 (documento STD 2) do IETF. Os números dos ports estão divididos nos seguintes grupos:
 de 0 a 254: reservados para aplicações de domínio público
 de 255 a 1023: reservados para aplicações comerciais cadastradas
 acima de 1023: desregulamentado
São chamados de well-known ports os ports situados na faixa de 1 a 1023.
A transição de um pacote entre os níveis do modelo OSI é feita através da identificação do valor de um campo no cabeçalho que apontará de forma única para o nível imediatamente superior.
Quando um pacote TCP/IP chega na interface de comunicação, esta identificará se o pacote é seu lendo o endereço MAC. Se o endereço destino MAC do pacote coincidir com o endereço MAC gravado na placa de comunicação, o pacote é entregue para o nível de enlace.
O nível de enlace analisará
o campo type (Ethernet II), SAP (LLC 802.2) ou Protocol (SNAP) de modo a entregar o pacote para o protocolo de rede correto (IP, IPX, DECnet). No caso do IP, será analisado o campo protocol para que o protocolo de transporte (TCP ou UDP) seja identificado. O transporte, por sua vez, consultará o valor contido no campo port do seu cabeçalho para saber a aplicação destino.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando