Você está na página 1de 35

TCP – Protocolo de Transporte

TCP - TRANSMISSION CONTROL


PROTOCOL

Funcionamento e Conceito

280805
Bruno Roberto
OBJETIVO: Conceitos que devem ficar
sobre o TCP
 TCP é um protocolo FIÁVEL
 Oferece confiança na transferência, sob um
protocolo de Rede não confiável
 Somente trabalha em cima de Circuito Virtual (VC)
 Orientado Principalmente à Circuito Virtual
 Aproveita melhor a velocidade de qualquer Rede
(Conceito de Janela)
 Início e Fim de uma Conexão Virtual
 Conceito de Portas e SOCKET
 Flexibilidade para trabalhar em grande variedade de
Redes
OBJETIVO: Conceitos que devem ficar
sobre o TCP
 Mede periodicamente o Tempo de “Time
Out” ou Round Trip Time
 Através do “Round Trip Time”, pode medir o
tempo da Janela e ainda supor que o pacote
foi perdido
 Conhecer as FLAG´s do TCP
 Conceito de MSS e Fragmentação
 O TCP é um protocolo de comunicação e
não um software
TCP – Definição da RFC

 O Protocolo TCP é definido pela RFC 793,


publicado pela primeira vez em 1981

 http://www.ietf.org/rfc.html
TCP – Formato de mensagens

 Cada mensagem TCP é conhecida como


“segmento de usuário”.

 O “segmento” consiste em:

 Cabeçalho TCP + área de dados TCP

Cabeçalho TCP Área de dados TCP


TCP – Formato de mensagens
Cabeçalho TCP Área de dados TCP

Porta de Origem TCP Porta de Destino TCP


Número de sequência
Número do reconhecimento
Hlen Reservado Flags Janela
CheckSum Ponteiro Urgente
Opções (se houver) Enchimento

DADOS
O DATAGRAMA TCP
UDP – Formato de Mensagem

Aplicação do Usuário
Aplicação

Host- to
- Cabeçalho TCP Área de Dados TCP
Host
Internet
Cabeçalho IP Área de Dados IP

Acesso Cabeçalho
Quadro Área de Dados do Quadro
TCP – Protocolo Fiável

 Conexão de Circuito Virtual


 Antes que a transmissão se inicie, os programas
aplicativos do transmissor e do receptor entram
em “acordo” e iniciam um Circuito Virtual (VC)

 Orientação do Stream
 É o conjunto de bits, dividido em octetos (bytes)
 Segmento
TCP – Protocolo Fiável

 Transmissão “bufferizada”
 Reúne uma quantidade de pacotes para depois
transmitir, para a Aplicação (no caso do
recebimento) ou para a camada de Rede (no
caso do envio)

 Conexão “Full-Duplex”
 Ao estabelecer um “VC”, é criado uma estrada de
duas vias, aonde pode-se enviar e receber ao
mesmo tempo, sem perdas. Ao final da Conexão,
deve-se encerrar as duas vias.
TCP – Protocolo Fiável
O Circuito Virtual - “VC”
 Como um protocolo pode oferecer uma
transferência confiável se o sistema básico
de comunicação (IP) é não confiável ?

 A resposta é: O TCP utiliza uma técnica


única e fundamental conhecida como
confirmação positiva com retransmissão
TCP – Protocolo Fiável
O Circuito Virtual - “VC”
 A técnica exige que um receptor comunique-se com
a origem, retornando uma mensagem de
confirmação (ACK), à medida que recebe os dados

 Entre o envio de um pacote e o recebimento de um


ACK, é computado o tempo de RTT (Round Trip
Time)

 O TCP também possui o CHECKSUM para verificar


a integridade de cada pacote
TCP – Protocolo Fiável
O Circuito Virtual - “VC”
Ocorrências na Ocorrências na
Instalação do Instalação do
Transmissor Receptor

Envia Pacote 1
Recebe o Pacote 1
Envia a ACK 1
Recebe a ACK 1
Envia o Pacote 2
Recebe o Pacote 2
Envia a ACK 2

Recebe a ACK 2
TCP – Protocolo Fiável
“VC” – Problemas na Transmissão
Ocorrências na Ocorrências na
Instalação do Instalação do
Transmissor Receptor
Envia Pacote 1
Inicia o Timer
(Round Trip Time) Pacote deveria chegar
ACK deveria ser enviada
A ACK chegaria
normalmente nesta hora

O Timer Termina

Retransmite o Pacote 1
Inicia o Timer
Recebe o Pacote 1
Envia a ACK 1
Recebe o ACK 1
Cancela o Timer
TCP – Conceito de Janela Deslizante

 Um protocolo simples, de confirmação positiva (sem


o conceito de janela deslizante) gasta uma grande
quantidade de largura de banda, porque precisa
retardar a transmissão de um novo pacote, até que
receba uma confirmação sobre o anterior.

 O TCP é um protocolo de Janela deslizante, o que


permite o mesmo, manter a rede completamente
saturada de pacotes. Obtendo assim, um
“throughput” substancialmente maior do que um
protocolo simples de confirmação positiva
TCP – Conceito de Janela Deslizante
Janela Inicial

1 2 3 4 5 6 7 8 9 10
...

(a)

A Janela Desliza

1 2 3 4 5 6 7 8 9 10
...

(b)
TCP – Conceito de Janela Deslizante

 No próximo Slide veremos um exemplo de


