关于java实现tracert的信息

Tracert有什么用途?

对ISP而言,设立Traceroute网关,将使网络服务提供商帮助用户建立并维持对服务商服务质量的信心。

服务质量高的ISP可以通过设立Traceroute网关,使用户了解其与网络连接以及数据传输的效率。当然,基础设施差,服务质量低的ISP是比较害怕提供这种服务。

因为,这样用户可以使用这一工具了解服务商网络连接情况。

在一台主机安装了相关的Traceroute的CGI程序后,您可以输入相应的目的主机的IP地址或者名字,就可以得到相关的数据。

应用

Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。前面说到,尽管ping工具也可以进行侦测,但是,因为ip头的限制,ping不能完全的记录下所经过的路由器。所以Traceroute正好就填补了这个缺憾。

Traceroute收到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机。

主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报。如此往复直到到达目的主机。这样,traceroute就拿到了所有的路由器ip。从而避开了ip头只能记录有限路由IP的问题。

实现

主叫方首先发出 TTL=1 的数据包,第一个路由器将 TTL 减1得0后就不再继续转发此数据包,而是返回一个 ICMP 超时报文,主叫方从超时报文中即可提取出数据包所经过的第一个网关地址。

然后又发出一个 TTL=2 的 ICMP 数据包,可获得第二个网关地址,依次递增 TTL 便获取了沿途所有网关地址。

需要注意的是,并不是所有网关都会如实返回 ICMP 超时报文。出于安全性考虑,大多数防火墙以及启用了防火墙功能的路由器缺省配置为不返回各种 ICMP 报文,其余路由器或交换机也可被管理员主动修改配置变为不返回 ICMP 报文。

因此 Traceroute 程序不一定能拿全所有的沿途网关地址。所以,当某个 TTL 值的数据包得不到响应时,并不能停止这一追踪过程,程序仍然会把 TTL 递增而发出下一个数据包。一直达到默认或用参数指定的追踪限制(maximum_hops)才结束追踪。

依据上述原理,利用了 UDP 数据包的 Traceroute 程序在数据包到达真正的目的主机时,就可能因为该主机没有提供 UDP 服务而简单将数据包抛弃,并不返回任何信息

为了解决这个问题,Traceroute 故意使用了一个大于 30000 的端口号,因 UDP 协议规定端口号必须小于 30000 ,所以目标主机收到数据包后唯一能做的事就是返回一个“端口不可达”的 ICMP 报文,于是主叫方就将端口不可达报文当作跟踪结束的标志。

以上内容参考 百度百科-traceroute

java实现tracert (不调用CMD)

可以在程序中利用process类启动cmd然后将你想显示的以流的形式显示在cmd中

String cmd = “notepad”;

ProcessBuilder pb = new ProcessBuilder(“cmd.exe”);

Process p = pb.start();

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p

.getOutputStream()));

bw.write(cmd + “\n”);

bw.flush();

System.out.println(“Done”);

if (null != bw) {

bw.close();

}

关于java实现tracert的信息

请教如何用JAVA程序设计实现windows中的tracert功能

import java.net.*;

import java.io.*;

public class Whois extends Thread

{

public String traceCmdUnix = “tracert -h 10 “;

private StringBuffer result = null;

private void pingCmd(String command)

{

result = new StringBuffer();

try

{

Process p;

p = Runtime.getRuntime().exec(command);

readResult(p.getInputStream());

p.destroy();

} catch (Exception e)

{

e.printStackTrace();

}

}

private void readResult(InputStream in)

{

String line = null;

BufferedReader br = new BufferedReader(new InputStreamReader(in));

try

{

while (!this.isInterrupted() (line = br.readLine()) != null)

{

// this.doResultLine(line+”\n”);

System.out.println(line);

}

} catch (IOException e)

{

e.printStackTrace();

} finally

{

try

{

br.close();

} catch (IOException e)

{

}

}

if (this.isInterrupted())

System.out.println(“*** Canceld ***”);

}

public static void main(String args[]) throws Exception

{

Whois MyObj = new Whois();

MyObj.traceCmdUnix = MyObj.traceCmdUnix + ” ” + “”;

MyObj.pingCmd(MyObj.traceCmdUnix);

}

}

java IP反查域名,我随意输入IP,能得到此IP下所有的域名,例子,思路,资料,什么都要

要解决这个问题,首先要明白域名与ip之间的联系。

我们平时在配置本地ip的时候,都会有一个dns,dns的作用就是将域名解析为ip后,找到对应的ip地址上对应的内容,然后在页面打开展示给你。

你现在想要通过ip来得到域名的话,有两种方式:

一种是你找到一个ip与域名对应的数据,然后根据这个数据来查找;

另外的话就是找一下,看看网络上是否有使用ip来查询并返回域名的接口。

通过这个接口来实现域名反查,但是这种接口一般都是专门做ip解析的公司内部使用的,像万网之类的,像ping和tracert返回的数据都是返回的ip的,不会有域名返回来的。

实现windows批处理ping和tracert的输出结果

先建立一个记录ip的记事本,比如在d:\ip.txt,在里面输入ip:

10.0.0.1

172.16.0.1

192.168.0.1

关闭保存。然后打开d:\1.txt,输入

setlocal enabledelayedexpansion

for /f “delims=” %%i in (‘type ip.txt^|find /v “”‘) do (

set a=%%i

ping !a!2.txt

type 2.txt |findstr /c:”(100% loss)”

if %errorlevel%==0 (echo 0ping.txt) else (echo 1ping.txt)

)

