【问题标题】:How can I find my packets of my Java application on Wireshark?如何在 Wireshark 上找到我的 Java 应用程序包?
【发布时间】:2020-08-31 19:39:45
【问题描述】:

我使用的是 Windows 10。

我在 Java 上有这个服务器程序:

    import java.io.*;
import java.net.*;

public class TCPServer {
    
    public static final int TCP_SERVER_PORT = 6789;    //mer eller mindre tilfeldig valg portnr.
    
    public static void main(String args[]) throws Exception
    {
        String setningFraKlient;
        String oversattSetning;

        //Lytter på port TCP_SERVER_PORT:
        System.out.println("Lytter paa TCP-port " + String.valueOf(TCP_SERVER_PORT) + " ...");     
        
        ServerSocket welcomeSocket = new ServerSocket(TCP_SERVER_PORT);
        while(true) {
            //Tjeneren venter, 'henger' på accept(), på at klienten skal ta kontakt:
            Socket connectionSocket = welcomeSocket.accept();
          
            //Fortsetter, skriver ut IP-adressen til klienten:
            System.out.println("Kontakt med: " + connectionSocket.getRemoteSocketAddress().toString());     
            
            //Kopler connectionsocket til InputStream:
            InputStreamReader isr = new InputStreamReader(connectionSocket.getInputStream());
    
            BufferedReader fraKlient = new BufferedReader(isr);
            
            //Kopler OutputStream til connectionsocket:
            DataOutputStream tilKlient = new DataOutputStream(connectionSocket.getOutputStream());

            //Leser data fra klienten:
            setningFraKlient = fraKlient.readLine();
            System.out.println("Tekst fra klient: " + setningFraKlient);     
            
            //Oversetter til store bokstaver:
            oversattSetning = setningFraKlient.toUpperCase() + '\n';
            System.out.println("Gjør om til store bokstaver, returnerer:" + oversattSetning);
            
            //Sender store bokstaver i retur:
            tilKlient.writeBytes(oversattSetning);
        }
    }
}

还有这个 Java 客户端程序:

import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String args[]) throws Exception
    {
        String sentence="";
        String modifiedSentence="";

        //Oppretter forbindelse mot localhost på port 6789:
        Socket clientSocket = new Socket("localhost", TCPServer.TCP_SERVER_PORT);
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
        BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        //Spør bruker etter tekst:
        System.out.print("Skriv inn tekst: ");
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        sentence = inFromUser.readLine();
        outToServer.writeBytes(sentence + '\n');
        modifiedSentence = inFromServer.readLine();

        //Skriv ut tekst som store bokstaver:
        System.out.println("\nTekst som store bokstaver: ");
        System.out.println(modifiedSentence);

        //Lukk socket og avslutt:
        clientSocket.close();
    }
}

正如您在服务器代码上看到的,我使用“localhost”来测试程序,并且使用端口号 6789。

当我运行程序时,它按预期工作:

  1. 我首先运行服务器程序。
  2. 然后我运行客户端程序。
  3. 我将一些消息写成字符串。
  4. 我得到了所有字母都转换为大写的字符串。

我启动 WireShark 并执行以下操作:

  1. 我点击“Go -> Options”,然后选择我用来连接互联网的“Wi-fi”。 “链路层标头”是“以太网”。
  2. 然后我在 Wireshark 上看到不同的数据包或即将到来(UDP、TCP、TLS 等)
  3. 我在 Ecplipse 上启动 Java 程序,输入字符串,发送并接收大写版本 如上所述。
  4. 然后我停止 Wireshark。

Wireshark 中的过滤器行是空白的,那里没有过滤器。 我可以看到很多数据包进入 Wireshark。 但是我找不到任何使用端口号 6789 的数据包,尽管我的应用程序正在使用它。 而且我找不到任何名称为 Java 的数据包。

简而言之,我找不到在我的 Java 应用程序上发送的数据包。为什么会这样?如何找到数据包?

另一件事是,尽管我删除了所有浏览器缓存,但并非我访问的所有网站都在 WireShark 上可见。我访问了一个网站,但这在 WireShark 上是不可见的。我单击了该站点中指向 Wikipedia 的链接,但这也是不可见的。

然后我访问 stackoverflow.com,它在 WireShark 上可见,我得到响应“301 永久移动”。

【问题讨论】:

    标签: sockets wireshark tcpclient


    【解决方案1】:

    在 Linux 上,您需要在环回接口上捕获数据包。在 Windows 上,您必须安装 Npcap 并选择 Npcap 环回接口。 AFAIK Npcap 附带 Wireshark 安装程序。

    不确定您是否需要成为 root(在 Linux 上)或管理员(在 Windows 上)才能捕获流量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-18
      • 2021-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多