três pacotes transmitidos com um protocolo
de janela deslizante. O conceito principal é
que o transmissor pode transmitir todos os
pacotes da janela sem aguardar uma
confirmação
TCP – Conceito de Janela Deslizante
Eventos na Eventos na
Instalação do Instalação do
Transmissor Receptor

Envia o pacote 1
Recebe o Pacote 1
Envia o pacote 2 Envia a ACK 1
Recebe o Pacote 2
Envia o pacote 3 Envia a ACK 2
Recebe o pacote 3
Recebe a ACK 1 Envia a ACK 3

Recebe a ACK 2

Recebe a ACK 3
TCP – Início de uma conexão
Open Ativo Open Passivo
 CLOSED  LISTEN

SYN
 SYN_SENT

SYN+ACK  SYN_RECVD
 ESTABLISHED
ACK
 ESTABLISHED

3 WAY HANDSHAKE
TCP – Início de uma conexão
Conexão TCP Estabelecida, cria duas “estradas”

FULL DUPLEX
TCP – Término de uma conexão
 ESTABLISHED  ESTABLISHED

 FIN_WAIT FIN

 CLOSE_WAIT
ACK

FIN
 LAST_ACK
 FIN_WAIT 2
 TIME_WAIT
ACK  CLOSED

3 WAY HANDSHAKE modificado, para encerrar conexões


TCP – Conceito de Portas – Como
Funciona
Portas conhecidas: “Well Known Ports”
0 à 1023

Portas Registradas “Registered Ports”


1024 à 49151

Portas Dinâmicas e/ou Privadas “Dynamic and/or


Private Ports”

49152 à 65535
TCP – Conceito de Portas – Como
Funciona
 São definidas pelo IANA

 http://www.iana.org/assignments/port-
numbers

 Definições do IANA valem para o TCP e o


UDP
TCP – Conceito de Socket

 O TCP utiliza a conexão (VC), e não a porta


de protocolo, como sua ABSTRAÇÃO
PRINCIPAL.

 As conexeções são identificadas por um par


de pontos terminais
TCP – Conceito de Socket

 O TCP define um “Ponto Terminal” como um


par de números inteiros (host, porta)

 Host é o endereço IP para um host


 Porta, é uma porta TCP naquele host

 Exemplo:
 Ponto terminal: 200.50.6.2 , 25
 Ponto Terminal é chamado de SOCKET
TCP – VC entre 2 Sockets

 Exemplo de conexões estabelecidas:

 (200.165.8.2 , 4625) e (204.66.72.1 , 25)


 (202.5.5.2 , 1185) e (204.66.72.1 , 25)

 Pode parecer estranho que duas conexões


possam utilizar a porta TCP 25 na máquina
204.66.72.1 simultaneamente, mas, não há
problemas nisto.
TCP – Várias Conexões na Mesma Porta

 Já que o TCP identifica uma conexão por


meio de um par de pontos terminais (2
socket´s), determinado número de portas
TCP pode ser compartilhado por várias
conexões na mesma máquina
TCP – Conceito de Conexões
Servidor – 10.1.1.2

.1 .2, 2
5) Porta TCP 25
. 1
9 5) e (1 0
18
1 0 . 1 .1.5,
( 25)
. 2 ,
Estação A (10.
1. 1
e
, 1 696) )
. 1.1. 5 2 5 2 5)
(10 ,
.1.1.2 .1 .2,
e (10 1 0.1
5 ) e
(
2 5)
239
0, 9 7) . 2,
.1.1.1 Estação B 5 , 2 5
0. 1.
1
(10 .1.2 (1
.0 e
(10 5 6 Estação F
10
),
.1
.5
Estação D 0. 1
(1
(10.0.1.67, 1895) e (10.1.1.2, 25)
TCP - Flags

 URG – Ponteiro Urgente é válido


 ACK – Campo de reconhecimento
 PSH – Segmento requer Push
 RST – Restabelecer conexão
 SYN – Sincronizar os números de sequência
 FIN – Pedido para finalizar a conexão
TCP – Conceito de Fragmentação

 Quando um determinado conjunto de dados a ser


transportado excede o “limite de carga”, estes
dados são divididos em vários pacotes para que
possam trafegar dentro do padrão da rede. Este
limite dentro da camada TCP é chamada de MSS
(maximum segment size)

 O MSS, é definido de acordo com o MTU (Maximum


Transfer Unit), que é a capacidade ou tamanho
máximo que o Enlace consegue levar.
TCP – Siglas Importantes

 MSS (Maximum Segment Size)


 MTU (Maximum Transfer Unit)
 RTT (Round Trip Time)
 MSL (Maximum Segment LifeTime)
 SOCKET (IP + Porta)
 STREAM (Conjunto de Segmentos)
TCP – Exemplos de Portas Registradas

 0/tcp Reserved
 systat 11/tcp Active Users
 ftp-data 20/tcp File Transfer [Default Data]
 ftp 21/tcp File Transfer [Control]
 smtp 25/tcp Simple Mail Transfer
 pop3 110/tcp Post Office Protocol - Version
3
 imap 143/tcp Internet Message Access
Protocol
A “Máquina de Estado” TCP

 Por ser um Protocolo Baseado em


Conexões, CADA conexão TCP pode passar
por vários “Estados de Conexão”

 É a “especificação funcional” do TCP

 São 11 ESTADOS em que um Host que esta


utilizando o TCP, pode se encontrar
Fim