Entrar

Projeto: Desenvolvimento de um Chat seguro via protocolo TCP/IP em Python

Programação em Python

Original Teachy

Python para Redes: Aplicações Cliente-Servidor

Contextualização

Você já parou para pensar sobre como a internet, em toda a sua complexidade e vastidão, consegue operar tão suavemente? Por trás das cenas, uma série de protocolos de rede e aplicações estão constantemente trabalhando juntos para garantir que você possa acessar seus sites favoritos, ver vídeos, jogar online, conversar com amigos e muito mais.

Um dos elementos mais críticos desse ecossistema é o padrão Cliente-Servidor. O paradigma Cliente-Servidor é uma arquitetura de aplicação distribuída que separa a carga de trabalho entre os fornecedores de recursos ou serviços, chamados servidores, e os solicitantes de serviços, chamados clientes. Clientes e servidores comunicam-se através de uma rede em conexões separadas de hardware, mas estão vinculados por software, em protocolos de rede específicos.

Introdução ao Python para Redes: Aplicações Cliente-Servidor

Python é uma linguagem de programação de alto nível que se destacou na última década pelos seus recursos versáteis e abrangentes, incluindo ferramentas para desenvolvimento de rede. A biblioteca padrão Python fornece funcionalidades para criar aplicações de rede, incluindo suporte para a programação de baixo nível de sockets IP e TCP, além de uma variedade de módulos para protocolos específicos, como HTTP e FTP.

Python, com sua sintaxe clara e legível, torna o desenvolvimento de aplicativos de rede muito mais simples e intuitivo em comparação com outras linguagens de programação. Através do sistema de sockets, o Python permite a comunicação entre Cliente-Servidor, fazendo-o uma linguagem ideal para aprender os principais conceitos de redes.

A Relevância das Redes Client-Servidor no Mundo Real

No mundo de hoje, dominado pelo fluxo constante de informações digitais, entender como redes de computadores operam é uma habilidade extremamente relevante. A arquitetura Cliente-Servidor é fundamental para a grande maioria das aplicações que usamos hoje, desde navegação na web até aplicativos de banco online.

Se você já acessou um site, fez uma compra online, jogou um jogo multiplayer online ou usou um aplicativo de e-mail, você já usou a arquitetura cliente-servidor. Isso torna este tópico não apenas incrivelmente relevante, mas também um que tem implicações práticas diretas em praticamente todos os aspectos da nossa vida digital.

Para complementar os seus conhecimentos, sugerimos os seguintes materiais que podem te auxiliar na compreensão dos conceitos abordados neste projeto e trazer uma perspectiva teórica e prática mais abrangente:

  • Livro: [Python Network Programming] by Ivan Idris. Este livro apresenta uma excelente cobertura das principais bibliotecas e técnicas Python para programação de rede.

  • Curso: [Python for Network Engineers] na plataforma Coursera.

  • Documentos: A documentação oficial do Python [socket — Low-level networking interface] fornece uma visão útil e concisa da API de soquete do Python.

Atividade Prática

Desenvolvimento de um Chat seguro via protocolo TCP/IP em Python

Objetivo do Projeto

Este projeto tem como objetivo central o desenvolvimento de um simulador de sistema de chat seguro usando a arquitetura cliente-servidor, onde os alunos estarão implementando aplicações cliente e servidor usando o módulo socket do Python sobre o protocolo TCP/IP, e aplicarão os conceitos de segurança em redes para proteger as comunicações.

Materiais Necessários

  • Ambiente de desenvolvimento Python.
  • Acesso à Internet.
  • Ferramentas de controle de versão (Git).
  • Ferramentas de colaboração e gerenciamento de projeto, como Trello ou Asana.

Descrição detalhada do Projeto

Os alunos, divididos em grupos de 3 a 5 pessoas, desenvolverão um aplicativo de chat utilizando o Python e seu módulo socket. O software consistirá em duas partes distintas: um servidor que ficará ouvindo e passando as mensagens entre os clientes e os clientes que enviarão as mensagens entre si por meio desse servidor.

