Boa tarde!
Em minha aula de redes foi solicitado a criação de um projeto que liste os 100 primeiros protocolos que passem pela rede, pesquisei em vários lugares a solução e não tive muito sucesso, existe alguma classe que permita fazer listagem? Lembrando que tenho que listar QUALQUER tipo de protocolo que passar e gravar seu nome pela ordem.
Acho que não é isto que você está querendo - tem certeza que o enunciado do seu problema é esse? É que um protocolo “não passa pela placa”, conforme você está afirmando.
Preciso listar o nome dos primeiro 100 protocolos que passarem pela rede, dei uma olhada na classe NetworkInterface, mas ainda não consegui resolver o problema, se alguém já viu isso e conseguiu resolver, por favor, estou precisando mesmo.
b) Você precisa fazer uma espécie de “Wireshark” dos pobres, que faria o seguinte:
Deixa a placa de rede em modo “promíscuo” - isso nem sempre pode ser feito, nem tenho idéia de como se faz isso de modo trivial (ou seja, suportado pelo seu sistema operacional - não se esqueça que se você não puder resolver o problema em Java, é preciso usar uma interação muito grande com as APIs do seu sistema operacional)
Captura todos os pacotes que forem recebidos pela placa, em modo “raw”. Note que muitos desses pacotes não são IP e sim são de outros protocolos
Se o protocolo for IP, examina o cabeçalho de cada pacote IP e, dependendo de uma tabela de protocolos (no Linux/Unix isso fica em /etc/protocols, no Windows em c:\windows\system32\drivers\etc\protocols ) indica se o pacote recebido é TCP/IP, UDP/IP, ICMP/IP, EGP/IP etc.
Tem certeza que o enunciado é “protocolos” mesmo? Pergunte melhor ao professor. O que ele pediu não é muito trivial (você pode achar essas coisas prontas na Internet, é claro - procure por “pcap” ou “Ethereal” ou “Wireshark”. Há uma biblioteca - jpcap - que permite ao Java usar o pcap, mas não sei se ela funciona em Windows, por exemplo.)
É, realmente é um “Wireshark” dos pobres como você disse, e ele pediu os protocolos mesmo.A ideia dele é fazer um programa que liste os 100 primeiros protocolos que passarem pela rede, e informar em qual camada TCP/IP são localizados.
Ps: Também não entendi o porque de um trabalho assim, mas agradeço a atenção. Valeu
Como é uma aula de redes, não uma aula de Java, eu (ou seu professor, se ele for sensato) faria o seguinte:
a) Criar um script que roda o tcpdump e/ou o tcptrace
b) Talvez tenha de escrever um programa que pegue a saída do tcpdump ou tcptrace, e então mostre exatamente a informação que seu professor quer.
A parte mais chata do script é configurar corretamente os parâmetros para capturar exatamente 1000 pacotes, e indicar as informações desejadas.