Upload
internet
View
104
Download
0
Embed Size (px)
Citation preview
Transmission Control Protocol TCP
Introdução, apresentação em três vias, Campos do protocolo e estados
da conexão
TCP
• A confiabilidade dos processos de comunicação foi deixada a cargo do TCP
• O TCP é um protocolo:– Orientado à conexão– Confiável
11/04/23 Profº André Luiz Silva 2
Número de portas
• Assim como o UDP o TCP também utiliza número de portas como endereços
• O número da porta é atribuído pela aplicação independentemente se o protocolo utilizado será o UDP ou o TCP
11/04/23 Profº André Luiz Silva 3
Aplicações que usam TCP
11/04/23 Profº André Luiz Silva 4
Fluxo de entrega TCP
• Fluxo do serviço de entrega
11/04/23 Profº André Luiz Silva 5
Segmentos
• As entidades transmissoras e receptoras trocam bytes na forma de segmentos.
• Um segmento TCP consiste em um cabeçalho de 20 bytes, seguidos por um campo opcional, seguido de zero ou mais bytes de dados.
• Ele pode acumular dados de várias gravações em um único segmento ou dividir os dados de uma única gravação em vários segmentos.
Restrições ao tamanho do cabeçalho
• Dois fatores restringem o tamanho de um cabeçalho TCP:– Cada segmento, incluindo o cabeçalho, devem
caber no campo de dados de um datagrama IP.• 65.515 bytes.
– Cada segmento deve caber na MTU no receptor e no transmissor. • No Ethernet, 1500 bytes.
Buffers de transmissão e recepção
• Os processos podem não consumir e produzir dados à mesma velocidade.
• Bufferização:– Buffer de recepção– Buffer de transmissão– Buffers do tipo FIFO (first-in first-out)
11/04/23 Profº André Luiz Silva 8
Buffers de transmissão e recepção
11/04/23 Profº André Luiz Silva 9
Buffers de transmissão
• Três entradas– Entradas vazias possíveis de serem preenchidas– Área cinza esperando a chegada de ACKs– Área contendo os bytes que já estão prontos para
serem enviados
11/04/23 Profº André Luiz Silva 10
Buffers de recepção
• Duas entradas– Entradas vazias aguardando bytes oriundos da
rede– Entradas que possuem bytes recebidos
aguardando verificação e utilização pelo processo receptor
11/04/23 Profº André Luiz Silva 11
Bytes e segmentos• A bufferização controla a disparidade de velocidade
entre os processos transmissores e receptores.• Porém, existe uma etapa a mais antes da transmissão de
dados. Esta etapa é realizada pelo IP• Os segmentos TCP são encaminhados à camada de rede
que os encapsula em datagramas IP– Os datagramas, como sabemos, podem chegar fora de ordem,
serem perdidos, corrompidos ou retransmitidos
11/04/23 Profº André Luiz Silva 12
Serviço full-duplex
• O TCP oferece serviço em modo full-duplex.• Ou seja, existem buffers de recepção e
transmissão em ambas as direções.
11/04/23 Profº André Luiz Silva 13
Serviço orientado à conexão
• O protocolo TCP que cuida dos processos de A solicita ao protocolo TCP de B, que cuida dos processos de B, aprovação para iniciar a transmissão
• O TCP de A e de B trocam dados em ambas as direções
• Quando os processos não tiverem dados a transmitir, os buffers tornam-se vazios e são reciclados
11/04/23 Profº André Luiz Silva 14
Serviço confiável
• O TCP utiliza um mecanismo de confirmação (ACK) para verificar a integridade dos dados.
• Cada byte dentro de um segmento TCP tem o seu próprio número de sequência de 32 bits.
• Cada segmento enviado é identificado e confirmado pelo destino através do envio de um pacote de reconhecimento (ack).
11/04/23 Profº André Luiz Silva 15
Numeração de bytes• O TCP numera todos os bytes de dados que são
transmitidos por uma conexão.• A numeração é independente em cada direção• Isto ocorre quando o TCP recebe os dados do processo e
os armazena no buffer de envio• O valor inicial é estabelecido por um gerador de
números aleatórios entre 0 e 2³² - 1– Exemplo:
• Se o número aleatório for escolhido como 1057 e a quantidade de bytes for 6000 bytes, os bytes serão numerados de 1057 a 7056
11/04/23 Profº André Luiz Silva 16
Numeração do segmento
• O TCP mantém registro dos segmentos transmitidos e/ou recebidos. Porém, não há um campo específico para o número do segmento. Ao invés disso:– Número de seqüência– Número de confirmação• Estes dois números referem-se ao número de bytes e
não ao número de segmentos
11/04/23 Profº André Luiz Silva 17
Número de seqüência
• Após os bytes terem sido numerados, o TCP atribui um número de sequencia para cada segmento transmitido.
• O número de seqüência é igual ao número do primeiro byte transportado nesse segmento.
11/04/23 Profº André Luiz Silva 18
Exemplo
11/04/23 Profº André Luiz Silva 19
Número de confirmação
• O número ACK define o número do próximo byte que o protocolo TCP do receptor espera receber.
• Lembre-se que a comunicação é full-duplex.• Ou seja, se A envia para B um segmento com
número de seqüência 2500, o ACK que B enviará para A terá o número de confirmação 2501
11/04/23 Profº André Luiz Silva 20
Cabeçalho do segmento TCP• Cabeçalho de 20 bytes (sem as opções) a 60 bytes (com as opções), seguido
do campo de dados.
11/04/23 Profº André Luiz Silva 21
Cabeçalho do TCP• Porta de origem (16 bits) – Número da porta do programa da
camada de aplicação do transmissor.• Porta de destino (16 bits) - Número da porta do programa da
camada de aplicação do receptor.• Número de sequência (32 bits) – Define o número atribuído
ao primeiro byte de dados adicionado ao segmento.• Número de confirmação (32 bits) – Contém o número do byte
que o transmissor do segmento espera receber da outra parte. É uma confirmação acumulativa.
• Tamanho do cabeçalho (4 bits) – Define a quantidade de palavras de 4 bytes no cabeçalho. Os valores geralmente são 5 ou 15.
11/04/23 Profº André Luiz Silva 22
Cabeçalho do TCP• Reservado (6 bits) – Reservado para uso futuro.• Controle (6 bits diferentes) – Veja tabela na próxima
transparência• Tamanho da janela (16 bits) – Define o tamanho da
janela que a outra parte deve suportar.• Checksum (16 bits) – Cálculo para verificação de erros.• Indicador de urgência (16 bits) – Utilizado quando o
segmento contém dados de urgência. Veremos mais adiante.
• Opções ( 40 bytes) – Informações adicionais.
11/04/23 Profº André Luiz Silva 23
Flags
11/04/23 Profº André Luiz Silva 24
Maximum Segment Size (1)
• MSS (Tamanho Máximo do Segmento).– Limita a quantidade de dados que o TCP irá enviar
num único datagrama IP.– Valores para MSS são trocados nos pacotes SYN
(requisição de conexão) que abrem a conexão TCP.
Maximum Segment Size (2)
• Uma opção largamente utilizada permite que o host determine o tamanho máximo do segmento que irá receber.
• O uso de segmentos grandes é mais eficiente.– Menos cabeçalho para uma mesma quantidade de
dados.– Porém, alguns hosts podem não conseguir
administrar segmentos muito grandes.
Maximum Segment Size (3)
• Durante a etapa de conexão, cada host informa o valor do seu MSS e avalia a do seu parceiro.
• Caso contrário, o padrão de 536 bytes é estipulado.
• Todos os hosts da Internet são obrigados a aceitar segmentos de 536 + 20 bytes.
Timestamp
• Outra opção também largamente utilizada.• Transporta um período de tempo enviado
pelo transmissor e ecoado pelo receptor.• Calcula as amostras de tempo de ida e volta.
Campos do TCP
Conexão em três vias
11/04/23 Profº André Luiz Silva 30
Primeira via
• O lado cliente envia um segmento TCP especial ao lado servidor. Este segmento não contém dados. O bit SYN é ajustado para 1.
• O cliente escolhe aleatoriamente um número de sequência e coloca-o no campo “número de sequência”.
• O segmento é encapsulado em um datagrama IP e enviado ao servidor
11/04/23 Profº André Luiz Silva 31
Segunda via
• Assim que o datagrama IP chega ao servidor, este extrai o segmento SYN, aloca buffers e variáveis.
• Este segmento também não contém dados.• O bit SYN está com valor 1• O campo de reconhecimento é inicializado.• O servidor escolhe o seu próprio número de
sequência.
11/04/23 Profº André Luiz Silva 32
Terceira via
• Ao receber o segmento SYN/ACK o cliente também reserva buffers e variáveis para a conexão.
• Reconhece o segmento de confirmação colocando o valor do campo número de sequência + 1 no campo de reconhecimento.
• O bit SYN é ajustado para 0, já que a conexão está estabelecida.
• O bit PSH é ajustado para 1.
11/04/23 Profº André Luiz Silva 33
Transferência de dados
11/04/23 Profº André Luiz Silva 34
Término de conexão
11/04/23 Profº André Luiz Silva 35
Etapas da conexão
• Representadas em uma máquina de estados finitos.– 11 estados.
• Em cada estado, determinados eventos são válidos.• Quando ocorre algum evento válido, torna-se
possível executar uma ação.• Se ocorrer algum outro evento, um erro é reportado.
Eventos e ações
• Evento:– Pode ser uma chamada de sistema iniciada pelo usuário.
• Connect, listen, send ou close.
– A chegada de um segmento.• SYN, FIN, ACK ou RST.
• Ação:– Envio de um segmento de controle.
• SYN, FIN ou RST.• Ou nada, indicado por um travessão.
Estados da conexão
Estados do cliente
• Começa no estado CLOSED saindo desse estado ao executar uma abertura ativa (CONNECT).
• Se o outro lado executar a primitiva oposta, a conexão será estabelecida e o estado passará para ESTABLISHED.
• O encerramento pode ser iniciado por qualquer um dos lados.
Estados do servidor
• Executa a primitiva LISTEN e aguarda.• Quando um SYN chegar, ele será confirmado e
o servidor passa para o estado SYN RCVD.• Quando o SYN do servidor for confirmado, ele
passará para o estado ESTABLISHED.• Então, os dados podem ser transmitidos.
Encerramento da conexão
• Ao terminar o envio dos dados, o cliente executa a primitiva CLOSE, o que faz um FIN ser enviado ao servidor.
• O servidor também, ao receber o FIN, executa a primitiva CLOSE enviando um FIN ao cliente.
• Ao receber o ACK do cliente o servidor encerra a conexão e apaga seus registros.
Estados das conexões TCP - Cliente
Estados das conexões TCP - Servidor
Reset da conexão
• TCP cliente solicita conexão a uma porta não existente
• Ocorrência de alguma situação anormal levando o servidor a abortar a conexão
• TCP cliente percebe que a conexão está ociosa por muito tempo e resolve desligar a conexão
11/04/23 Profº André Luiz Silva 44