Faculdade de Tecnologia Senac Pelotas
Curso Superior em Tecnologia de Redes de Computadores
Unidade Curricular - Redes de Computadores II
Prof. Eduardo Maroñas Monks
Camada de Transporte:
protocolo TCP
Parte 1
Sumário

Funções da camada de transporte

Protocolo TCP

Características do TCP

Estados do TCP

API do TCP

Referências Bibliográficas
2
Camada de Transporte


A camada de Transporte é o link
entre a camada de Aplicação e a
camada de rede, que são
responsáveis pela transmissão na
rede.
Esta camada aceita dados de
diferentes conversações e os passa
para as camadas inferiores como
segmentos gerenciáveis que podem
ser repassados ao meio físico.
3
Camada de Transporte
PING
User
Process
Firefox
User
Process
Cliente de NTP
User
Process
TCP
User
Process
Application
Layer
UDP
Transport
Layer
ICMP
IP
IGMP
Network
Layer
ARP
Hardware
Interface
RARP
Link Layer
Media
4
Camada de Transporte
●
●
Os protocolos da camada de transporte têm a
função de possibilitar a comunicação fim a fim
entre os hosts
São protocolos implementados nos hosts que
Apache:80
hospedam
aplicações
de
usuário
HOST
HOST
Firefox:2012
Application
Application
Transport
Network
Data Link
Transport
Network
Data Link
Network
Data Link
Data Link
5
Camada de Transporte
Os dois protocolos principais do modelo TCP/IP são o
UDP
e o TCP
UDP
– (User
Datagram Protocol)
TCP – (Transmission Control
●
 Orientado a datagramas
 Sem recursos de
confiabilidade, sem conexão
 Simples
 Transmissões em unicast e
multicast
 Útil somente em algumas
aplicações, por exemplo
áudio e vídeo, jogos e
multicast
 Muito usado em serviços,
tais como: gerenciamento da
rede (SNMP), roteamento
(RIP), resolução de nomes
(DNS).





Protocol)
Orientado por fluxo
Com recursos de
confiabilidade, e orientado a
conexão
Complexo
Somente transmissões em
unicast
Usado pela maioria das
aplicações na Internet:
 web (HTTP), e-mail (SMTP),
transferência de arquivos
(FTP), terminal remoto
(telnet e SSH), etc.
6
Protocolo TCP
O protocolo TCP (Transmission Control
Protocol) definido na RFC 793, possui as
seguintes facilidades para a camada de
aplicação:
Recuperação de erros;
Controle de fluxo;
Confiabilidade;
Orientado à conexão;
7
O conceito TCP
O principal objetivo do TCP é
fornecer um serviço de conexão
entre dois pares de processos.

O protocolo não conta com a
confiabilidade dos protocolos de
mais baixo nível (por exemplo IP).

Antes de qualquer transferência de
dados, o protocolo TCP estabelece
uma conexão

8
O conceito TCP
Um dos participantes é o cliente (o
qual inicia a conexão) e o outro é o
servidor (o que aguarda a conexão).

Após a conexão ser estabelecida, é
criada uma via de comunicação bidirecional entre as duas aplicações.

9
Características do TCP
Transferência de fluxo de dados;
Confiabilidade;
Controle de fluxo;
Multiplexação;
Conexões lógicas;
Comunicação Bi-direcional.

10
Características do TCP
Transferência de fluxo de dados:
Do ponto de vista da aplicação, o TCP
transfere um fluxo contínuo de bytes
através da rede.
Desta forma a aplicação não precisa
controlar a divisão dos dados em
blocos.
Os dados são divididos em segmentos e
enviados para a camada de rede

