View
40
Download
4
Embed Size (px)
DESCRIPTION
Resumo do protocolo TCP de redes
Citation preview
UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI
CAMPUS ALTO PARAOPEBA
ENGENHARIA MECATRÔNICA
TCP
Abdon Francisco Aureliano Netto
134450067
Ouro Branco,
2015
1) Introdução
TCP (Transmission Control Protocol) é um padrão que define como se estabelecer e manter uma conexão via rede na qual programas podem trocar dados. TCP trabalha com o Internet Protocol (IP), que define como os computadores enviam dados uns para os outros. Juntos, TCP e IP são as regras básica que definem a internet.
TCP é um protocolo orientado a conexão, o que significa que uma conexão é estabelecida e mantida até que os programas de aplicação em cada extremidade terminem de trocar as mensagens. Ele também determina como, quebrar os dados em pacotes que a rede consiga entregar, envia pacotes para e recebe pacotes da camada de redes, gerencia o controle de fluxo, e lida com a retransmissão de pacotes perdidos ou danificados, bem como o reconhecimento de todos os pacotes que chegam. No modelo de comunicação OSI (Open Systems Interconnection), o TCP abrange parte da camada de transporte e parte da camada de sessão.
2) Objetivo
Estudar e desenvolver uma aplicação do Protocolo de Controle de Transmissão (TCP).
3) Metodologia
Para estudar e explorar melhor o TCP, usaremos como software auxiliar, o software Wireshark. O esperado procedimento a ser adotado será de capturar uma trajetória de uma conexão TCP que envia um montante moderado de dados para melhor entendimento do procedimento. Muitas aplicações usam TCP como transporte, incluindo navegadores de internet. Então a ideia aqui é de simplificar a performance de um download/upload para exercer uma conexão TCP. No entanto, note que TCP é capaz de transferir dados em ambos os sentidos e ao mesmo tempo, porém o conteúdo de download só é enviado do servidor remoto para o computador local (após o pedido inicial).
A estrutura do TCP é representada na Figura1. O TCP aceita dados de um fluxo de um fluxo de dados e os divide em pedaços(pacotes), e adiciona um cabeçalho TCP (TCP header) criando um segmento TCP. O segmento TCP é então encapsulado dentro de um datagrama IP e trocado com seus pares. Um segmento TCP consiste em um cabeçalho e uma seção de dados (Payload Data). O cabeçalho contém 10 grandes campos obrigatórios e um campo de extensão opcional(Options).
Figura 1 - Estrutura do TCP
Tabela 1 - Estrutura do segmento TCP
Nome Tamanho(Bits) Função Porta de Origem (Source Port) 16 Identifica a porta de envio
Porta de Destino (Destination Port) 16 Identifica a porta de recebimento
Número de Sequência (Sequence Number)
32
Duas funções:
Se a flag SYN está ativada (1), então esse é o número de sequência inicial.
Se a flag SYN está desativada (0), então esse é o número de sequência acumulado do primeiro bit dos dados atuais.
Número de reconhecimento (Acknowledgment Number)
32
Quando o bit ACK é ativado (1), esse segmento serve como reconhecimento e esse campo contém o número de sequência, a fonte está esperando o próximo destino para enviar.
Tamanho do Cabeçalho (Data offset) 4 Especifica o tamanho do cabeçalho TCP em uma palavra de 32-bits.
Reservado (Reserved) 3 Reservada para uso futuro qualquer e deve ser definida como zero.
Flags (ECN e Control Bits)
9
Contém 9 flags de 1 bit: NS (1 bit) – Proteção oculta exclusiva do ECN (Explicit Congestion Notification) CWR (1 bit) – Janela de Congestionamento Reduzido, indica que foi recebido um segmento TCP com a flag ECE ativada. ECE (1 bit) – Se o flag SYN está ativado (1) o par TCP é ECN capaz. URG (1 bit) – Indica que o campo de ponteiro urgente é significativo. ACK (1 bit) – Indica que o campo de reconhecimento está preenchido. PSH (1 bit) – Função “empurro”. Pede para “empurrar” os dados em buffer para os aplicativos de recebimento. RST (1 bit) – Reestabelece a conexão. SYN (1 bit) – Sincroniza o s números de sequência. FIN (1 bit) – Sem mais dados do transmissor.
Tamanho da janela (Window)
16
Especifica o número de unidades de tamanho de janela(bytes) que o transmissor do atual segmento está disposto a receber.
Checksum 16 Campo usado para checagem de erros de cabeçalho e dados.
Dados Urgentes (Urgent Pointer)
16 Se a flag URG está ativada, então esse campo de 16 bits é um compensador do número de sequência indicando o ultimo byte de dados urgentes.
Opções (Options)
Tamanho Variável
O tamanho desse campo é determinado pelo campo compensador de dados. Opções pode ter até três campos: Tipo (1 byte), Tamanho (1 byte) e Dados (variável).
Preenchimento (Padding)
Tamanho Variável
O preenchimento de cabeçalho do TCP é usado para ter certeza que o cabeçalho TCP termina e os dados começam com um limite de 32 bits.
A Tabela 1 acima, contém dados mais explicados do segmento de estrutura TCP (Wikipedia,
s.d.).
Para estabelecer uma conexão, o TCP usa um handshake de três vias. O TCP handshake de três
vias é um método usado pelo TCP para configurar uma conexão TCP/IP sobre um IP em uma rede. Esse
handshake é conhecido como “SYN, SYN-ACK, ACK” porque essa são as três mensagens transmitidas
pelo TCP para “negociar” e começar uma sessão TCP entre dois computadores, estipulando os
parâmetros de rede, conexão TCP socket antes de transmitir dados como por exemplo HTTP dos
navegadores. (Tolle, 2001)
Figura 2 - Handshake TCP
Etapas:
1- O Host A (Cliente) envia um pacote TCP SYN de sincronização para o host b (Servidor).
2- O servidor recebe o SYN vindo do cliente.
3- O servidor envia um reconhecimento de sincronização SYN-ACK.
4- O cliente recebe o SYN-ACK do servidor.
5- O cliente envia um protocolo de reconhecimento ACK
6- O servidor recebe o ACK do cliente,
7- Conexão TCP socket foi estabelecida.
4) Resultados e Discussão
Simulação e testes: Captura de uma transferência TCP de um servidor remoto para meu computador. Capturando dados vindo do Portal Didático da UFSJ, baixando o arquivo Trabalho_Pratico_Redes_Computadores_2_2015.pdf do professor Mário Cupertino.
1. O navegador Google Chrome foi aberto e a página da UFSJ -> Portal Didático -> Redes Industriais de Computadores.
Figura 3 - Layout inicial da página acessada
2. Depois disso foi se encontrado o link para baixar o arquivo requisitado e a captura do
Wireshark foi iniciada. Clicando com o botão direito->Salvar como e salvando o arquivo na
pasta de arquivos da aula de Redes.
Figura 4 - Salvando o arquivo PDF
3. Com um print da captura no Wireshark é possível ver a minha máquina (IP: 192.168.1.8)
fazendo o handshake com o servidor do Portal Didático UFSJ (IP: 200.17.67.175).
Figura 5 - Handshake entre meu computador e o servidor remoto da UFSJ
Analisando a Figura 5 é possível ver claramente a tentativa (com sucesso) do meu computador
comunicar-se com o servidor do Portal Didático da UFSJ através do handshake. É enviado um SYN da
minha máquina para o servidor pedindo que haja uma sincronização de host (conexão), que retorna
depois um SYN-ACK de reconhecimento de sincronização e então minha máquina retornar um ACK de
reconhecimento. Logo após isso uma mensagem GET contendo o arquivo baixado aparece, mostrando
que o arquivo foi baixado perfeitamente. Assim como explicado no final do tópico Metodologia.
Print de algumas considerações importantes:
Figura 6 - Detalhes do pacote SYN-ACK
O pacote SYN-ACK tem Sequence Number = 0 e ACK = 1, pois a conexão ainda não foi concluída
apenas reconhecida. O número de sequência começa com um valor igual a zero por default.
Figura 7 - Mensagem HTTP POST
Uma outra mensagem importante de se considerar é a mensagem HTTP POST pois quando ela
ocorre o Sequence Number está ativado e é uma mensagem com tamanho maior do que a média.
Uma outra analise importante é o tempo necessário para que um sinal seja enviado e o tempo
que leva para que uma mensagem de reconhecimento ACK daquele sinal seja recebido, conhecido
como RTT – Round Trip Time. O Wireshrak fornece informações dos RTT em Statistics -> TCP Stream
Graph -> Round Trip Time Graph.
Figura 8 - RTT da captura
Selecionando um segmento TCP enviado ao servidor podemos analisa-lo como Sequence
Number enviados versus tempo selecionando: Statistics -> TCP Stream Graph -> Time‐Sequence‐
Graph(Stevens).
Figura 9 - Gráfico de sequência de tempo de um segmento TCP da captura.
O Time-Sequence-Graph(Stevens) é m gráfico de uma sequência de números de um segmento
TCP versus o tempo. Ele ajuda a ver se o fluxo de dados transmitido está indo sem interrupções, perda
de pacotes ou longos atrasos. (Kristoff, 2000)
Uma outra análise interessante de se fazer com o Wireshark é a transferência de dados, no
caso de nossa captura um download de um arquivo. Na barra Statistics -> IO Graph. Este gráfico mostra
a taxa de pacotes ao longo do tempo, mas dá para ajusta-lo para mostrar a taxa de download com as
entradas como na imagem abaixo:
Figura 10 - IO Graph da captura
No Graph 1 foi adicionado o filtro “tcp.srcport==80” para que se possa ver apenas os pacotes
baixados e no Graph 2 em vermelho foi adicionado o filtro “tcp.dstport==80” para ver a taxa de upload.
Nota-se que a taxa de upload foi muito pequena comparada ao de download visto que foi-se requerido
apenas o download de um arquivo, essa pequena taxa de upload pode ter sido feita por arquivos que
estavam funcionando em paralelo a captura (Algum torrent aberto, aplicativo de nuvem). O número
de porta 80 é a porta padrão de servidores de internet web.
5) Conclusão
O TCP é um protocolo bastante complexo que controla o peso da funcionalidade de uma rede de comutação de pacotes, como a Internet, ajudando na entrega confiável de dados nela. Este relatório mostra apenas algumas funcionalidades na superfície do TCP, ainda existe muitas outras funcionalidades importantes a serem estudadas. O estudo do TCP é uma área de grande atividade e existem muitos problemas a serem resolvidos. À medida que a Internet continua a crescer, a nossa dependência de TCP vai se tornar cada vez mais importante. Portanto, é importante para engenheiros de rede, designers e pesquisadores continuem investindo em estudos do TCP.
6) Referências Bibliográficas
Desconhecido. (01 de Setembro de 2013). Inet Daemon. Fonte:
http://www.inetdaemon.com/tutorials/internet/tcp/3-way_handshake.shtml
Kristoff, J. (Março de 2000). DePaul University. Fonte: DePaul University Web site:
https://condor.depaul.edu/jkristof/technotes/congestion.pdf
Tolle, E. (27 de Agosto de 2001). TechRepublic. Fonte:
http://www.techrepublic.com/article/understanding-tcp-ip-functionality/
Wikipedia. (s.d.). Wikipedia. Fonte:
https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure