Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e...
Transcript of Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e...
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