Coder Social home page Coder Social logo

camada-rede's Introduction

Implementação camada de Rede

Disciplina de Redes / Engenharia de Computação

Prof. Sandro Renato Dias

CEFET-MG / 2019-2


O objetivo desta parte do trabalho diz respeito ao roteamento realizado pela camada de rede da pilha de protocolos TCP/IP.

Escolhas de projeto

De forma esclarecer algumas padronizações estabelecidas no projeto do grupo, os tópicos abaixo abordam sobre a comunicação entre camadas, bem como a interface disponibilizada pelo código desta camada.

Comunicação para envio de pacotes

No envio, a camada de transporte constrói um pacote, salvo como TXT e formatado em ASCII, em uma pasta comum a todos os pacotes gerados pela pilha e passa como parâmetro um ou mais caminhos de pacotes a serem enviados na linha de comando de execução do script de rede.

Como resultado, a camada de rede escreve um pacote (também TXT/ASCII) com seu header concatenado no início. O caminho desse arquivo é repassado ao chamar a camada física.

Comunicação para recebimento de pacotes

No recebimento, a camada de física constrói um pacote, salvo como TXT e formatado em ASCII, em uma pasta comum a todos os pacotes gerados pela pilha e passa como parâmetro um o caminho para aquele pacote na linha de comando de execução do script de rede.

Como resultado, a camada de rede escreve um pacote (também TXT/ASCII) sem seu header concatenado no início (logo o primeiro header passa a ser o header de transporte). O caminho desse arquivo é repassado ao chamar a camada física.

Formato do cabeçalho

O formato do cabeçalho segue n o seguinte formato: ||ip_origem|ip_destino|checksum|| Com os IPs e checksum separados por barras únicas e o início e fim do pacote demarcados por barras duplas.

Algoritmo

O algoritmo, tanto para o envio quanto para o recebimento, seguem um mesmo padrão, diferenciando apenas de onde são retirados alguns campos e uma condicional extra (no caso do de recebimento).

No envio, é checado se o endereço de origem (computador atual) e o endereço de destino (pacote HTTP) sob mesma máscara de origem (JSON de configuração) resultam em um mesmo valor. Caso sejam iguais (mesma rede), o nextHop, ou próximo salto, é na realidade o próprio destino (direto). Caso contrário, checa se, dentre a lista de rotas (JSON de configuração), existe uma rota que possua conhecimento daquele IP. Caso exista, o IP da rota que conhece o IP de destino passa a ser o nextHop. Caso não exista nenhum o nextHop é o IP default configurado (JSON de config.). Por fim, o pacote de rede é salvo (TXT/ASCII) com o IP de origem sendo a máquina, o IP de destino sendo o nextHop, a máscara de origem sendo o do arquivo JSON e o checksum sendo gerado a partir do conteúdo do pacote de transporte.

No recebimento, é checado se o endereço de origem (computador atual) e o endereço de destino (pacote físico) são iguais. Caso sejam iguais, o pacote de rede é escrito (sem o cabeçalho de rede) e a camada de transporte é chamada passando o caminho para o pacote salvo. Caso contrário, as mesmas regras de roteamento são seguidas, porém, durante a reescrita do header de rede para reenvio do pacote, o IP de origem permanece o mesmo mas o IP de destino passa a ser no nextHop a partir das configurações daquele PC (arquivo JSON).

Execução

Para a execução do código basta:

npm run-script send path [path,...] npm run-script receive path

camada-rede's People

Watchers

Rodrigo Dias Moreira avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.