序
TCP/IP Monitor是Eclipse的Debug工具之一,用於捕獲Http、TCP/IP協議包。
本節記錄如何使用此工具進行監控網路包。
TCP/IP的工作原理可能是這樣的:
客戶端:監視客戶端發送指定服務器的TCP內容
情景:客戶端使用HttpClient 4模擬http請求,向http://10.30.4.92/dahuazwan/發送請求,在Tcp/Ip Monitor捕獲發送出去的包
Tcp/ipMonitor的配置如下:
Local monitoriing port:Tcp/Ip本地監視端口
Host name:要訪問服務器IP
Port:要訪問服務器IP
Type:協議類型
客戶端代碼如下:
- String url = "http://127.0.0.1:7878/dahuazwan/";
- DefaultHttpClient httpclient = new DefaultHttpClient();
- HttpPost httpost = new HttpPost(url);
- StringEntity req_entity = new StringEntity("1234567890");
- req_entity.setContentType("text/json;charset=UTF-8");
- httpost.setEntity(req_entity);
- HttpResponse response = httpclient.execute(httpost);
- HttpEntity entity = response.getEntity();
- System.out.println("Login form get: " + response.getStatusLine() + entity.getContent());
- System.out.println(EntityUtils.toString(entity));
注意:這裏請求url不是服務器真實的IP和端口,而是Tcp/Ip Monitor所在服務器的IP(這裏是本機127.0.0.1)和監視端口7878(即Local monitoriing port)
啓動TCP/IP的監視器,發送請求,得到如下結果,發現成功截獲請求。
整個TCP/IP工作流程如下:客戶端不直接將數據發送服務端,而是將數據先發送到TCP/IP Monitor,然後TCP/IP Monitor再將數據發送的服務端;服務端處理完數據後,再將數據返回給TCP/IP Monitor,TCIP/IP再將處理後的數據轉給客戶端。因爲發送數據和接收數據都經過TCP/IP Monitor,所以它才能捕獲數據。
服務端:監視發送到服務端到數據
服務器在運行,希望截獲瀏覽器訪問服務器的包。
如捕獲訪問URL="http://10.36.24.5:8999/TestPro/MyServlet"的包。
Tcp/ipMonitor的配置如下:
Local monitoriing port:Tcp/Ip本地監視端口
Host name:要訪問服務器IP
Port:要訪問服務器IP
Type:協議類型
啓動監視器,在瀏覽器中輸入以下URL:
- http://127.0.0.1:7878/TestPro/MyServlet
注意:這裏使用的IP和端口都是Tcp/Ip Monitor所在服務器的IP(這裏是本機127.0.0.1)和監視端口7878(即Local monitoriing port)
啓動監視器,訪問服務器URL,可以捕獲截獲的包,捕獲的圖和第一部分相似,不再上圖。
整個TCP/IP工作流程如下:工作流程和上面"監視客戶端發送指定服務器的TCP內容"相似,瀏覽器不直接訪問服務端,而是將數據先發送到TCP/IP Monitor,然後TCP/IP Monitor再將數據發送的服務端;服務端處理完數據後,再將數據返回給TCP/IP Monitor,TCIP/IP再將處理後的數據轉給客戶端。因爲發送數據和接收數據都經過TCP/IP Monitor,所以它才能捕獲數據。