前言
在调试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
一般,在自动化测试环境中,使用批处理动态操作网卡时会用到。
抓包
开始抓包
netsh trace start [OTHER OPTIONS]
netsh trace start capture=YES report=YES persistent=YES #基本的启用持续追踪并生成报告的方式
停止抓包
netsh trace stop #停止追踪的方式如下:
注:netsh抓到的报文需要经过特定软件(windows message analyzer)才能打开。
小结
- 在调试TCP/IP相关功能的时候,上述命令经常要用到,不同场景选用不同命令。
- 比如一个场景,调试PC有两个网卡,同时连接内外网。现在需要内网IP走网卡1,外网IP走网卡2,此时静态路由就派上用场了。
如本文对你有些许帮助,欢迎打赏:
支付宝打赏链接