11
Serviço de fluxo de bytes
Para as camadas inferiores, o TCP
manipula os dados em blocos, os chamados
SEGMENTOS
Para as camadas superiores, o TCP
manipula os dados como uma sequência de
bytes e não identifica limites entre os bytes
(fluxo contínuo)
Application
Application
1. write 100 bytes
2. write 20 bytes
Observação: as camadas
superiores não sabem ondem
começam ou terminam os
TCP
SEGMENTOS!
queue of
bytes to be
transmitted
Segments
1. read 40 bytes
2. read 40 bytes
3. read 40 bytes
TCP
queue of
bytes that
have been
received
12
Características do TCP
Confiabilidade:
Detecção de erros:
Segmentos com
O TCP assume um número de seqüência
checagem de
para cada byte transmitido
e espera
um
integridade
(campo
checksum
) falhosdo
reconhecimento
positivo
(ACK)
são descartados no
receptor.
destino.
Se esta confirmação não é recebida dentro de um
tempo estabelecido, os dados são retransmitidos.
Um
temporizador é utilizado para cada conexão
TCP.
Os números de seqüência também são usados para
reordenar os segmentos quando estes chegam
foram de ordem ou para eliminar os segmentos
duplicados.
13
Medições de Round-Trip Time
O mecanismo de retransmissão do TCP é adaptativo
Os temporizadores de retransmissão são configurados
baseados nos tempos chamados de round-trip time
(RTT) (tempo de ida e volta) que o TCP calcula
Segment 1
RTT #1
nt 1
e
ACK for Segm
Segment 2
Segment 3
RTT #2
O RTT é baseado na
diferença de tempo entre a
transmissão do segmento e
o recebimento do ACK
O valor do RTT é
calculado levando em
conta a média dos tempos
egment 2
ACK for S
Segment
+3
Segme
5
nt 4
RTT #3
egment 4
ACK for S
egment 5
ACK for S
14
Características do TCP
Controle de fluxo:
Os hosts de rede têm recursos
limitados, como memória e largura de
banda.

Quando a camada de Transporte está
ciente de que esses recursos estão
sobrecarregados,
alguns
protocolos
podem solicitar que a aplicação de envio
reduza a taxa de fluxo de dados.

15
Características do TCP
Controle de fluxo:
Isto é feito na camada de Transporte
regulando a quantidade de dados
agrupados que a origem transmite.

O controle de fluxo pode prevenir a
perda de segmentos na rede e evitar a
necessidade de retransmissão.

16
Controle de Fluxo
O protocolo TCP utiliza uma versão do
mecanismo de controle de fluxo em janela
Tamanho da Janela:
deslizante
Cada
da conexão
anuncia o seu tamanho
de
Olado
envio
de reconhecimentos
é separado
janela que é o máximo número de bytes que o
da
configuração
do
tamanho
da
janela
do
receptor pode aceitar
emissormáximo é 216 = 65535 bytes
O tamanho
Os
reconhecimentos
não
(Uso
de multiplicador
de janela
nasaumentam
opções, pode
aumentar
para 1GByte) o tamanho da janela de
automaticamente
http://en.wikipedia.org/wiki/TCP_window_scale_option
transmissão
Durante o estabelecimento da conexão, os
participantes configuram o tamanho inicial da
janela deslizante
17
Características do TCP
Multiplexação:
Ativado através do uso de portas, tal como no
protocolo UDP.
Podem haver muitas aplicações ou serviços
sendo executados em cada host na rede.
Cada
uma destas aplicações ou serviços é
designado a um endereço conhecido como
uma porta
A aplicação ou serviço sendo executado no
host será identificado pela porta

18
Características do TCP
Conexões lógicas:
Os
mecanismos
que
garantem
a
confiabilidade e o controle de fluxo obrigam
que o TCP inicialize e mantenha informações
do status de cada fluxo de dados.
A combinação deste status, incluindo sockets,
números de seqüência e tamanhos de janelas é
chamado de conexão lógica.
Cada conexão é unicamente identificada pelo
par de sockets usados pelo processos que
estão enviando e recebendo dados.

Exemplo de identificação de conexão lógica:
(tcp,192.168.200.254:2012, 200.18.98.87:80)
19
Características do TCP
Comunicação Bi-direcional:
O TCP provê comunicação em ambas as
direções entre fluxos de dados concorrentes.
Ao
se estabelecer uma conexão, os dados
podem ser enviados e recebidos pela mesma
conexão lógica.

20
Princípio de Janela
A forma mais simples de um protocolo
garantir a entrega de um pacotes é a seguinte:
Enviar um pacote;
Esperar
um reconhecimento por parte do
receptor da chegada do pacote;
Após
o recebimento do reconhecimento,
enviar o próximo pacote;
Se um reconhecimento não for recebido por
determinado tempo, retransmitir o pacote.

