java扫描端口,如何判断端口是用来做什么的(提供什么服务的)?

如题,自己用建立socket的方式扫描端口,代码大概如下:

SocketAddress socketAddress;
                for (port = startPort + serial; port <= endPort; port += threadNumber) {
                    socket = new Socket();
                    socketAddress = new InetSocketAddress(address, port);
                    try {
                        socket.connect(socketAddress, timeout); 
                        socket.close();
                        System.out.println("端口 " + port + " :开放");
                    } catch (IOException e) {
                        // System.out.println("端口 " + port + " :关闭");
                    }
                }

但是这种方式,只能判断端口是不是开放,但是不能判断端口是用来做什么的,想知道,可以采用什么方式得知端口的用途?(http、https、ssh..等等)

我看zenmap是能判断端口的用处以及其他的一些信息的,但是目前还没有搞清楚它是如何做到的..?

以及 还有 如何用java完成syn和fin这些类型的扫描?

自己对java还有端口扫描的认识目前还都处于初级阶段,还请过来人多多指教

阅读 3.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题