保存1.txt,退出,重命名为1.bat,这样只要运行1.bat,它自动在ip.txt中读取ip,然后ping看看能不能通,如果不通,也就是掉包率100% loss,就在2.txt中输入0,通就输入1.

tracrt的话,建立3.bat,在里面输入

setlocal enabledelayedexpansion

for /f “delims=” %%i in (‘type ip.txt^|find /v “”‘) do (

set a=%%i

tracert !a!4.txt

)

关闭保存,这样tracert的资料全都在4.txt中了。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月24日 23:04:44
下一篇 2024年3月24日 23:14:09

相关推荐

  • java关键字词典,java关键字解释

    Java里面字典dictionary怎么定义 1、【Java对象】:Dictionary 类是任何可将键映射到相应值的类(如 Hashtable)的抽象父类。每个键和每个值都是一个对象。在任何一个 Dictionary 对象中,每个键至多与一个值相关联。【C#对象】:TKey。 2、dictionary的意思:字典;词典;辞书;参考书。Dictionary …

    2024年5月19日
    3300
  • java去html标签,js去除html标签

    …mht)转化为纯文本文件,去除页面html标签等,只剩下纯文字信息。_百度… 首先选中Word文档,双击打开。其次在该界面中,选中带HTML标签的文本。接着在该界面中,右键点击“剪切”选项。其次在该界面中,右键点击“只粘贴文本”选项。最后在该界面中,成功显示成纯文本。 如果只是几个文件可以用ie打开hrml网页文件,在浏览器内地址栏…

    2024年5月19日
    3500
  • java定义一个包排序,java sort自定义排序

    java中的排序 最主要的是冒泡排序、选择排序、插入排序以及快速排序冒泡排序 冒泡排序是一个比较简单的排序方法。在待排序的数列基本有序的情况下排序速度较快。 日常操作中,常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序,甚至还有基数排序、鸡尾酒排序、桶排序、鸽巢排序、归并排序等。 直接插入排序:最基本的插入排序,将第i个插入到前i-1个中的…

    2024年5月19日
    3000
  • java当前项目路径,javaweb项目路径问题

    java获取当前路径的几种方法 你好,提问者:指定资源路径的方法有两种:一种是绝对路径,一种是相对路径。 File类有两个常用方法可以得到文件路径一个是:getCanonicalPath(),另一个是:getAbsolutePath(),可以通过File类的实例调用这两个方法例如file.getAbsolutePath()其中file是File的实例对象。 …

    2024年5月19日
    3600
  • java的继承和组合,java中继承的规则

    Java编程:组合,继承和代理的区别 1、继承:从基类继承得到子类,获得基类的特性。代理:在代理类中创建某功能的类,调用类的一些方法以获得该类的部分特性。Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。 2、)组合是在组合类和被包含类之间的一种松耦合关系,而继承则是父类和子类之间的一种紧耦合关系。 3、,继承提高了代码的重复利用性;2,继承是面…

    2024年5月19日
    2700
  • java线程方法stopf,java线程interrupted

    Java中如何正确而优雅的终止运行中的线程 让线程的run()方法执行完,线程自然结束。 终止线程的三种方法: 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。 使用标志 中断线程。使用标志 一种简单的方法是使用线程…

    2024年5月19日
    4100
  • 关于linux下删除的文件在那里恢复的信息

    linux删除的文件怎么恢复 具体方法如下:执行命令“cd/home”进入服务器根目录home。执行命令“touchdemo.txt”创建一个演示文稿。执行命令“rm-rfdemo.txt”删除该文件。执行命令“debugfs”运用系统自带恢复工具debugfs来修复。 在终端窗口中输入命令touch demo.txt创建一个演示文稿。执行命令rm -rf …

    2024年5月19日
    4000
  • 自学java编程,自学java编程要多久

    新手应该如何学习Java编程语言? 1、学习java的第一步是学会使用java程序语言编写程序,学习程序语言的第一步是熟悉其语法的使用。 2、Java要学的好,前期开始就一定要小功夫多练,多敲代码。把数组和字符串练熟了。你才能在开发中游刃有余。因为越到后面你就会发现语言大部分的操作都是在弄字符串和数组。其实数组就相当于一个容器。 3、培养java兴趣 初学者…

    2024年5月19日
    4000
  • java高科技塔防,一款java叫文明的塔防游戏

    国威翻盖手机有一款java三国塔防游戏,可以建造防御塔,塔里可以到木头… 1、你好,这个手机游戏现在更新了,现在游戏都是为安卓手机 设计的了,我哥哥玩梦话三国,就是塔防类的,和你说的很类似 哥哥下载的游戏在PC版应用宝里的,都是很好玩的游戏了。 2、《三国志塔防》《三国志塔防》是一款非常经典的三国塔防游戏,游戏中的画面清晰,音效逼真,玩家需要扮演…

    2024年5月19日
    3800
  • 关于linux函数级热补丁的信息

    linuxos7.6打补丁 patch文件格式介绍如下:Patch多指补丁的意思比如内存补丁、文件补丁等,也是电脑命令程序的一种。一般用来对文件应用更改。patch-patch.exe-进程信息进程文件:patch或者patch.exe。 容器Linux(前身为CoreOS) CoreOS于2016年更名为Container Linux。顾名思义,Conta…

    2024年5月19日
    3800

发表回复

登录后才能评论



关注微信