Windows奇技淫巧之网络命令行

Posted 沉迷单车的追风少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows奇技淫巧之网络命令行相关的知识,希望对你有一定的参考价值。

写在前面:Linux老鸟会深度沉迷命令行,各种奇技淫巧心中涨,但是windows上的命令行相当好用,各种骚操作也是眼花缭乱。其中网络操作经常使用,本文做一个简单的总结。

目录

1、ipconfig:显示当前TCP/IP配置的设置值

2、ping:测试目的站是否可达及相关状态

3、arp:地址解析协议

4、traceroute:路由跟踪

5、route:操作路由表

6、netstat:显示协议统计信息

7、nbtstat:显示协议统计和当前使用NBI的TCP/IP连接

8、net:黑客入侵必备

9、grep的阉割版替代品:findstr


1、ipconfig:显示当前TCP/IP配置的设置值

首先最常用的当然是ipconfig了,用于显示当前的TCP/IP配置的设置值。

常用的命令如下:

ipconfig                       ... 显示信息
ipconfig /all                  ... 显示详细信息
ipconfig /renew                ... 更新所有适配器
ipconfig /renew EL*            ... 更新所有名称以 EL 开头的连接
ipconfig /release *Con*        ... 释放所有匹配的连接,例如“有线以太网连接 1”或“有线以太网连接 2”
ipconfig /allcompartments      ... 显示有关所有隔离舱的信息
ipconfig /allcompartments /all ... 显示有关所有隔离舱的详细信息

所有选项:

       /?               显示此帮助消息
       /all             显示完整配置信息。
       /release         释放指定适配器的 IPv4 地址。
       /release6        释放指定适配器的 IPv6 地址。
       /renew           更新指定适配器的 IPv4 地址。
       /renew6          更新指定适配器的 IPv6 地址。
       /flushdns        清除 DNS 解析程序缓存。
       /registerdns     刷新所有 DHCP 租用并重新注册 DNS 名称
       /displaydns      显示 DNS 解析程序缓存的内容。
       /showclassid     显示适配器允许的所有 DHCP 类 ID。
       /setclassid      修改 DHCP 类 ID。
       /showclassid6    显示适配器允许的所有 IPv6 DHCP 类 ID。
       /setclassid6     修改 IPv6 DHCP 类 ID。

2、ping:测试目的站是否可达及相关状态

工作在应用层的一个服务命令,主要是向特定目的主机发送ICMP Echo请求报文,来测试目的站是否可达,以及其有关状态。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

语法

ping [-dfnqrRv][-c<完成次数>][-i<间隔秒数>][-I<网络界面>][-l<前置载入>][-p<范本样式>][-s<数据包大小>][-t<存活数值>][主机名称或IP地址]

参数说明

-d 使用Socket的SO_DEBUG功能。
-c <完成次数> 设置完成要求回应的次数。
-f 极限检测。
-i<间隔秒数> 指定收发信息的间隔时间。
-I<网络界面> 使用指定的网络接口送出数据包。
-l<前置载入> 设置在送出要求信息之前,先行发出的数据包。
-n 只输出数值。
-p<范本样式> 设置填满数据包的范本样式。
-q 不显示指令执行过程,开头和结尾的相关信息除外。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。
-R 记录路由过程。
-s<数据包大小> 设置数据包的大小。
-t<存活数值> 设置存活数值TTL的大小。
-v 详细显示指令的执行过程。
-w <deadline> 在 deadline 秒后退出。
-W <timeout> 在等待 timeout 秒后开始执行。

应用举例1:ipconfig查询自己的主机IP,ping自己主机,检查网络配置问题

如果ping自己的主机不通,意味着本地配置存在问题,可能是网线没插好或者交换机挂掉了,应当仔细检查网络配置和各种设备准备好没有。

应用举例2:ping局域网下其他IP,检查局域网问题

如果能够承购接受回复,说明局域网没有问题,也就是交换机没有问题。

应用举例3:ping远程IP

如果成功接收到回复,说明你可以尽情上网冲浪啦~

应用举例4:ping local host

local host 是系统的网络保留名,它是 127.0.0.1 的别名,每台计算机都应该能够将该名字转换成127.0.0.1。如果不是,可能主机host被恶意修改。

3、arp:地址解析协议

ARP是地址解析协议,Address Resolution Protocol,能实现任意网络层地址到任意物理地址的转换,但一般指的是从IP地址定位MAC地址。具体可以参见我之前的一篇博客:ARP地址解析协议