21
Princípio de Janela
Embora
este
mecanismo
garanta
a
confiabilidade na entrega dos pacotes, usa
somente parte da largura de banda da rede
disponível.
22
Princípio de Janela
Outra forma de enviar pacotes com confiança e
aproveitar melhor a rede, poderia usar as seguintes
regras:
- O emissor pode enviar todos os pacotes dentro de
uma janela (conjunto de pacotes) sem receber um
reconhecimento (ACK), mas deve iniciar um contador
para cada um dos pacotes enviados;
- O receptor deve reconhecer cada pacote recebido,
indicando o número de seqüência do último pacote
recebido;
- O emissor desliza a janela a cada ACK recebido.
23
Princípio de Janela
Neste exemplo o emissor pode transmitir os
pacotes 1 até o 5 sem esperar por nenhum ACK:
No momento que o emissor recebe um ACK 1
(reconhecimento para o pacote 1), ele pode deslizar a
janela em um pacote para a direita. Neste ponto, o
emissor pode enviar o pacote 6.
24
Princípio de Janela
O mecanismo de Janela Deslizante garante:

Transmissão confiável;

Melhor uso da largura de banda da rede;
Controle de fluxo, já que o receptor
pode demorar para responder a um
reconhecimento de um pacote, sabendo
do seus buffers livres e do tamanho da
janela na conexão.

25
Princípio de Janela aplicado ao TCP
O mecanismo de Janela Deslizante é usado no TCP,
mas com algumas diferenças:
O TCP provê um conexão orientada a fluxo
de bytes, números de seqüência são gerados
para cada byte no fluxo de dados.
O
TCP divide este fluxo contínuo em
segmentos
O tamanho da janela será determinado pelo
receptor quando a conexão é estabelecida e
poder ser variável durante a transferência de
dados.
Cada ACK carregará o tamanho da janela.

26
Princípio de Janela aplicado ao TCP
O fluxo de dados do emissor pode ser visto
como:
Demonstração do Sliding Windows do TCP
Onde:
A – Bytes que
B – Bytes que
reconhecidos;
C – Bytes que
reconhecimento;
D – Bytes que
foram transmitidos e já reconhecidos;
foram enviados mas não foram ainda
podem ser enviados sem esperar por nenhum
não podem ser enviados ainda.
27
Formato do segmento TCP
IP header TCP header
20 bytes
TCP data
20 bytes
0
15 16
Source Port Number
31
Destination Port Number
Sequence number (32 bits)
header
length
0
Flags
TCP checksum
20 bytes
Acknowledgement number (32 bits)
window size
urgent pointer
Options (if any)
DATA
28
Formato do segmento TCP
Source Port – número da porta de origem (16 bits);
Destination Port – número da porta de destino (16 bits);
Sequence Number – número de seqüência do primeiro

byte neste segmento. Se o bit de control SYN estiver setado, o
número de seqüência é o número de seqüência inicial (n) e o
primeiro byte de dados é n+1.
Acknowledgment Number – se o bit de controle ACK
estiver setado, este campo contêm o valor do próximo número
de seqüência que o receptor está esperando receber.
Data Offset – contêm o número de palavras de 32 bits no
cabeçalho. Indica onde começa a parte de dados no segmento.
Reserved – reservado para uso futuro, deve ser zero.

Window – usado em segmento ACK. Especifica os número de
bytes de dados, começando pelo indicado no campo do número
de ACK, que o receptor está aceitando receber.
Checksum - soma de verificação gerada em um pseudocabeçalho.
29
Formato do segmento TCP
(Flags de Controle)
URG – indica se o campo de urgência é
significativo neste segmento.
ACK – indica se o campo acknowldegment é
significativo neste segmento.
PSH
– função PUSH (envia o restante dos
segmentos antes de encerrar um conexão).
RST – reseta a conexão.
SYN – sincroniza os números de seqüência.
FIN
– sem mais dados do emissor (finaliza
conexão).

30
Reconhecimentos e Retransmissões
O TCP envia dados em segmentos de tamanhos
variáveis. Os reconhecimentos especificam o número
de seqüência do próximo byte que o receptor espera
receber.

Considerando que um segmento pode se perder ou se
tornar corrompido, o receptor deve reconhecer todos
os segmentos posteriores que forem recebidos ok,
fazendo referência ao primeiro byte do pacote perdido.

O emissor irá parar de transmitir quando tiver enviado
todos os bytes na janela atual. Um timeout irá ocorrer
e o segmento faltante irá ser retransmitido.

