1.ipconfig
**
✍ ipconfig 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(/all 参数)
**
1、使用 ipconfig/all 查看自己计算机的网络配置
可以看到当前我的IP地址,子网掩码Subnet Mask,网关Gatewayd等信息。
2、使用 ipconfig/all 查看旁边计算机的网络配置,其网络号为172.20.10.0,显然可见,两台电脑处于不同子网
2.ping
**
PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序 。ping 是工作在 TCP/IP
网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message
Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。
**
1、要测试到某计算机如 重庆交通大学 Web 服务器的连通性,可以使用 ping www.cqjtu.edu.cn 命令,也可直接使用 IP 地址。
2、使用 ping/?命令,了解更多ping选项和命令
实际使用:
-t使用
-n count 使用
-i count 使用
✎ TroubleShooting
假设你不能 ping 通某计算机或 IP,但你确定该计算机和你之间的网络是连通的,那么可能的原因是什么?该如何处理能保证 ping 通?
1)ping127.0.0.1,测试自己计算机的连通性,如果可以,说明本机网络软件硬件工作正常,否则,问题在本机,检查本机 TCP/IP配置即网卡状态等
2)ping子网内部任一主机,测试子网内连通性,如果可以,说明本子网内部工作正常,否则,问题在本机网络出口到交换机之间,检查本机网卡到交换机的连线等
3)ping网关,测试网关的连通性,如果可以,说明本子网出口工作正常,否则,问题在网关,需要报告给有权限的人来搞定
4)ping目标地址,测试目标地址的连通性,如果可以,那就完成工作,否则,问题在网关以外,需要报告给有权限的人来搞定
当你的网络出现故障不能访问某计算机如 14.215.177.39 (百度的 IP 地址之一 ) 时,我们一般可采用由近及远的连通性测试来确定问题所在。现假设你的 IP 是 192.168.1.89,你旁边计算机的 IP 是 192.168.1.64,网关的 IP 是 192.168.1.1 ,那么过程如下:
1、ping 127.0.0.1 ,测试自己计算机的状态,如果 OK,那么说明本机网络软件硬件工作正常,否则,问题在本机,检查本机 TCP/IP 配置即网卡状态等
✎ TroubleShooting
假设在秘籍中进行的网络排查中,ping 百度的 IP 即 ping 14.215.177.39 没问题,但 ping 百度的域名即 ping www.baidu.com 不行,那么可能的原因是什么?如何进行验证和解决?
可能的原因:
1)TCP/IP协议中“DNS设置”不对,重新设置DNS
2)DNS缓存有误,可在命令行窗口下执行:ipconfig /flushdns
注:ping域名实质是dns服务器解析域名为IP地址再ping这个IP,相关文件:(C:\windows\system32\drivers\etc\host)
3.tracert
✍ TRACERT (Trace Route 的组合缩写),也称为路由追踪,该命令行程序可用于跟踪 Internet 协议 (IP) 数据包传送到目标地址时经过的路径。
1、要了解到某计算机如 www.baidu.com 中间经过了哪些节点(路由器)及其它状态,可使用 tracert www.baidu.com 命令,查看反馈的信息,了解节点的个数。
从图片看中间经过一共14个节点,三个时间表示的是每经过一个节点发出的三个ICMP请求。地址是表示经过路由器的ip地址。星号表示你的网关做过ICMP限制,不允许ICMP回显。
2.可通过网站 http://ip.cn 查看这些节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。
3.ping.pe 这个网站可以探测从全球主要的 ISP 到某站点如 https://qige.io 的线路状态,当然也包括各线路到该主机的路由情况。请使用浏览器访问 http://ping.pe/qige.io 进行了解。
如访问结果如下
4.问题
✎ 问题一
tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?本问题可结合第二部分的 Wireshark 实验进行验证。
原理是利用TTL,首先将TTL设置为1,它会发送出去,就会到达第一个节点,TTL就变为0。这个节点就会将数据丢弃,发回一个消息,这个消息就包含了该节点一些信息。接着就将TTL设置为2,它的数据就会到达第二个节点,TTL又变为0。又会返回得到第二个节点的信息。如此循环,直至到达目的节点。
✎ 问题二
在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?
因为我们都处于子网中,所以当我们访问外网时,第一步都是访问网关,然后由网关给我i们进行下一步连接,所以,访问外网的路径中的第一跳都是相同的,即所在子网的网关
✎ 问题三
在追踪过程中,你可能会看到路径中某些节点显示为 * 号,这是发生了什么?
因为某些路由器对于TTL为零的数据包没有发出“ICMP已超时”的消息,不经询问直接丢弃 TTL 过期的数据包,导致某些路径显示*号。
4.ARP
✍ ARP(Address Resolution Protocol)即地址解析协议,是用于根据给定网络层地址即 IP 地址,查找并得到其对应的数据链路层地址即 MAC地址的协议。 ARP 协议定义在 1982 年的 RFC 826。
1.运行 arp -a 命令查看当前的 arp 缓存, 请留意缓存了些什么。
缓存的内容每个接口的MAC地址列表以及它的类型。
如果再次ping一个在缓存里不存在的ip,那么缓存就会多出一个动态缓存
2.用 arp /? 命令,了解该命令的各种选项。
3.一般而言,arp 缓存里常常会有网关的缓存,并且是动态类型的。假设当前网关的 IP 地址是 192.168.0.1,MAC 地址是 5c-d9-98-f1-89-64,请使用 arp -s 192.168.0.1 5c-d9-98-f1-89-64 命令设置其为静态类型的。
通过修改,发现有报错,不知道是什么原因。
🗣 TroubleShooting
你可能会在实作三的操作中得到 “ARP 项添加失败: 请求的操作需要提升” 这样的信息,表示命令没能执行成功,你该如何解决?
4✎ 问题
在实作三中,为何缓存中常常有网关的信息?
网关是一个子网的进出口,要想实现不同子网直接的通信,就必须要经过网关。
我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点?
将网关或其它计算机的arp信息设置为静态需要手动指定配置和维护,静态arp表项不会被老化,不会被动态ARP表项覆盖。
配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。
“ARP 项添加失败: 请求的操作需要提升” 这样的信息,表示命令没能执行成功,你该如何解决?
netsh -c i i add neighbors “idx” “ip地址” “物理地址”
其中idx为网卡的idx号,可以通过netsh i i show in进行查看
5.DHCP
✍ DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于 IP 网络的网络协议,位于 OSI 模型的应用层,使用 UDP 协议工作,主要有两个用途: 用于内部网或网络服务供应商自动分配 IP 地址给用户
用于内部网管理员对所有电脑作中央管理 简单的说,DHCP 可以让计算机自动获取/释放网络配置
1.一般地,我们自动获取的网络配置信息包括:IP 地址、子网掩码、网关 IP 以及 DNS 服务器 IP 等。使用 ipconfig/release 命令释放自动获取的网络配置,并用 ipconfig/renew 命令重新获取,了解 DHCP 工作过程和原理。
在我重新获取网络配置后网络恢复正常
DHCP的原理是当该服务运行时,计算机提出申请(DHCP Discover广播分组),将从地址池中分配一个可用的IP地址,子网掩码,缺省网关给该计算机。
2.问题
如果你没能成功的释放,请思考有哪些可能的原因并着手进行解决?
可能是它已断开媒体连接,要想释放就需要将媒体连接。通过查找资料发现还有没有加适配器,网卡或驱动也会无法释放成功,想要释放成功就需要添加适配器,网卡或驱动。
在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?
因为自动配置的IP地址和信息只是短暂性的解决计算机不能获取 DHCP
服务器的配置数据的问题,要真正的接入Internet还是得本身计算机的正确IP地址。
6.nestar
**
✍ 无论是使用 TCP 还是 UDP,任何一个网络服务都与特定的端口(Port
Number)关联在一起。因此,每个端口都对应于某个通信协议/服务。 netstat(Network
Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与
IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。
**
1.Windows 系统将一些常用的端口与服务记录在 C:\WINDOWS\system32\drivers\etc\services 文件中,请查看该文件了解常用的端口号分配。
2.使用 netstat -an命令,查看计算机当前的网络连接状况。
7.DNS
**
✍ DNS(Domain Name System)即域名系统,是互联网的一项服务。它作为将域名和 IP
地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 的 53 号端口。
**
1.Windows 系统将一些固定的/静态的 DNS 信息记录在 C:\WINDOWS\system32\drivers\etc\hosts 文件中,如我们常用的 localhost 就对应 127.0.0.1 。请查看该文件看看有什么记录在该文件中。
2.解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用 ipconfig /displaydns 命令查看。我们也可以使用 ipconfig /flushdns 命令来清除所有的 DNS 缓存。
上面内容是DNS记录的缓存,下面是表示清除缓存成功
3.使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用 CloudFlare(1.1.1.1)或 Google(8.8.8.8) 的全球 DNS 服务器来解析
🗣 TroubleShooting
上面秘籍中我们提到了使用插件或自己修改 hosts 文件来屏蔽广告,思考一下这种方式为何能过滤广告?如果某些广告拦截失效,那么是什么原因?你应该怎样进行分析从而能够成功屏蔽它?
原理是再hosts文件中将广告域名对应的ip写为本机(0.0.0.0)。
如果某些广告拦截失效,可能是这个广告域名改了,而我们的hosts文件中有没有写入这个新域名对应本机,所以拦截失败,这是就需要向hosts文件中写入这个新域名对应为本机,这样就可以屏蔽这个之前屏蔽失败的广告了
8.cache
**
✍ cache 即缓存,是 IT 领域一个重要的技术。我们此处提到的 cache 主要是浏览器缓存。 浏览器缓存是根据 HTTP
报文的缓存标识进行的,是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。
**
1.打开 Chrome 或 Firefox 浏览器,访问 https://qige.io ,接下来敲 F12 键 或 Ctrl + Shift + I 组合键打开开发者工具,选择 Network 面板后刷新页面,你会在开发者工具底部看到加载该页面花费的时间。请进一步查看哪些文件被 cache了,哪些没有。
通过图片可以发现加载该页面Load时间是328ms,那些时间为0的文件表示被cache,而时间不为0的文件,则没有被cache。
2.接下来仍在 Network 面板,选择 Disable cache 选项框,表明当前不使用 cache,页面数据全部来自于 Internet,刷新页面,再次在开发者工具底部查看加载该页面花费的时间。你可比对与有 cache 时的加载速度差异。
通过对比图片,可以发现Disable
cache后,Load花费的时间增加很多,明显加载的速度减少了许多。所以,采用cache会增加加载速度。
小结
通过对上面的一些命令的验证性操作,了解到了这些命令的相关用法。
显然上面的这些命令只是冰山一角。更广阔的内容还需要慢慢探索。