- 🧉 I'm Marco Goedert, a software engineer from Porto Alegre, Brazil.
- 💬 Ask me about anything
- 📫 How to reach me
pucrs-redes-tf's Introduction
pucrs-redes-tf's People
pucrs-redes-tf's Issues
O arquivo gerado pelo servidor possui sempre o mesmo nome, sobrescrevendo arquivos recebidos anteriormente.
O arquivo enviado pelo client está hard-coded para "target.txt"
O trabalho exige que o usuário possa escolher um arquivo qualquer do sistema operacional para enviar para o destino, sendo este passado como um parâmetro.
Adicionar prints no console para o usuário visualizar o status da aplicação
Adicionar envio de dados (arquivos que serão selecionados do computador) [4/5]
É a parte 4 de 5 para simular o comportamento de um protocolo de transferência de arquivos orientado à conexão:
- Estabelecimento e encerramento da conexão da aplicação
- Sequenciamento das mensagens
- Controle de erro das mensagens
- Envio de dados (arquivos que serão selecionados do computador).
- Controle de congestionamento
Adicionar técnica 'Congestion Avoidance'
Tem um crescimento linear e é utilizada após o Slow Start
Adicionar técnica 'Fast Retransmit'
Faz a retransmissão imediata de um pacote ao receber 3 ACKs duplicados.
Retransmissão imediata somente do pacote identificado pelo ACK
O tamanho da janela de congestionamento cai pela metade
Congestion Avoidance é continuada
Adicionar flags em todas transmissões
- SYN: SYN;0
- ACK: ACK;1
- FIN: FIN;0
- DATA: DATA;0;data
- SYN-ACK: SYN-ACK;0;1
- FIN-ACK: FIN-ACK;0;1
Adicionar sequenciamento das mensagens [2/5]
É a parte 2 de 5 para simular o comportamento de um protocolo de transferência de arquivos orientado à conexão:
- Estabelecimento e encerramento da conexão da aplicação
- Sequenciamento das mensagens
- Controle de erro das mensagens
- Envio de dados (arquivos que serão selecionados do computador).
- Controle de congestionamento
Adicionar 'tamanho de janela de congestionamento'
será o limite do funcionamento da técnica Slow Start e começo do Congestion Avoidance
[Client] Adicionar gerador de arquivos aleatório
A ideia é poder gerar diferentes casos de teste e testar a transferência com diferentes conteúdos e tamanhos. Não deve ter o char ";" no corpo da mensagem.
Adicionar estabelecimento e encerramento da conexão da aplicação [1/5]
É a parte 1 de 5 para simular o comportamento de um protocolo de transferência de arquivos orientado à conexão:
- Estabelecimento e encerramento da conexão da aplicação
- Sequenciamento das mensagens
- Controle de erro das mensagens
- Envio de dados (arquivos que serão selecionados do computador).
- Controle de congestionamento
Adicionar estrutura de dados TCP para os pacotes UDP enviados
SYN;
ACK;
CRC;
dados;
TAM_PACOTE
O tamanho do arquivo recebido pelo servidor está hard-coded em 10 Kb
Controlar o padding do último pacote
Para caso o valor não complete os 300 bytes
Adicionar validação de integridade de arquivos com md5sum ou shasum
- O cliente cria hash com md5sum ou shasum do arquivo transferido e envia para o servidor;
- O servidor cria hash com arquivo recebido e retorna comparação com o hash do cliente para o cliente
O cliente deve dividir o arquivo enviado em partes de 300 bytes e o servidor deve remontar o arquivo recebido
Inclusive o último pacote. Assim a aplicação deve controlar o padding caso o último pacote não chegue a este valor.
Resetar 'Slow Start' no caso de timeout e vai crescendo exponencialmente
Adicionar técnica 'Slow Start'
Tem um crescimento exponencial. (1, 2, 4, 8, 16, ...)
Adicionar controle de erro das mensagens [3/5] (CRC)
- O calculo de CRC é feito através de um algoritmo já existente
- O valor deve ser incluído no pacote (header)
- O destino, ao receber, deve recalcular o CRC para identificar se o pacote chegou corretamente
- caso esteja correto, retorna ACK
- caso contrário, descartar o pacote
É a parte 3 de 5 para simular o comportamento de um protocolo de transferência de arquivos orientado à conexão:
- Estabelecimento e encerramento da conexão da aplicação
- Sequenciamento das mensagens
- Controle de erro das mensagens
- Envio de dados (arquivos que serão selecionados do computador).
- Controle de congestionamento
Adicionar chamadas "sleep" para acompanhar a execução do código.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.