31
Reconhecimentos e Retransmissões
No diagrama, o tamanho da janela é de 1500 bytes e o tamaho dos
segmentos são de 500 bytes.
32
Reconhecimentos e Retransmissões
Intervalos variáveis de Timeout:
Cada implementação de TCP adapta de forma
diferente os valores de tempos de timeout
entre o envio e o recebimento de segmentos.

Este tempos devem ser
condições de tráfego da rede.

adaptáveis
as
33
Estabelecimento de uma conexão TCP
Antes de qualquer dado ser transmitido, uma
conexão deve ser estabelecida entre dois
processos.

Um destes processos, normalmente um
servidor, implementa um chamada passiva de
OPEN (passive OPEN) e outro processo uma
chamada ativa de OPEN (active OPEN).

A chamada passiva de OPEN permanece em
espera até que outro processo tente se
conectar a ela através de uma chamada de
OPEN ativa.

34
Estabelecimento de uma conexão TCP
3-WAY Handshake:
É
chamado
o
processo
de
estabelecimento de conexão no protocolo TCP.
Três segmentos de controle são trocados entre
os processos:
35
Encerrando uma conexão TCP
O fechamento de um conexão é feito através do envio de
um segmento com o bit de controle FIN setado.
Já que a conexão é bi-direcional o segmento FIN só
encerra a transferência de um lado.
O outro processo irá enviar os dados remanescentes e
também irá enviar um segmento FIN, no término do
envio.
A
conexão é desfeita quando ambos os lados
fecharem seus fluxos de dados.

36
Encerrando uma conexão TCP
O fechamento de um conexão pode ser feito com o uso da
flag RESET.
É uma forma mais rápida de encerramento de
conexões
Quando a porta não está em estado de LISTENING, o
host retorna um segmento com a flag RESET

Encerramento da conexão com
o uso da flag RESET
Tentativa de acesso em porta inexistente
37
Estados do TCP
Durante o ciclo de vida de uma conexão
TCP, podem ocorrer diversos estados.
Prática com a ferramenta TCP View
38
Estados do TCP
Procedimento normal de abertura e fechamento
de conexão
LISTEN
SYN (S
SYN_SENT
(active open)
eqNo = x)
AckNo
,
y
=
o
N
q
e
(S
SYN
=x+1)
(passive open)
SYN_RCVD
(AckNo = y + 1 )
ESTABLISHED
ESTABLISHED
FIN_WAIT_1
(active close)
FIN_WAIT_2
TIME_WAIT
FIN (SeqNo = m)
(AckNo = m+ 1 )
CLOSE_WAIT
(passive close)
FIN (SeqNo = n )
(AckNo =
LAST_ACK
n +1 )
CLOSED
39
Estados do TCP
Transições de estado na abertura de conexão
CLOSED
passive open
send: . / .
LISTEN
recv:
RST
close or
timeout
active open
send: SYN
Application sends data
send: SYN
recv: SYN
send: SYN, ACK
SYN RCVD
recvd: ACK
send: . / .
send:
FIN
simultaneous open
recv: SYN
send: SYN, ACK
SYN SENT
recv: SYN, ACK
send: ACK
ESTABLISHED
recvd: FIN
send: FIN
40
40
Estados do TCP
Transições de estado no fechamento de conexão
active close
send: FIN
ESTABLISHED
FIN_WAIT_1
recv: ACK
send: . / .
passive close
recv: FIN
send: ACK
recv: FIN
send: ACK
recv:
FIN, ACK
send: ACK
FIN_WAIT_2
recv: FIN
send: ACK
CLOSING
recvd: ACK
send: . / .
CLOSE_WAIT
application
closes
send: FIN
LAST_ACK
TIME_WAIT
Timeout
(2 MSL)
recv: ACK
send: . / .
CLOSED
41
Bibliografia
RODRIGUEZ, Adolfo; GATRELL, John; KARAS, John;PESCHKE,
Roland. TCP/IP Tutorial and Technical Overview. IBM Red Books,
2006. Disponível em:

http://www.redbooks.ibm.com/Redbooks.nsf/RedbookAbstracts/gg243376.html
KUROSE, J.;ROSS, K. Redes de computadores e a Internet –
Uma abordagem top-down. 3ª edição. Editora Pearson, 2006.
COMER, Douglas. Interligação em Rede com TCP/IP – Volume I.
3ª Edição. Editora Campus, 1998.
WIRESHARK. Wiki. Disponível em http://wiki.wireshark.org/

42
Download

Slide sem título