A ideia é que um computador rode o servidor e que vários outros possam se conectar a ele como clientes, trocando mensagens entre si. Para tal, é necessário que os clientes tenham o endereço IP do servidor.

A aplicação deverá garantir a segurança dos dados transmitidos, usando alguma forma de criptografia, como por exemplo, a AES (Advanced Encryption Standard). Os alunos terão a liberdade de escolher o método de criptografia.

Passo a passo detalhado para a realização da atividade

  1. Estudo: Antes de começar o desenvolvimento, os alunos devem dedicar um tempo ao estudo dos conceitos necessários para a realização do projeto. Isso inclui o entendimento do TCP/IP e UDP, as funcionalidades do módulo socket do Python, o modelo cliente-servidor e os métodos de criptografia.

  2. Desenho da arquitetura: No início do projeto, os alunos devem desenhar a arquitetura da aplicação, definindo como o cliente e o servidor irão interagir e como a segurança será implementada.

  3. Implementação do Servidor: os alunos irão começar a implementação pelo servidor, usando sockets TCP/IP. O servidor deverá ser capaz de aceitar várias conexões em paralelo (multithreading).

  4. Implementação do Cliente: em seguida, os alunos irão implementar o cliente, que também utilizará sockets TCP/IP. Os clientes deverão ser capazes de enviar e receber mensagens do servidor.

  5. Implementação da Segurança: os alunos irão implementar a segurança das mensagens, usando algum método de criptografia.

  6. Testes: após a implementação, os alunos irão testar a aplicação, simulando um cenário real de uso.

  7. Documentação: os alunos irão documentar todo o desenvolvimento, explicando as decisões tomadas, como o projeto evoluiu, quais problemas surgiram e como foram resolvidos, entre outras informações importantes.

Entregas do Projeto

  • Aplicação Cliente-Servidor: o código fonte da aplicação desenvolvida, que será avaliada em termos de funcionalidade, organização e boas práticas de programação.
  • Documentação: um relatório final no formato de um documento que deve estar estruturado da seguinte maneira:
    • Introdução: Contextualize o tema "Python para Redes: Aplicações Cliente-Servidor", mostrando sua importância e relevância, além de explicitar o objetivo do projeto.
    • Desenvolvimento: Detalhe o trajeto do grupo durante a realização do projeto, o percurso de aprendizado, as principais dificuldades encontradas e como foram superadas. Explicite bem as tecnologias utilizadas e por quê foram escolhidas. Aqui, os alunos também precisam descrever as decisões de desenho, bem como a implementação e os resultados dos testes.
    • Conclusão: Os alunos devem retomar os principais pontos do trabalho, mostrar os resultados alcançados e os aprendizados adquiridos durante o projeto. Destaque o que deu certo e o que poderia ser melhorado em projetos futuros.
    • Bibliografia: Liste todas as fontes de onde você extraiu informações pertinentes ao projeto, incluindo livros, vídeos, sites e etc.

FIM

Comentários mais recentes
Nenhum comentário ainda. Seja o primeiro a comentar!
Iara Tip

DICA DA IARA

Precisa de materiais para apresentar o tema do projeto em sala?

Na plataforma da Teachy você encontra uma série de materiais prontos sobre esse tema! Jogos, slides, atividades, vídeos, planos de aula e muito mais...

Quem viu esse projeto também gostou de...

Community img

Faça parte de uma comunidade de professores direto no seu WhatsApp

Conecte-se com outros professores, receba e compartilhe materiais, dicas, treinamentos, e muito mais!

Teachy logo

Reinventamos a vida dos professores com inteligência artificial

Instagram LogoLinkedIn LogoTwitter LogoYoutube Logo
BR flagUS flagES flagIN flagID flagPH flagVN flagID flagID flag
FR flagMY flagur flagja flagko flagde flagbn flagID flagID flagID flag

2023 - Todos os direitos reservados

Termos de usoAviso de PrivacidadeAviso de Cookies