Este é o dever de casa de Programação Avançada para Internet no Harbin Institute of Technology.
O repositório contém dois projetos:
Um serviço multiplex TCP e UDP para serviço de transferência de arquivos usando select.
O servidor pode aceitar conexões TCP e UDP.
Sniffers de pacotes que interceptam o tráfego de rede que entra e sai de um sistema por meio de interfaces de rede.
O sniffer usa um soquete bruto quando colocado no loop recvfrom e recebe todos os pacotes recebidos. Saiba mais.
Nota: Você precisa compilar este projeto em Linux ou Unix (incluindo Mac OS X).
Você pode simplesmente compilar este projeto usando o comando make
.
Depois que a operação de compilação for bem-sucedida, você poderá executar o servidor:
./server <PortNumber>
Então você pode iniciar um cliente UDP ou cliente TCP:
# for TCP client
./tcp-client <ServerIP> <PortNumber>
# for UCP client
./udp-client <ServerIP> <PortNumber>
No cliente TCP, você pode obter arquivos do servidor:
GET <Path to the file in server>
Problemas conhecidos:
Nota: Em sistemas Linux/Unix, você precisa de permissões de root para receber pacotes brutos em uma interface. Essa restrição é uma precaução de segurança, pois um processo que recebe pacotes brutos ganha acesso às comunicações de todos os outros processos e usuários que utilizam essa interface.
sudo ./packet-sniffer
Todos os pacotes recebidos serão despejados no arquivo packet-sniffer.log
.
Este projeto é de código aberto sob licença Apache.