主机向自己所在的网络广播一个ARP请求,该请求包括目标机器的网络地址。此网络上的其他其他机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP请求,其中包含自己的物理地址。

windows命令行中的ARP用于显示和修改地址解析协议(ARP)使用的“IP 到物理”地址转换表。

使用格式

ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]

参数说明

  -a            通过询问当前协议数据,显示当前 ARP 项。
                如果指定 inet_addr,则只显示指定计算机
                的 IP 地址和物理地址。如果不止一个网络
                接口使用 ARP,则显示每个 ARP 表的项。
  -g            与 -a 相同。
  -v            在详细模式下显示当前 ARP 项。所有无效项
                和环回接口上的项都将显示。
  inet_addr     指定 Internet 地址。
  -N if_addr    显示 if_addr 指定的网络接口的 ARP 项。
  -d            删除 inet_addr 指定的主机。inet_addr 可
                以是通配符 *,以删除所有主机。
  -s            添加主机并且将 Internet 地址 inet_addr
                与物理地址 eth_addr 相关联。物理地址是用
                连字符分隔的 6 个十六进制字节。该项是永久的。
  eth_addr      指定物理地址。
  if_addr       如果存在,此项指定地址转换表应修改的接口
                的 Internet 地址。如果不存在,则使用第一
                个适用的接口。

应用实例1:查看高速缓存中的所有项目

arp -a

其他应用

arp -a x.x.x.x:如果你的主机上有多块网卡,加上指定网卡的ip地址,就可以只显示与该网卡相关的arp缓存项目
arp -s x.x.x.x x-x-x-x-x-x:向arp缓存中人工输入一条静态表,为ip和mac的对应关系
arp -d x.x.x.x:人工删除一条静态项目

4、traceroute:路由跟踪

路由跟踪。利用ICMP协议显示可能的路由(路径)并测量数据包在IP层网络上的传输延迟。 路由的历史记录为从路由(路径)中每个连续主机(远程节点)接收到的数据包的往返时间; 每跳平均时间的总和是建立连接所花费的总时间的度量。 除非所有(通常三个)发送的数据包丢失两次以上,否则Traceroute继续进行。和ping命令相比,ping仅计算从目标点开始的最终往返时间,而traceroute能显示整条路径上的数据包的传输情况。

traceroute在windows上命令为tracert。

命令格式

用法: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
               [-R] [-S srcaddr] [-4] [-6] target_name

参数说明

    -d                 不将地址解析成主机名。
    -h maximum_hops    搜索目标的最大跃点数。
    -j host-list       与主机列表一起的松散源路由(仅适用于 IPv4)。
    -w timeout         等待每个回复的超时时间(以毫秒为单位)。
    -R                 跟踪往返行程路径(仅适用于 IPv6)。
    -S srcaddr         要使用的源地址(仅适用于 IPv6)。
    -4                 强制使用 IPv4。
    -6                 强制使用 IPv6。

应用举例1:追踪到某IP地址的路由

tracert 182.92.187.217
 编号   第一次往返时延   第二次往返时延  第三次往返时延  路由器输入端口IP地址
  1     3 ms           1 ms           2 ms           10.196.1.4
  2     1 ms           3 ms           1 ms           10.196.0.25
  3     1 ms           1 ms           1 ms           10.196.0.1
  4     3 ms           1 ms           4 ms           202.117.145.90
  5     *              *              *              请求超时。
  6     *              *              *              请求超时。
  7     3 ms           3 ms           3 ms           202.200.29.5
  8     3 ms           *              3 ms           101.4.117.178
  9    19 ms           19 ms          19 ms          101.4.112.13
 10    23 ms           20 ms          20 ms          219.224.103.38
 11    21 ms           20 ms          20 ms          101.4.130.26
 12    21 ms           46 ms          45 ms          117.49.32.61
 13    22 ms           21 ms          21 ms          10.102.248.245
 14    69 ms           28 ms          25 ms          10.102.248.221
 15    22 ms           21 ms          21 ms          10.36.104.2
 16    22 ms           30 ms          22 ms          182.92.187.217

一般重试三次以上失败就是返回请求超时,以上的过程显示了我们主机找到目标IP地址182.92.187.219的全部路由过程,相当曲折啊哈哈哈。

当网络出现问题的时候,我们可以通过tracert来追查,到底是那个路由出现了问题。

5、route:操作路由表

