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...
![Page 1: Transmission Control Protocol TCP Introdução, apresentação em três vias, Campos do protocolo e estados da conexão.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/1.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/2.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/3.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/4.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/5.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/6.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/7.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/8.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/9.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/10.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/11.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/12.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/13.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/14.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/15.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/16.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/17.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/18.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/19.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/20.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/21.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/22.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/23.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/24.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/25.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/26.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/27.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/28.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/29.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/30.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/31.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/32.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/33.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/34.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/35.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/36.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/37.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/38.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/39.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/40.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/41.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/42.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/43.jpg)
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.](https://reader036.fdocumentos.com/reader036/viewer/2022070311/552fc15f497959413d8e6788/html5/thumbnails/44.jpg)
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