44
Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Embed Size (px)

Citation preview

Page 1: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Transmission Control Protocol TCP

Introdução, apresentação em três vias, Campos do protocolo e estados

da conexão

Page 2: 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

Page 3: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 4: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Aplicações que usam TCP

11/04/23 Profº André Luiz Silva 4

Page 5: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Fluxo de entrega TCP

• Fluxo do serviço de entrega

11/04/23 Profº André Luiz Silva 5

Page 6: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 7: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 8: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 9: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Buffers de transmissão e recepção

11/04/23 Profº André Luiz Silva 9

Page 10: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 11: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 12: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 13: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 14: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 15: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 16: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 17: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 18: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 19: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Exemplo

11/04/23 Profº André Luiz Silva 19

Page 20: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 21: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 22: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 23: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 24: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Flags

11/04/23 Profº André Luiz Silva 24

Page 25: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 26: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 27: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 28: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 29: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Campos do TCP

Page 30: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Conexão em três vias

11/04/23 Profº André Luiz Silva 30

Page 31: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 32: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 33: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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

Page 34: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Transferência de dados

11/04/23 Profº André Luiz Silva 34

Page 35: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Término de conexão

11/04/23 Profº André Luiz Silva 35

Page 36: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 37: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 38: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Estados da conexão

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

Page 40: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 41: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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.

Page 42: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Estados das conexões TCP - Cliente

Page 43: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

Estados das conexões TCP - Servidor

Page 44: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão

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