用于操作网络路由表。只不过现在路由器都会有强大的路由动态解析功能,很少需要我们亲自去操作路由表了。

命令格式

ROUTE [-f] [-p] [-4|-6] command [destination]
                  [MASK netmask]  [gateway] [METRIC metric]  [IF interface]

参数说明


  -f           清除所有网关项的路由表。如果与某个
               命令结合使用,在运行该命令前,
               应清除路由表。

  -p           与 ADD 命令结合使用时,将路由设置为
               在系统引导期间保持不变。默认情况下,重新启动系统时,
               不保存路由。忽略所有其他命令,
               这始终会影响相应的永久路由。

  -4           强制使用 IPv4。

  -6           强制使用 IPv6。

  command      其中之一:
                 PRINT     打印路由
                 ADD       添加路由
                 DELETE    删除路由
                 CHANGE    修改现有路由
  destination  指定主机。
  MASK         指定下一个参数为“netmask”值。
  netmask      指定此路由项的子网掩码值。
               如果未指定,其默认设置为 255.255.255.255。
  gateway      指定网关。
  interface    指定路由的接口号码。
  METRIC       指定跃点数,例如目标的成本。

command参数说明

用于目标的所有符号名都可以在网络数据库
文件 NETWORKS 中进行查找。用于网关的符号名称都可以在主机名称
数据库文件 HOSTS 中进行查找。

如果命令为 PRINT 或 DELETE。目标或网关可以为通配符,
(通配符指定为星号“*”),否则可能会忽略网关参数。

如果 Dest 包含一个 * 或 ?,则会将其视为 Shell 模式,并且只
打印匹配目标路由。“*”匹配任意字符串,
而“?”匹配任意一个字符。示例: 157.*.1、157.*、127.*、*224*。

只有在 PRINT 命令中才允许模式匹配。
诊断信息注释:
    无效的 MASK 产生错误,即当 (DEST & MASK) != DEST 时。
    示例: > route ADD 157.0.0.0 MASK 155.0.0.0 157.55.80.1 IF 1
             路由添加失败: 指定的掩码参数无效。
             (Destination & Mask) != Destination。

应用举例1:查看本机路由表

route print
===========================================================================
接口列表
  7...00 ff 4a a7 e2 e3 ......TAP-Windows Adapter V9
  6...c8 d9 d2 78 f0 94 ......Realtek PCIe GbE Family Controller
 26...00 ff dd 76 9f 68 ......Sangfor SSL VPN CS Support System VNIC
 17...94 b8 6d d2 04 c5 ......Microsoft Wi-Fi Direct Virtual Adapter
 27...96 b8 6d d2 04 c4 ......Microsoft Wi-Fi Direct Virtual Adapter #2
 12...00 ff 7e 6a 1e 52 ......TAP-Windows Adapter V9 #2
 22...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1
 25...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8
  1...........................Software Loopback Interface 1
 15...94 b8 6d d2 04 c4 ......Intel(R) Dual Band Wireless-AC 3168
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
          0.0.0.0          0.0.0.0       10.138.0.1   10.138.195.135    200
       10.138.0.0      255.255.0.0            在链路上    10.138.195.135    356
   10.138.195.135  255.255.255.255            在链路上    10.138.195.135    356
   10.138.255.255  255.255.255.255            在链路上    10.138.195.135    356
        127.0.0.0        255.0.0.0            在链路上         127.0.0.1    331
        127.0.0.1  255.255.255.255            在链路上         127.0.0.1    331
  127.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
    192.168.142.0    255.255.255.0            在链路上     192.168.142.1    291
    192.168.142.1  255.255.255.255            在链路上     192.168.142.1    291
  192.168.142.255  255.255.255.255            在链路上     192.168.142.1    291
    192.168.254.0    255.255.255.0            在链路上     192.168.254.1    291
    192.168.254.1  255.255.255.255            在链路上     192.168.254.1    291
  192.168.254.255  255.255.255.255            在链路上     192.168.254.1    291
        224.0.0.0        240.0.0.0            在链路上         127.0.0.1    331
        224.0.0.0        240.0.0.0            在链路上    10.138.195.135    356
        224.0.0.0        240.0.0.0            在链路上     192.168.142.1    291
        224.0.0.0        240.0.0.0            在链路上     192.168.254.1    291
  255.255.255.255  255.255.255.255            在链路上         127.0.0.1    331
  255.255.255.255  255.255.255.255            在链路上    10.138.195.135    356
  255.255.255.255  255.255.255.255            在链路上     192.168.142.1    291
  255.255.255.255  255.255.255.255            在链路上     192.168.254.1    291
