2017-08-07 5 views
-1

Je suis nouveau sur le réseau Java. J'ai fait un programme en java qui peut montrer les ports actifs d'un serveur web. Ici, il est:Comment puis-je connaître le type d'activité de port utilisant la mise en réseau JAVA?

import java.net.Socket; 
import java.util.Scanner; 
import java.lang.Exception; 
import java.lang.Thread; 

class helper{ 
    public static void main(String []args){ 
     Scanner s= new Scanner(System.in); 
     int port; 
     System.out.print("Enter web url :"); 
     String url = s.next(); 
     for(port=0;port<65536;port++){ 
      helper2 h = new helper2(url,port); 
      h.start(); 
     } 
     s.close(); 
    } 
} 
class helper2 extends Thread{ 
    int port; 
    String url; 
    helper2(String url,int port){ 
     this.url=url; 
     this.port=port; 
    } 
    private void getStatus(){ 
     try{ 
      Socket skt = new Socket(url,port); 
      System.out.println(port); 
      skt.close(); 
     }catch(Exception e){ 
      //Handle Exception here 
     } 
    } 
    public void run(){ 
     getStatus(); 
    } 

} 

Mais maintenant, je veux imprimer un type de port ainsi que le numéro de port comme si elle est un TCP/IP, FTP, telnet ou un autre type de port. Je voulais savoir s'il y a une telle fonction dans le réseau Java qui renvoie le type de port ou existe-t-il un programme pour le faire. Aussi comment différencier le type de différence de ports? Je ne parle pas du point de vue de la programmation, mais de la différence fondamentale entre eux qui leur fournit leur identité et peut être utilisée dans un autre langage de programmation comme une déclaration logique.

Il devrait y avoir quelque chose dans l'OS lui-même qui retourne ce que fait un port lors du déclenchement. Par exemple: Supposons qu'il existe 65536 personnes (ports) dans une usine (machine ou système d'exploitation). À la fois, certains d'entre eux travaillent (actifs) et d'autres non. Donc, si nous leur demandons ce qui se passe (scan de port comme nmap), les gens qui ne travaillent pas ne diront rien (retour nul ou signal inactif) et les gens qui travaillent diront que je fais ceci ou cela (tcp/udp, ssh, ftp, telnet). Donc, je veux rattraper leur réponse et faire un programme pour cela. Aimeriez-vous savoir comment nmap fait cela? Comment déclencher un port et quelle est la réponse de ce port? Comment différencier les différents types de réponses de port? FTP et Telnet sont dans la couche d'application

+0

Cela serait probablement rendu beaucoup plus facile en utilisant certains outils de votre OS, par exemple 'netstat' sur Linux. Est-ce que cela doit vraiment être fait en Java? – Aaron

+0

s'il vous plaît dire la raison pour downvoting s'il y en a. –

Répondre

2

Vous pouvez vérifier le protocole Transport layer en changeant le type de socket, de TCP à UDP (pour l'instant vous ne vérifiez que TCP). Mais pour vérifier le protocole de la couche Application, vous devez savoir comment chaque protocole fonctionne.

Vous pouvez faire un balayage de port complet avec nmap, c'est un outil bien connu pour la numérisation en réseau.

+0

Mais j'utilise Windows machine et Java.Il devrait y avoir un moyen que je ne suis pas capable de trouver. –

+0

Il existe de nombreux protocoles d'application, tels que FTP, HTTP, etc. Vous ne pouvez pas tous les vérifier. Peut-être que vous pouvez essayer de connecter une socket à un port et vérifier le numéro de ce port. Ensuite, vérifiez une liste comme [this] (https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml) afin de déterminer quel service est actif. Mais il y a des outils pour ça, comme je l'ai déjà dit. –