Trabalho de Implementação TCP/IP

De Aulas

Voltar para Comunicação de Dados

A biblioteca OverIPSim, desenvolvida em linguagem de programação Java, simula o protocolo IP para o envio de mensagens de um computador a outro. Essa biblioteca simula a perda de pacotes e o atraso de algumas mensagens. Quem deve garantir mais a cima que o conteúdo recebido esteja consistente, é o protocolo TCP.

Neste trabalho, os alunos devem implementar a troca de informações em formato texto entre computadores (no mínimo 1000 caracteres) . É necessário que a informação que chegue do outro lado esteja consistente com a informação enviada. Neste trabalho, os alunos devem estudar o protocolo TCP e implementá-lo (utilizando o OverIPSim) a baixo da aplicação. Deve-se implementar pacotes no formato do pacote TCP e deve-se efetuar todos os testes de envio, confirmação, etc.

TCP

Cabeçalho de um pacote TCP
+ Bits 0 - 3 4 - 9 10 - 15 16 - 31
0 Porta na origem Porta no destino
32 Número de sequência
64 Número de confirmação (ACK)
96 Offset Reservados Flags Janela
Window
128 Checksum Ponteiro de urgência
160 Opções (opcional)
Padding (até 32)
224  
Dados
 
Detalhe do campo Flags
+ 10 11 12 13 14 15
96 UrgPtr ACK Push RST SYN FIN

O pacote TCP é considerado conexão garantida devido seu processo de conexão conhecido como 3 way handshake connection. A conexão TCP passa a ser monitorada desde que o primeiro pacote entra na rede para ser entregue.

Isto significa que o protocolo TCP necessita fazer o acompanhamento do numero de seqüência do pacote, checksums etc. Segue na Figura 2 um exemplo de como funciona uma conexão TCP entre cliente e servidor.

Figura 2. Three-way handshake

Quando se inicia uma conexão, o processo Three-way handshake entra em jogo para garantir a conexão. O cliente (client) envia um pacote com o flag SYN marcado. O servidor (server) recebe o pacote e responde com um pacote com o flag ACKnowledge/SYN marcado. Então o cliente recebe e envia outro pacote com o flag ACK marcado. Pronta a conexão foi estabelecida entre o cliente e o servidor. Para terminar a conexão o cliente envia um pacote com flag FIN marcado. O servidor ao receber o pacote de flag FIN do cliente responde com um pacote com o flag também marcado FIN.

Tabela de sinais TCP

  • URG - O pacote contem dados importantes
  • ACK - Certificação que recebeu o ultimo pacote ou outra resposta.
  • PSH - Envia imediatamente mesmo se o buffer não estiver cheio.
  • RST - Reseta a conexão ( ocorreu erro ou coisa parecida ).
  • SYN - Inicia conexão.
  • FIN - Termina conexão.