UFSJ Relatorio TCP

9
UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI CAMPUS ALTO PARAOPEBA ENGENHARIA MECATRÔNICA TCP Abdon Francisco Aureliano Netto 134450067 Ouro Branco, 2015

description

Resumo do protocolo TCP de redes

Transcript of UFSJ Relatorio TCP

Page 1: UFSJ Relatorio TCP

UNIVERSIDADE FEDERAL DE SÃO JOÃO DEL-REI

CAMPUS ALTO PARAOPEBA

ENGENHARIA MECATRÔNICA

TCP

Abdon Francisco Aureliano Netto

134450067

Ouro Branco,

2015

Page 2: UFSJ Relatorio TCP

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

Page 3: UFSJ Relatorio 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.).

Page 4: UFSJ Relatorio TCP

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.

Page 5: UFSJ Relatorio TCP

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

Page 6: UFSJ Relatorio TCP

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.

Page 7: UFSJ Relatorio TCP

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).

Page 8: UFSJ Relatorio TCP

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

Page 9: UFSJ Relatorio TCP

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