===========================================================================
永久路由:
  无

IPv6 路由表
===========================================================================
活动路由:
 接口跃点数网络目标                网关
 15    356 ::/0                     fe80::aad0:e5ff:fef7:f14a
  1    331 ::1/128                  在链路上
 15    356 2001:da8:4001:3::1:14c8/128
                                    在链路上
 15    356 fe80::/64                在链路上
 25    291 fe80::/64                在链路上
 22    291 fe80::/64                在链路上
 25    291 fe80::855c:e86a:3636:553/128
                                    在链路上
 22    291 fe80::d587:3d64:fcd3:d4ee/128
                                    在链路上
 15    356 fe80::eca3:4e7d:660a:f6bb/128
                                    在链路上
  1    331 ff00::/8                 在链路上
 15    356 ff00::/8                 在链路上
 25    291 ff00::/8                 在链路上
 22    291 ff00::/8                 在链路上
===========================================================================
永久路由:
  无

应用举例2:route add:添加路由表。例如 设定一个到目的网络 130.130.233.233 的路由,其间要经过 5 个路由器网段,首先要经过本地网络上的一个IP 为 130.130.233.5的路由器,子网掩码为 255.255.255.0

route add 130.130.233.233 mask 255.255.255.0 130.130.233.5 metric 5

应用举例3:route change: 修改数据的传输路由。注意,不能使用本命令来改变数据的目的地。

route add 130.130.233.233 mask 255.255.255.0 130.130.233.5 metric 3

应用举例4:route delete:删除路由。例如:route delete 130.130.233.233

6、netstat:显示协议统计信息

显示协议统计信息和当前 TCP/IP 网络连接。查看某个端口号是否占用,为哪个进程所占用。

协议格式

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-t] [-x] [-y] [interval]

参数说明

  -a            显示所有连接和侦听端口。
  -b            显示在创建每个连接或侦听端口时涉及的
                可执行文件。在某些情况下,已知可执行文件托管
                多个独立的组件,此时会
                显示创建连接或侦听端口时
                涉及的组件序列。在此情况下,可执行文件的
                名称位于底部 [] 中,它调用的组件位于顶部,
                直至达到 TCP/IP。注意,此选项
                可能很耗时,并且可能因为你没有足够的
                权限而失败。
  -e            显示以太网统计信息。此选项可以与 -s 选项
                结合使用。
  -f            显示外部地址的完全限定
                域名(FQDN)。
  -n            以数字形式显示地址和端口号。
  -o            显示拥有的与每个连接关联的进程 ID。
  -p proto      显示 proto 指定的协议的连接;proto
                可以是下列任何一个: TCP、UDP、TCPv6 或 UDPv6。如果与 -s
                选项一起用来显示每个协议的统计信息,proto 可以是下列任何一个:
                IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
  -q            显示所有连接、侦听端口和绑定的
                非侦听 TCP 端口。绑定的非侦听端口
                不一定与活动连接相关联。
  -r            显示路由表。
  -s            显示每个协议的统计信息。默认情况下,
                显示 IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
                -p 选项可用于指定默认的子网。
  -t            显示当前连接卸载状态。
  -x            显示 NetworkDirect 连接、侦听器和共享
                终结点。
  -y            显示所有连接的 TCP 连接模板。
                无法与其他选项结合使用。
  interval      重新显示选定的统计信息,各个显示间暂停的
                间隔秒数。按 CTRL+C 停止重新显示
                统计信息。如果省略,则 netstat 将打印当前的
                配置信息一次。

应用举例1:显示所有连接和监听端口

netstat -a

活动连接

  协议  本地地址                 外部地址                状态
  TCP    0.0.0.0:135            WANGQIANG:0            LISTENING
  TCP    0.0.0.0:445            WANGQIANG:0            LISTENING
  TCP    0.0.0.0:1080           WANGQIANG:0            LISTENING
  TCP    0.0.0.0:5040           WANGQIANG:0            LISTENING
  TCP    0.0.0.0:8680           WANGQIANG:0            LISTENING
  TCP    0.0.0.0:49664          WANGQIANG:0            LISTENING
  TCP    0.0.0.0:49665          WANGQIANG:0            LISTENING
  TCP    0.0.0.0:49666          WANGQIANG:0            LISTENING
  TCP    0.0.0.0:49667          WANGQIANG:0            LISTENING
  TCP    0.0.0.0:49668          WANGQIANG:0            LISTENING
  TCP    0.0.0.0:49669          WANGQIANG:0            LISTENING
  TCP    0.0.0.0:49675          WANGQIANG:0            LISTENING
  TCP    0.0.0.0:57023          WANGQIANG:0            LISTENING
  TCP    10.138.195.135:139     WANGQIANG:0            LISTENING
  TCP    10.138.195.135:51152   40.90.189.152:https    ESTABLISHED

