前言
在调试TCP/IP功能的时候,难免要和Windows系统打交道,做一些网络相关的操作。本文将Windows环境下的常用网络相关Dos命令做一梳理。
按命令划分
ipconfig
ip相关配置工具,类似于Linux系统里的ifconfig命令;
ping
可能是windows下使用频率TOP3的网络命令了,几乎是众所周知的命令了;
tracert命令
路由跟踪实用程序,用于确定 IP 数据包访问目标所采取的路径;
netsh
- 功能强大的网络配置工具;
- 可参考链接:
Network Shell (Netsh) Overview
arp
arp相关操作,Linux下也有类似命令;
route
路由相关配置,Linux下也有类似命令;
nslookup
域名查询相关,类似于linux系统的dig命令;
net
常用的是net use命令;
netstat
一般用于检验本机各端口的网络连接情况,Linux下也有类似命令。
nbtstat
查看NETBIOS状态的命令;
set
显示、设置或删除 cmd.exe环境变量,类似于Linux的setenv命令。
按功能划分
路由
查看
route print
增加路由
route add 10.44.0.0 mask 255.255.0.0 10.46.40.129 -p # 10.44.0.0为目的IP; # 255.255.0.0为掩码; # 10.46.40.129为网关; # -p为永久
删除路由
route delete 10.44.0.0
DNS相关
查看dns
ipconfig /displaydns
清dns缓存
ipconfig /flushdns
域名查询
nslookup #交互式查询 nslookup Domain nslookup domain [dns-server] #如不指定dns-server,则使用默认服务器查询;如指定DNS服务器,则去指定服务器查询域名 nslookup -d Domain #查询更详细的域名信息 nslookup -qt=cname Domain #指定参数,查询其它记录,如CNAME
例子:
C:\Users\qxhgd>nslookup www.baidu.com 服务器: nj.net.zte Address: 10.40.8.8 非权威应答: 名称: www.wshifen.com Address: 103.235.46.39 Aliases: www.baidu.com www.a.shifen.com
C:\Users\qxhgd>nslookup www.baidu.com 114.114.114.114 服务器: public1.114dns.com Address: 114.114.114.114 非权威应答: 名称: www.a.shifen.com Addresses: 36.152.44.96 36.152.44.95 Aliases: www.baidu.com```
hosts文件
C:\Windows\System32\drivers\etc\hosts
- Hosts 的请求级别比 DNS 高。
- 常用于屏蔽特定域名、加速域名解析(FQ)、虚拟域名解析等场景。
ARP
查看ARP条目
arp /a
清除ARP条目
arp /d
添加静态ARP条目
arp -s 157.55.85.212 00-aa-00-62-c6-09
邻居表
windows查看邻居缓存,IPv4和IPv6两种情况
netsh interface ipv6 show neighbors netsh interface ipv4 show neighbors
绑定ARP
netsh interface ipv4 set neighbors 11 "192.168.0.1" "c8-d3-a3-02-97-56" store=persistent netsh interface ipv4 set neighbors 11 "192.168.0.1" "c8-d3-a3-02-97-56" store=active
这个绑定ARP的操作和之前添加ARP静态条目的作用类似。
MTU
MTU查看
netsh interface ipv4 show subinterfaces
MTU修改
netsh interface ipv4 set subinterface "WLAN 2" MTU=2000 store=persist
ping包
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
例1、不停的ping
C:\Users\qxhgd>ping 192.168.1.1 -t 正在 Ping 192.168.1.1 具有 32 字节的数据: 来自 192.168.1.1 的回复: 字节=32 时间<1ms TTL=64
例2、ping指定长度
C:\Users\qxhgd>ping 192.168.1.1 -l 128 正在 Ping 192.168.1.1 具有 128 字节的数据: 来自 192.168.1.1 的回复: 字节=128 时间<1ms TTL=64
网络连接状态
netstat -a #显示所有socket,常用netstat -an netstat -n #以网络IP地址代替名称,显示网络连接情况; netstat -p #按协议查看,如netstat -p tcp/ip netstat -s #查看正在使用的所有协议使用情况 netstat -an #查看所有被打开的端口列表: netstat -ano #产看电脑端口占用情况 netstat -ano | findstr "80" #查看具体某个端口被占用的情况 tasklist | findstr "80" #查看某个端口具体被那个应用占用
netstat的选项比较多:
C:\Windows\system32>netstat ? 显示协议统计信息和当前 TCP/IP 网络连接。 NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p proto] [-r] [-s] [-x] [-t] [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 将打印当前的 配置信息一次。
例:
C:\Users\qxhgd>netstat 活动连接 协议 本地地址 外部地址 状态 TCP 10.40.164.55:2009 10.40.164.9:9053 ESTABLISHED TCP 10.40.164.55:2026 10.40.164.9:9053 ESTABLISHED TCP 10.40.164.55:2174 10.41.134.23:8237 ESTABLISHED
Netbios连接状态
nbtstat -A ip 对方136到139其中一个端口开了的话,就可查看对方最近登陆的用户名
网络共享
net use \\ip /user:user net use \\ip password /user:user net use \\ip /del
下面的例子,在不同用户名访问同一IP的samba的时候可能会用到:
net use \\10.40.40.11 /user:Administrator net use \\10.40.40.11 "password" /user:"Administrator" net use \\10.40.40.11 "password" /del
和net use命令类似的,还有一个net user命令,不要混淆了。
网卡配置
固定IP和DNS设置:
set netname="以太网" //网卡名 set ip=192.168.90.66 //本机IP地址 set subnetmask=255.255.255.0 //子网掩码 set gateway=192.168.90.1 //网关 set dns1=8.8.8.8 //默认DNS set dns2=8.8.4.4 //备用DNS netsh interface ip set address name=%netname% source=static addr=%ip% mask=%subnetmask% gateway=%gateway% gwmetric=1 //默认网关的跃点数 netsh interface ip set dns name=%netname% source=static addr=%dns1% primary //主要的 netsh interface ip add dns name=%netname% addr=%dns2% index=2 //为指定的DNS服务器地址
自动获取(IP和DNS)
set netname="以太网" //网卡名 netsh interface ip set address name=%netname% source=dhcp netsh interface ip set dns name=%netname% source=dhcp
一般,在自动化测试环境中,使用批处理动态操作网卡时会用到。
小结
- 在调试TCP/IP相关功能的时候,上述命令经常要用到,不同场景选用不同命令。
- 比如一个场景,调试PC有两个网卡,同时连接内外网。现在需要内网IP走网卡1,外网IP走网卡2,此时静态路由就派上用场了。