常用的网络命令
ping #
它的作用主要为:
1、用来检测网络的连通情况和分析网络速度
2、根据域名得到服务器 IP
3、根据 ping 返回的 TTL 值来判断对方所使用的操作系统及数据包经过路由器数量。
它所利用的原理是这样的:网络上的机器都有唯一确定的 IP 地址,我们给目标 IP 地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。
在 DOS 窗口中键入:ping /?回车显示帮助。
-t 表示将不间断向目标 IP 发送数据包,直到我们强迫其停止。
-l 定义发送数据包的大小,默认为 32 字节,我们利用它可以最大定义到 65500 字节。可以结合上面介绍的-t 参数一起使用,验证网络的承载能力。
-n 定义向目标 IP 发送数据包的次数,默认为4次。通过这个命令可以自己定义发送的个数,对衡量网络速度很有帮助。测试返回的结果可能会显示出丢失出一部分,如果丢失的比较多的话,那么就说明网络不好,可以很直观的判断出网络的情况。
ping-a 解析计算机名与 NetBios 名,就是可以通过 ping 它的 ip 地址,可以解析出主机名。
ping -l size 发送 size 指定大小的到目标主机的数据包。在默认的情况下 Windows 的 ping 发送的数据包大小为32byt,最大能发送65500byt。当一次发送的数据包大于或等于65500byt时,将可能导致接收方计算机宕机。所以微软限制了这一数值;这个参数配合其它参数以后危害非常强大,比如攻击者可以结合 -t 参数实施 DOS 攻击。(所以它具有危险性,不要轻易向别人计算机使用)。
例如:ping -l 65500 -t 211.84.7.46 会连续对 IP 地址执行 ping 命令,直到被用户以 Ctrl+C 中断.这样它就会不停的向 211.84.7.46 计算机发送大小为 65500byt 的数据包,如果你只有一台计算机也许没有什么效果,但如果有很多计算机那么就可以使对方完全瘫痪,网络严重堵塞,由此可见威力非同小可。
ping -r count 在“记录路由”字段中记录传出和返回数据包的路由,探测经过的路由个数,但最多只能跟踪到9个路由。ping -n 1 -r 9 202.102.224.25 (发送一个数据包,最多记录9个路由)将经过 9个路由经过都显示出来了。
批量 ping 网段:对于一个网段 ip 地址众多,如果单个检测实在麻烦,那么我们可以直接批量 ping 网段检测,那个 ip 地址出了问题,一目了然。
先看代码,直接在命令行窗口输入:
for /L %D in (1,1,255) do ping 10.168.1.%D
IP 地址段修改成你要检查的 IP 地址段。
当输入批量命令后,那么它就自动把网段内所有的 ip 地址都 ping 完为止。
那么这段“for /L %D in(1,1,255) do ping 10.168.1.%D” 代码是什么意思呢?
代码中的这个(1,1,255)就是网段起与始,就是检测网段192.168.1.1到192.168.1.255之间的所有的 ip 地址,每次逐增1,直接到1到255这255个 ip 检测完为止。
ping 命令用的较多的就这6类的,大家有可能在项目中会用到的。
ping 命令不一定非得 ping IP,也可以直接 ping 主机域名,这样就可以得到主机的 IP。
nbtstat #
该命令使用 TCP/IP 上的 NetBIOS 显示协议统计和当前 TCP/IP 连接,使用这个命令你可以得到远程主机的 NETBIOS 信息,比如用户名、所属的工作组、网卡的 MAC 地址等。
在此我们就有必要了解几个基本的参数:
-a 使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的 NETBIOS 信息(下同)。
-A 这个参数也可以得到远程主机的 NETBIOS 信息,但需要你知道它的 IP。
-n 列出本地机器的 NETBIOS 信息。
当得到了对方的 IP 或者机器名的时候,就可以使用 nbtstat 命令来进一步得到对方的信息了。
netstat #
这是一个用来查看网络状态的命令,操作简便功能强大。
-a 查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息。用法:netstat -a IP。
-r 列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat -r IP。
tracert #
跟踪路由信息, 使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。
一、命令简介
tracert 是 Windows 网络中的 Trace Route 功能的缩写,用于跟踪路由。基本原理是,通过向目标发送不同 IP 生存时间(TTL)值的 ICMPECHO 报文——“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器转发数据包之前,将数据包上的 TTL 减1.当数据包上的 TTL 减为0时,路由器返回给发送方一个超时信息。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。如果使用 -d 选项,则 Tracert 实用程序不在每个 IP 地址上查询 DNS。
不带选项的 tracert 命令将显示到达目标 IP 地址所经过的路径,并将 IP 地址解析为主机名一同显示。如下图所示,第一跳是网关地址,可以根据看到的主机名,判断我使用的是极路由。
-d 选项:不将地址解析成主机名,能够更快地显示路由器路径。与上图对比,路径是一样的,只是不将 IP 地址解析成主机名,路由追踪速度更快。
-h 选项:默认是30跳。指定跟踪的跃点数。以下的命令只显示5跳,可以看到命令只跟踪到5跳就结束了。一般来说,5跳之内可能还是本地省内链路。
通常在网络问题中,先要排除前端跟设备直接连接的最近的几个设备是否有故障,如果这几个近点跟踪可以正常互通,那么问题可能就出现在后端。
-w 选项:说明等待每一个 ICMP 响应报文的时间,默认4s,如果接收超时,则显示星号*。跳数和等待时间,使用默认值即可,所以平时一般都不需要添加这两个选项。
当网络很慢,或者很卡时,我们要检测是那个设备的反应速度比较慢,所以这里面可以设个标准值,例如上面是直接显示回复6ms以内的设备,超过6ms的设备不显示,就是反应比较慢的,这个数值可以根据情况设置。
-j 选项:说明 ICMP 报文要使用 IP 头中的松散源路由选项,后面是经过的中间节点的地址或主机名字,最多9个,各个中间节点用空格隔开。
这里说明下松散源路由和严格源路由,严格源路由是指,相邻路由器之间不得有中间路由器,并且所经过路由器的顺序不可更改。而松散源路由,则相反,相邻路由器之间可以有中间路由器。一般的路由追踪,也用不到 -j 这个选项。除非是针对大的网络故障,需要检测几条路径到达同一个目的地址,才需要使用 -j 选项。所以,通常情况下,我们使用 tracert –d 这种格式就可以了。我们以追踪百度网站为例。
从路由表中,可以清楚看出到达百度站点的每一跳的 IP 地址。如果追踪不了目的地址,那么故障肯定出在第一个请求超时的节点。
当能够追踪目的地址的时候,有时候也会出现请求超时的现象。这是因为某些核心节点,为了防止 IP 泄露,设置了禁止跟踪。从路由表中,我们还可以看出,每一条都有三个时间,这是因为 tracert 每一跳会发出三个 TTL 包,三个数字都表示 ping 值。有时候,这三个时间,也有可能个别出现星号,即意味着数据报超时没有返回,该节点可能存在问题。当然,也有可能是由于路由器限速的原因。从 tracert 每一跳的三个时间值,我们也可以大致得出每一跳的网络时延。比如在私网和省内,时延都在10ms以内,到了省外就超过了20ms了。如果需要了解每一跳的丢包率等信息,那就必须使用 pathping 命令了。
Tracert 是路由跟踪程序,用于确定 IP 数据报访问目标所经过的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。 在工作环境中有多条链路出口时,可以通过该命令查询数据是经过的哪一条链路出口。
Tracert 一般用来检测故障的位置,我们可以使用用 tracert IP 命令确定数据包在网络上的停止位置,来判断在哪个环节上出了问题,虽然还是没有确定是什么问题,但它已经告诉了我们问题所在的地方,方便检测网络中存在的问题。
二、使用示例
1、获取命令帮助
使用 tracert –help 命令获取帮助
2、跟踪 IP 地址路径
3、跟踪域名路径
4、设置超时时间
5、使用 -d 参数提高回显速度
三、使用语法及参数说明
1、使用语法
用法:tracert [参数] targetname
2、参数说明
参数 参数说明
-d 不将地址解析成主机名。
-h maximum_hops 搜索目标的最大跃点数,默认30。
-j host-list 与主机列表一起的松散源路由(仅适用于 IPv4)。
-w timeout 等待每个回复的超时时间(以毫秒为单位,默认4000毫秒)。
-R 跟踪往返行程路径(仅适用于 IPv6)。
-S srcaddr 要使用的源地址(仅适用于 IPv6)。
-4 强制使用 IPv4。
-6 强制使用 IPv6。
windows 系统使用 tracert -d 命令(加参数 -d 以避免逆向 DNS 解析等待)。如果在运营商骨干网段出现「timeout」或者「reports: Destination host unreachable」,说明 IP 封锁生效(也可能是域名劫持,两者很难区分,可以通过设置不同的 DNS 服务器进行比较)。
net #
这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是微软为我们提供的最好的入侵工具。
首先让我们来看一看它都有那些子命令,键入 net /?
在这里,我们重点掌握几个常用的子命令。
net view 使用此命令查看远程主机的所有共享资源。命令格式为 net view \IP。
net use 把远程主机的某个共享资源影射为本地盘符,图形界面方便使用。命令格式为 net use x:\IP\sharename。下面表示建立 IPC$ 连接(net use \IP\IPC$ “password” /user:“name”)
net start 使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法: net start servername。
net stop 入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就 ok 了,用法和 net start 同。
net user 查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。
键入不带参数的 net user,可以查看所有用户,包括已经禁用的。下面分别讲解:
1、net user abcd 1234 /add,新建一个用户名为 abcd,密码为1234的帐户,默认为 user 组成员。
2、net user abcd /del,将用户名为 abcd 的用户删除。
3、net user abcd /active:no,将用户名为 abcd 的用户禁用。
4、net user abcd /active:yes,激活用户名为 abcd 的用户。
5、net user abcd,查看用户名为 abcd 的用户的情况
net time 这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。
at #
这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序(知道 net time 的重要了吧?)。当我们知道了远程主机的当前时间,就可以利用此命令让其在以后的某个时间(比如2分钟后)执行某个程序和命令。用法: at time command \computer。
ftp #
网络上开放的 ftp 的主机很多,其中很大一部分是匿名的,也就是说任何人都可以登陆上去。下面就给出基本的 ftp 命令使用方法。
首先在命令行键入 ftp 回车,出现 ftp 的提示符,这时候可以键入"help"来查看帮助(任何 DOS 命令都可以使用此方法查看其帮助)。
大家可能看到了,这么多命令该怎么用?其实也用不到那么多,掌握几个基本的就够了。
首先是登陆过程,这就要用到 open 了,直接在 ftp 的提示符下输入"open 主机IP ftp端口"回车即可,一般端口默认都是21,可以不写。接着就是输入合法的用户名和密码进行登陆了,这里以匿名 ftp 为例介绍。
用户名和密码都是 ftp,密码是不显示的。当提示 **** logged in 时,就说明登陆成功。这里因为是匿名登陆,所以用户显示为 Anonymous。
接下来就要介绍具体命令的使用方法了。
dir 跟 DOS 命令一样,用于查看服务器的文件,直接敲上 dir 回车,就可以看到此 ftp 服务器上的文件。
cd 进入某个文件夹。
get 下载文件到本地机器。
put 上传文件到远程服务器。这就要看远程 ftp 服务器是否给了你可写的权限了。
delete 删除远程 ftp 服务器上的文件。这也必须保证你有可写的权限。
bye 退出当前连接。
quit 同上。
telnet #
功能强大的远程登陆命令,几乎所有的网络工作者都喜欢用它,屡试不爽。为什么?它操作简单,如同使用自己的机器一样,只要你熟悉 DOS 命令,在成功以 administrator 身份连接了远程机器后,就可以用它来干你想干的一切了。
下面介绍一下使用方法,首先键入 telnet 回车,再键入 help 查看其帮助信息。
然后在提示符下键入 open IP 回车,这时就出现了登陆窗口,让你输入合法的用户名和密码,这里输入任何密码都是不显示的。
当输入用户名和密码都正确后就成功建立了 telnet 连接,这时候你就在远程主机上具有了和此用户一样的权限,利用 DOS 命令就可以实现你想干的事情了。
pathping #
对于网络工程师来说,需要熟练掌握的 Windows 路由追踪命令有两个:tracert 和 pathping,其中 pathping 是 tracert 和 ping 命令的结合,不但可以追踪目标 IP 地址的路由,还可以测试经过的每一跳的时延和丢包率。
pathping 命令及举例
格式如下:
pathping [-g host-list] [-hmaximum_hops] [-n] [-p period] [-q num_queries] [-w timeout] target_name
-g 选项:使用松散源路由,功能与 tracert 命令的 -j 选项相同。
-h 选项:追踪的最大跳数,功能与 tracert 命令的 -h 选项相同。
-n 选项:不将 IP 地址解析成主机名,功能与 tracert 命令的 -d 选项相同。
-q 选项:发送给每个路由器的请求报文的数量,默认100个。
-p 选项:两次 ping 之间的时间间隔,默认0.25秒。
-w 选项:每次等待回声响应的时间,默认3秒。功能与 tracert 命令的 -w 选项相同。
因此,在通常情况下,我们使用 pathping -n 格式就行了,路由追踪速度更快。
下面,还是以百度为例: pathping -n www.baidu.com
Pathping 运行的第一个结果就是路由表,这个和 tracert 的结果是一致的。
https://pic4.zhimg.com/80/v2-b9244cb077539f79e6ca7d62be23c887_720w.jpg
经过200秒的统计时间,显示时延和丢包率的测试结果。往返时延 RTT,显示省内都在 10ms 以内,省外时延20毫秒以上,链路丢包率都是0,网络质量还是不错的。
https://pic3.zhimg.com/80/v2-54c659ea78cab588495727ae576d24ee_720w.jpg
针对 CDN 网络,当接到客户反馈网络质量不稳定的时候,就可以用 pathping 命令,根据时延和丢包率,来简单判断到底是哪个节点出现了问题。
ARP #
arp 是地址解析协议,其基本功能为透过目标设备的 IP 地址,查询目标设备的 MAC 地址,以保证通信的顺利进行。它是 IPv4 中网络层必不可少的协议,不过在 IPv6 中已不再适用,并被邻居发现协议(NDP)所替代。
说白了,就是通过 ip 地址找到设备 mac 地址。
arp 的命令一般有三个用法,就是查询显示、添加记录、与删除记录,这个在我们做网络项目时经常会用到。
1、 arp -a ,当你需要显示当前 ip 地址对应的 mac 地址时使用
当你需要了解你网络中设备对应的 mac 地址时,你可以使用 arp 地址进行显示,这个有利于我们清楚了解到 ip 地址对应的 mac 地址是哪台设备。
在命令提示符中输入“arp -a”并回车;自动在缓存中,读取 IP 地址和 mac 地址的对应关系表;
2、 arp -s ,当你需要手动添加或绑定一条 arp 记录时使用。
手工输入一条 ARP 项目,格式为“ARP+空格+-a+IP地址+MAC地址”;
在网络中,通常在办公网络或监控项目中,为了防止用户乱改 ip 地址或 ip 地址冲突,我们需要给 ip 地址绑定设备的 mac 地址。
如下图,先用 ARP -s 192.168.1.1 3c-22-3f-5d-f6-77 绑定一条记录,然后用 arp -a 查询了 ARP 记录添加是否成功。
其实这个命令也叫作绑定 mac 地址的命令,例如一个公司的网络,员工经常喜欢改自己电脑的 ip 地址,经常会造成 ip 地址混乱,无法管理,那么这个时候你只需要把它的 ip 地址与它电脑 mac 地址进行绑定,那么下次出现网络故障,就可以直接 mac 地址定位到那几台电脑。
3、 arp -d,当你觉得某条 arp 记录有问题时,可以删除。
其实如果想彻底清空 ARP 列表,需要您禁止所有网络连接,否则网络数据交互过程中仍然会产生新的 ARP 列表。
当你网络中出了问题,可能是有某些 ip 地址发生冲突了,mac 对应的 ip 地址有误,那么你可以对它进行删除这条 arp 记录,然后重新添加新的记录,网络问题就会得到解决。