应用举例2:监听UDP/TCP端口

netstat -p udp
netstat -p tcp

7、nbtstat:显示协议统计和当前使用NBI的TCP/IP连接

该命令使用TCP/IP上的NetBios显示协议统计和当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。

命令格式

NBTSTAT [ [-a RemoteName] [-A IP address] [-c] [-n]
        [-r] [-R] [-RR] [-s] [-S] [interval] ]

参数释义

  -a   (适配器状态)    列出指定名称的远程机器的名称表
  -A   (适配器状态)    列出指定 IP 地址的远程机器的名称表。
  -c   (缓存)          列出远程[计算机]名称及其 IP 地址的 NBT 缓存
  -n   (名称)          列出本地 NetBIOS 名称。
  -r   (已解析)        列出通过广播和经由 WINS 解析的名称
  -R   (重新加载)      清除和重新加载远程缓存名称表
  -S   (会话)          列出具有目标 IP 地址的会话表
  -s   (会话)          列出将目标 IP 地址转换成计算机 NETBIOS 名称的会话表。
  -RR  (释放刷新)      将名称释放包发送到 WINS,然后启动刷新

  RemoteName   远程主机计算机名。
  IP address   用点分隔的十进制表示的 IP 地址。
  interval     重新显示选定的统计、每次显示之间暂停的间隔秒数。
               按 Ctrl+C 停止重新显示统计。

8、net:黑客入侵必备

主要用于对远程主机动手动脚。例如用net start启动远程主机的服务,net stop直接杀死远程主机的进程,net view查看远程主机共享资源,net time查看远程主机当前时间,net use把远程主机的某个共享资源影射为本地盘符。

可用命令

  NET ACCOUNTS             NET HELPMSG              NET STATISTICS
  NET COMPUTER             NET LOCALGROUP           NET STOP
  NET CONFIG               NET PAUSE                NET TIME
  NET CONTINUE             NET SESSION              NET USE
  NET FILE                 NET SHARE                NET USER
  NET GROUP                NET START                NET VIEW

9、grep的阉割版替代品:findstr

用过Linux正则的一定对此念念不忘,windows提供了grep的阉割版替代品findstr,很遗憾不支持完整版正则,不过总比肉眼过滤强,不是吗?

参数释义:

FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P] [/F:file]
        [/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
        strings [[drive:][path]filename[ ...]]

  /B         在一行的开始配对模式。
  /E         在一行的结尾配对模式。
  /L         按字使用搜索字符串。
  /R         将搜索字符串作为一般表达式使用。
  /S         在当前目录和所有子目录中搜索匹配文件。
  /I         指定搜索不分大小写。
  /X         打印完全匹配的行。
  /V         只打印不包含匹配的行。
  /N         在匹配的每行前打印行数。
  /M         如果文件含有匹配项,只打印其文件名。
  /O         在每个匹配行前打印字符偏移量。
  /P         忽略有不可打印字符的文件。
  /OFF[LINE] 不跳过带有脱机属性集的文件。
  /A:attr    指定有十六进位数字的颜色属性。请见 "color /?"
  /F:file    从指定文件读文件列表 (/ 代表控制台)。
  /C:string  使用指定字符串作为文字搜索字符串。
  /G:file    从指定的文件获得搜索字符串。 (/ 代表控制台)。
  /D:dir     查找以分号为分隔符的目录列表
  strings    要查找的文字。
  [drive:][path]filename
             指定要查找的文件。

参考

 

以上是关于Windows奇技淫巧之网络命令行的主要内容,如果未能解决你的问题,请参考以下文章

手把手写C++服务器:Linux四大必备网络分析工具

手把手写C++服务器:Linux四大必备网络分析工具

奇技淫巧之dummy网卡

从Python新手到高手的68行代码

Python从入门到入土的90行代码

Linux 下Python 脚本编写的“奇技淫巧“