O que é TCP?
TCP (Transmission Control Protocol) é um protocolo de camada de transporte orientado para conexão.
Intenção deste artigo:
Para entender todo o TCP não é uma tarefa fácil. Neste artigo, tentaremos entender as trocas de pacotes básicos do TCP através do Wireshark. A teoria pode ser lida pela internet. Vamos nos concentrar mais na análise de captura de pacotes.
Por que o TCP é famoso?
Existem vários motivos pelos quais o TCP é tão famoso:
- TCP é um protocolo orientado para conexão, então a confiabilidade é muito alta.
- TCP pode controlar o congestionamento por si mesmo.
- TCP pode detectar erros.
- TCP usa protocolo de controle de fluxo.
- TCP tem recursos de atraso ACK.
- TCP tem recurso ACK seletivo.
- TCP tem recurso de chamada de janela para melhoria de taxa de transferência.
Existem tantos outros recursos que tornam o TCP tão famoso.
Análise do TCP:
Seguiremos alguns passos para gerar quadros TCP.
Passo 1: A maneira simples de gerar pacotes TCP é acessando qualquer site HTTP. A razão é que o HTTP é um protocolo da camada de aplicativo e usa o TCP como protocolo da camada de transporte subjacente.
Para saber mais sobre HTTP siga o link abaixo
https: // linuxhint.com / http_wireshark /
Passo 2: Iniciar Wireshark.
Etapa 3: Abra o link abaixo em qualquer navegador.
http: // gaia.cs.umass.edu / wirehark-labs / alice.TXT
Passo 4: Pare o Wireshark e coloque o TCP como filtro.
Etapa 5: ANÁLISE
Agora devemos ver os pacotes de handshake TCP de 3 vias. Aqui está o diagrama simples.
Quadro 1: SYN [Sincronização]
SYN é o primeiro pacote que vem do cliente para o servidor. No nosso caso 192.168.1.6 é o cliente [o sistema onde abrimos o navegador] e gaia.cs.umass.edu é o servidor.
Aqui estão alguns campos importantes no quadro SYN
O quadro SYN é necessário para enviar os recursos do cliente para o servidor.
Quadro 2: SYN + ACK [Sincronização + Confirmação]
SYN, ACK é o segundo pacote que vem do servidor para o cliente.
Aqui estão alguns campos importantes em SYN, quadro ACK
O quadro SYN, ACK é necessário para enviar os recursos do servidor para o cliente.
Agora o cliente e o servidor compartilharam seus recursos.
Frame 3: ACK [Confirmação]
ACK é o terceiro pacote que vem do cliente para o servidor. Isso é basicamente uma confirmação do cliente para o servidor e também é uma aceitação dos recursos enviados pelo servidor.
Aqui estão os campos importantes para ACK.
Vamos verificar as informações importantes compartilhadas entre cliente e servidor:
ClienteServidor
Tamanho da janela de recepção: 64240 bytes Tamanho da janela de recepção: 29200 bytes
Tamanho máximo do segmento: 1460 bytes Tamanho máximo do segmento: 1412 bytes
SACK permitido: sim SACK permitido: sim
Escala da janela: 8 (multiplique por 256) Escala da janela: 7 (multiplique por 128)
Percebemos que existem diferenças de valores. Se o cliente ou servidor aceitar os recursos de outros, o handshake de 3 vias foi bem-sucedido.
Cabeçalho TCP:
Aqui estão os campos importantes do cabeçalho TCP:
- Porta de origem (16 bits): Esta é a porta de envio.
- Porta de destino (16 bits): Esta é a porta de recepção.
- Número de sequência (32 bits):
- Se o bit SYN for definido [1], então este é o número de sequência inicial.
- Se o bit SYN não for definido [0], então este é o número de sequência acumulado do primeiro byte de dados deste segmento.
- Número de confirmação (32 bits): Se o sinalizador ACK estiver definido, o valor deste campo é o próximo número de sequência que o remetente do ACK está esperando.
- Comprimento do cabeçalho: O tamanho do cabeçalho pode variar de 20 bytes e máximo de 60 bytes.
- Sinalizadores (9 bits):
… = Reservado: Não definido
… 0… = Nonce: Não definido
… 0… = Janela de congestionamento reduzida (CWR): Não definido
… 0… = ECN-Echo: Não definido
… 0… = Urgente: Não definido
… 0… = Reconhecimento: Não definido
… 0… = Push: Não definido
… 0… = Reiniciar: Não definido
… 1. = Syn: Set
… 0 = Fin: Não definido
- Tamanho da janela (16 bits): Este é o tamanho da janela de recepção em bytes.
- Soma de verificação (16 bits):
É usada a verificação de erros do cabeçalho.
Exemplo: soma de verificação: 0x436f- Ponteiro urgente (16 bits):
Este é um deslocamento do número de sequência que indica o último byte de dados urgente.
Exemplo: Ponteiro urgente: 0- Opções:
Opção TCP - tamanho máximo do segmento: 1460 bytes
Opção TCP - Sem operação (NOP)
Opção TCP - escala da janela: 8 (multiplique por 256)
Opção TCP - SACK permitido
Observação:
O tamanho do cabeçalho TCP de SYN é de 32 bytes.
Tamanho do cabeçalho TCP de SYN, ACK é de 32 bytes.
O tamanho do cabeçalho TCP do ACK é de 20 bytes, pois não tem campos de opção.
Dados TCP:
Aqui está a captura de tela com explicação para dados TCP e TCP ACK. Aqui podemos ver o recurso de atraso de TCP ACK. O servidor enviou três pacotes de dados TCP para o cliente e o cliente enviou um atraso ACK para dizer ao servidor que recebeu todos os três pacotes de dados TCP. É por isso que em TCP ACK [Pacote número 96 na imagem] vemos ACK = 14121, o que significa que o cliente recebeu até 14121 bytes.
Referência:
Para a teoria básica do TCP, consulte
https: // en.wikipedia.org / wiki / Transmission_Control_Protocol