经过大三上学期短暂的计算机网络的学习,从几乎零基础过渡到小白的阶段。在这里特别表扬一下我的计网老师,单从授课方面讲,本以为晦涩难懂的计网知识,在他的讲解和各种引导下,我也能够跟上进度,感受计算机网络的巧妙和魅力。当然,撰写本章的目的主要是为了完成实验报告要求,但我尽可能把每个概念理解更为透彻一点。
ipconfig
该命令主要用来显示所有当前的 TCP/IP 网络配置值,并刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。
那么什么是DHCP?什么是DNS呢?本章后面会娓娓道来,此处主要讨论ipconfig相关的知识。
ipconfig /all:控制台命令,用来查看当前计算机的网络配置。
以太网适配器 以太网: // 网络适配器,又称网卡,Data Access Layer 的硬件。每个网卡拥有独一无二的MAC地址。
连接特定的 DNS 后缀 . . . . . . . : // 用于DNS服务器,标识当前DNS服务器负责哪些域名。如:.com 、.cn
描述. . . . . . . . . . . . . . . : Realtek PCIe GbE Family Controller // 网卡的品牌描述。
物理地址. . . . . . . . . . . . . : 24-4B-FE-88-71-D3 // 网卡对应的MAC地址。
DHCP 已启用 . . . . . . . . . . . : 是 // 默认开启,表示IP自动获取。
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::c197:13f5:3a88:405e%10(首选) // pv6表示法的ip地址%后面的10是网络号的个数.
IPv4 地址 . . . . . . . . . . . . : 10.60.56.18(首选) // 本机在局域网的IP地址。
子网掩码 . . . . . . . . . . . . : 255.254.0.0 // 化成二进制,前面是1的表示为网络号,后面为0的表示为主机号。与IP地址结合使用。用于判断两台计算机是否属于同一网段。
获得租约的时间 . . . . . . . . . : 2022年11月12日 13:57:15 // 与DHCP相关,此ip地址的开始使用时间。
租约过期的时间 . . . . . . . . . : 2022年11月13日 13:57:15 // 与DHCP相关,此ip地址的到期时间。
默认网关. . . . . . . . . . . . . : 10.60.255.254 // 当找不到可用网关时,就把数据包发给默认指定的网关,由这个网关来处理数据包。通常指路由器的地址。
DHCP 服务器 . . . . . . . . . . . : 172.18.1.101 // 提供DHCP服务的主机的IP地址
DHCPv6 IAID . . . . . . . . . . . : 170150910 // 身份关联标识符。
DHCPv6 客户端 DUID . . . . . . . : 00-01-00-01-26-AC-75-61-24-4B-FE-88-71-D3 // DHCP 唯一标识符 。
DNS 服务器 . . . . . . . . . . . : 61.128.128.68 // 用于域名查找
202.202.240.33
TCPIP 上的 NetBIOS . . . . . . . : 已启用 // Network Basic Input/Output System 网络基本输入输出系统,是一种应用程序接口。
引申问题1: 电脑在同一个局域网下就是在同一个网段内吗?
:不一定,同一个网段指的通过子网掩码解析后,网络号相同,主机号不同,在1-255范围内。而同一个局域网中可能包含多个路由器,主机可能位于不同的路由器,导致IP可能不在一个网段。
引申问题2: 网关是什么?
:网关(Gateway),又称网间连接器,大多数运行在应用层。与路由器结构类似。网关是一个翻译器,对收到的信息要重新打包,以适应目的系统的需求。同时,提供过滤和安全功能。网关实质上是一个网络通向其他网络的IP地址。
引申问题3: 网关与路由器的区别?
:① 网关主要是用来连接两种不同的网络,同时,它还能够同时与两边的主机之间进行通信。但是两边的主机是不能够直接进行通信,是必须要经过网关才能进行通信。网关的工作是在应用层当中。② 路由器它是属于网络层设备,通常是以包为单位进行数据的发送。③ ‘网关’指代一个概念,不具体特指一类产品,只要连接两个不同的网络的设备都可以叫网关,故网关可以是路由器,交换机或者是PC任一;而‘路由器’一般特指能够实现路由寻找和转发的特定类产品。
ping
ping 是应用层的一个服务命令,主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。
ping www.cqjtu.edu.cn
引申问题1: 相关术语分析
:① 字节代表数据包的大小。② 时间顾名思义就是返回时间。③ TTL:Time To Live,该字段指定IP包被路由器丢弃之前允许通过的最大网段数量(途径路由器的数量)。TTL用来计算数据包在路由器的消耗时间,每经过一个路由器节点TTL都减一,当然得到的这个TTL是剩余的生存时间。例如:ping 本机。
可以发现,TTL值很大,为128。表示当前获得报文信息无需经过其他网段。
ping命令的各种选项使用:
① ping -a srcAddr:将地址解析为主机名。
② ping -n count srcAddr:要发送的回显请求数。
③ ping -S srcAddr:ping时要使用的源地址。
④ ping -t srcAddr:Ping 指定的主机,手动停止。(linux 默认的方法)
⑤ ping -l size srcAddr:发送缓冲区大小。
引申知识1:当网络出现故障不能访问某计算机如 14.215.177.39 (百度的 IP 地址之一 ) 时,可以采用由近及远的连通性测试来确定问题所在。假设本机IP 是 192.168.1.89,旁边计算机的 IP 是 192.168.1.64,网关的 IP 是 192.168.1.1 ,那么过程如下:
- ping 127.0.0.1 ,测试自己计算机的状态。如果 OK,那么说明本机网络软件硬件工作正常,否则,问题在本机,检查本机 TCP/IP 配置即网卡状态等。
- ping 192.168.1.64 ,测试到旁边计算机的连通性。如果OK,那么说明本子网内部工作正常,否则,问题在本机网络出口到交换机之间,检查本机网卡到交换机的连线等。
- ping 192.168.1.1,测试到网关的连通性。如果 OK,那么说明本子网出口工作正常,否则,问题在网关。
- ping 14.215.177.39,测试到百度的连通性,如果 不OK,问题出于网关以外。
引申知识2:死亡之ping(ping -l 65500 www.baidu.com -t):首先以太网长度有限,IP包片段被分片。当一个IP包的长度超过以太网帧的最大尺寸时,包就会被分片,作为多个帧来发送。接收端的机器提取各个分片,并重组为一个完整的IP包。在正常情况下,IP头包含整个IP包的长度。当一个IP包被分片以后,头只包含各个分片的长度。分片并不包含整个IP包的长度信息,因此IP包一旦被分片,重组后的整个IP包的总长度只有在所在分片都接受完毕之后才能确定。通俗来说,就是对方IP内存溢出,达到使对方系统崩溃的效果。
引申问题1:ping IP 没问题,但是ping IP地址对应的域名不行。那么可能的原因是什么?又该如何解决?
原因: 首先明确能ping通ip 代表链路是通的,ping不通域名只能说明是域名解析出现了问题。目前大多数都是使用自动获取DNS服务器,但是有些时候,使用默认的DNS服务器是ping 不通域名的。可使用nslookup + 域名 看下是哪个域名服务器。
解决方法: 将DNS 配置成固定的,比如google的DNS 8.8.8.8 或者电信的 101.226.4.6或者114.114.114.114。 如果还是Ping不通 则可联系给域名服务的服务商,他们会给出dns服务器。
tracert
提示:Trace Route 路由追踪。该命令行可用于跟踪数据包传送到目标地址时经过的路径。
Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP(Internet Control Message Protocol) 错误消息来确定从一个主机到网络上其他主机的路由。
**工作原理:**通过向目标发送不同 TTL值的回应数据包,路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。若数据包上的 TTL 减为 0 时,路由器将“ICMP 已超时”的消息发回源系统。
具体过程: Tracert 先发送 TTL 为 1 的回应数据包,随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。
tracert www.baidu.com
λ tracert www.baidu.com
通过最多 30 个跃点跟踪
到 www.a.shifen.com [14.215.177.39] 的路由:
1 3 ms 2 ms 3 ms 10.60.255.254
2 2 ms 2 ms 2 ms 172.19.2.2
3 4 ms 4 ms 5 ms 183.64.62.161
4 4 ms 4 ms 4 ms 222.176.89.77
5 4 ms * 4 ms 222.176.88.69
6 * * * 请求超时。
7 * * * 请求超时。
8 * 29 ms * 113.96.4.214
9 29 ms 29 ms 28 ms 121.14.14.162
10 33 ms 33 ms 33 ms 14.215.32.122
11 * * * 请求超时。
12 29 ms 30 ms 29 ms 14.215.177.39
引申问题1:如何解释不同的网络请求,路径中的前几跳都是相同的?
:(个人理解,不一定正确)第一跳的地址是本地的默认网关;第二跳是负责管理该区域的局域网内部路由器;由于本机的IP地址属于中国电信,故第三跳是中国电信在笔者大学的出口路由器,负责连入广域网与外部设备进行交互。三者是本机连入互联网的基础路径,只要本地默认网关不变,访问外部资源的前三跳都不会发生变化。
引申问题2:在路由追踪过程中,可能会看到路径中某些节点显示为 * 号,这是为什么?
:从指定源地址(该处默认为主机)追踪到目的IP地址的路径时,主机发送不同TTL的ICMP数据包,在传播过程中,如果当前获取到数据包的路由器解析地址不属于本地地址,则将TTL减一后继续路由。当TTL为零时,则向源地址发送ICMP已超时,此时就可以获取该中间节点路由器的IP地址。但有的路由器在TTL为零时,不发送ICMP超时消息,直接将它们丢弃,故主机无法获得该TTL值对应的路由器IP地址,用 * 表示。tracert命令主机设置了超时时间,等待一段时间后,若无法接受到ICMP超时消息,则将TTL加一,重新发送。该举措主要原因是这个路由器节点禁止ping 和 tracert 操作,提高自身的安全性和隐蔽性。
拓展1:https://ip.cn/ 网站可以查看这些路由器节点位于何处,是哪个公司的,大致清楚本机到百度服务器之间的路径。
ARP
ARP(Address Resolution Protocol)即地址解析协议,属于数据链路层的协议。是用于根据给定网络层地址即 IP 地址,查找并得到其对应的数据链路层地址即 MAC地址的协议。 即询问目标IP对应的MAC地址。
ARP原理: 请求应答。在局域网的通信中,不仅需要源目IP地址的封装,也需要源目MAC的封装。
那么为什么ARP只能用于局域网呢?(或者说ARP只属于局域网的概念呢)
:ARP是在数据链路层的协议。在一个局域网内,数据的转发是根据MAC表的,在同一个局域网的主机互访就需要三层设备(路由器,三层交换机等),他们通过ip地址进行数据包的转发,所以用arp -a只能显示当前局域网的arp表。
ARP的工作流程: 在同一个局域网内,PC1想向PC2发送数据,数据包含PC1的IP地址、MAC地址和PC2的IP地址,此时还需要PC2的MAC地址。首先,PC1广播请求包,其他终端接收到后,检查目的IP地址,与本机不相同则丢弃。当PC2接收到该请求包后,将PC1的IP和MAC映射信息存储在本地的ARP缓存表,再向PC1点到点传播回应包。PC1接收到回应包后,将PC2的IP和MAC映射信息存储在本地。过程形象化表示为:PC1先自我介绍,然后才是询问。
运行 arp -a 命令查看当前的 arp 缓存
λ arp -a
// 缓存了不同适配器接口的IP地址与MAC地址的映射,以及它们的类型。
接口: 192.168.220.1 --- 0x5
Internet 地址 物理地址 类型
192.168.220.150 00-0c-29-7e-65-de 动态
192.168.220.254 00-50-56-ef-31-55 动态
192.168.220.255 ff-ff-ff-ff-ff-ff 静态
224.0.0.22 01-00-5e-00-00-16 静态
224.0.0.251 01-00-5e-00-00-fb 静态
ping 旁边计算机(注意,需保证该计算机的 IP 没有出现在 arp 缓存中,或者使用 arp -d * 先删除全部缓存),再次查看缓存。发现ARP缓存表多了旁边计算机(PC2)IP到MAC地址的映射。这是因为PC2与本机位于同一个局域网内,且经检查PC2的IP、MAC地址映射没有记录,则需要本机广播请求包,PC2接收到请求包后,点到点发送回应包给本机,将IP、MAC地址映射添加到本机的ARP缓存表。
arp命令的相关选项
- arp -a [ipaddr]:显示当前 ARP 缓存,如果指定 ipaddr,则只显示指定计算机的 IP 地址和物理地址。
- arp -v:在详细模式下显示当前 ARP 项。
- arp -d:删除 inet_addr 指定的主机的ARP项。
- arp -s inet_addr eth_addr:将 Internet 地址 inet_addr与物理地址 eth_addr 相关联,添加到ARP缓存。
引申问题1:为何缓存中常常有网关的信息??
:首先,网关与终端主机是属于同一个局域网。网关在局域网中起互连作用,类似网桥。故需要网关的信息,终端将数据传给网关后,由网关再传给其他设备。
引申问题2:将网关或其它计算机的 arp 信息设置为静态有什么优缺点?
:① 优点在于管理方便且可以有效防止局域网中的ARP欺骗。这是因为静态ARP不会被老化,也不会被动态ARP表项覆盖,可以保证网络通信的安全性。② 缺点在于静态ARP仍然存在病毒攻击的危险。同时如果绑定错误ARP信息,修改麻烦。
引申知识1:ARP欺骗
:ARP欺骗,又名ARP攻击。此种攻击可让攻击者获取局域网上的数据包甚至可篡改数据包,且可让网络上特定计算机或所有计算机无法正常连线。ARP欺骗的运作原理是由攻击者发送假的ARP数据包到网上,计算机接收到数据后,若将此伪造的ARP写入自身的ARP表后,要透过网上网关连到其他计算机时,数据包将被导到攻击者的MAC地址。因此攻击者可将这些流量另行转送到真正的网关或是篡改后再转送。攻击者亦可将ARP数据包导到不存在的MAC地址以达到阻断服务攻击的效果。
怎么防范?:(个人理解)在添加新的ARP缓存的相关信息时,进行校验,如果确定数据源信息可靠,则将该映射设置为静态类型,保证网络通信的安全性。
DHCP
① DHCP:Dynamic Host Configuration Protocol 动态主机配置协议,是一个局域网的网络协议。指的是由DHCP服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。② 通常被应用在大型的局域网络环境中,主要作用是集中地管理、分配IP地址,使网络环境中的主机动态的获得IP地址、Gateway地址、DNS服务器地址等信息,并能够提升地址的使用率。③ DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。交互过程如下图所示:
详细交互过程如下:
- DHCP Client以广播的方式发出DHCP Discover报文。
- 所有的DHCP Server都能够接收到DHCP Client发送的DHCP Discover报文,所有的DHCP Server都会给出响应,向DHCP Client发送一个DHCP Offer报文。报文包含预分配的IP地址,并记录下来,防止被多次分配。
- DHCP Client处理其中的一个DHCP Offer报文,发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP Server的IP地址和需要的IP地址。
- DHCP Server收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP Server不做任何处理只清除相应IP地址分配记录;如果相同,DHCP Server就会向DHCP Client响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
- DHCP Client接收到DHCP ACK报文后,检查DHCP Server分配的IP地址是否能够使用。如果可以使用,则DHCP Client成功获得IP地址并根据IP地址使用租期自动启动续延过程;如果DHCP Client发现分配的IP地址已经被使用,则DHCP Client向DHCPServer发出DHCP Decline报文,通知DHCP Server禁用这个IP地址,然后DHCP Client开始新的地址申请过程。
简单的说,DHCP 可以让计算机自动获取/释放网络配置。
引申问题1:在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?
:局域网内的电脑就可以通过这个IP来相互通讯,也防止ip冲突。(其后为个人理解)当计算机不能获取DHCP服务器的配置数据时,计算机可以手动配置数据。手动配置时需要检验配置的IP地址信息是否可用,此时,可以通过该IP地址获得检验的回馈信息。
引申问题2:在固定地方的网络采用 静态/手动配置,而不是动态 DHCP 来进行。原因是什么吗?
:① 稳定性更佳,静态IP可以更稳定,可以作为自己的网站和服务器地址。 ② 便于管理,静态IP能通过IP地址远程访问对应的电脑。手动设置IP,可以保证IP使用的持久性。③ 缩短电脑的启动时间。
netstat
netstat(Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。
netstat 命令相关选项:
- -a或–all:显示所有连线中的Socket;
- -n或–numeric:直接使用ip地址,而不通过域名服务器;
- -t或–tcp:显示TCP传输协议的连线状况;
- -u或–udp:显示UDP传输协议的连线状况;
- -l或–listening:显示监控中的服务器的Socket;
- -s或–statistice: 显示所有端口的统计信息
- netstat -an 命令,查看计算机当前的网络连接状况。
引申知识1:Windows 系统将一些常用的端口与服务记录在C:\WINDOWS\system32\drivers\etc\services 文件中。
DNS
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址互相映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。
DNS的作用:
- 正向解析:根据主机名称(域名)查找对应的IP地址
- 反向解析:根据IP地址查找对应的主机域名
DNS系统分布式数据结构:
DNS域名解析过程:
- 在浏览器中输入pool.btc.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
- 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
- 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
- 如果要查询的域名,不在本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
- 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询。
nslookup
nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。
nslookup domain [dns-server] // 如果没指定dns-server,用系统默认的dns服务器。
引申知识1:Windows 系统将一些固定的/静态的 DNS 信息记录在 C:\WINDOWS\system32\drivers\etc\hosts 文件中。
引申知识2:解析过的 DNS 记录将会被缓存,以利于加快解析速度。使用 ipconfig /displaydns 命令查看、使用 ipconfig /flushdns 命令来清除所有的 DNS 缓存。
引申知识3:使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。可以指定使用 CloudFlare(1.1.1.1)或 Google(8.8.8.8) 的全球 DNS 服务器来解析,如:nslookup qige.io 8.8.8.8。
引申知识4:修改 hosts 文件可以用来屏蔽广告,那么为什么能够过滤广告?如果某些广告拦截失效,那么是什么原因?
:一般而言,我们访问的网页中是含有广告链接的,当我们解析完网站域名,加载渲染该网页的过程中就会产生对广告链接的请求,然后浏览器进行解析该链接(实际是DNS服务器进行的),弹出广告页面。hosts文件屏蔽广告方式原理: 在文件中添加该广告链接,并且指定一个ip地址(通常为本机地址),因为hosts文件优先级是高于DNS服务器,这样浏览器解析该广告链接时,优先hosts文件,这样我们就相当于更改了该链接本来的ip地址,从而使该链接失效。当无法屏蔽广告,可能的原因是广告内容是嵌入到网页中。
引申知识5: DNS欺骗
:DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了。
引申知识6: DNS 劫持
:DNS劫持是互联网攻击的一种方式,通过攻击 域名解析 服务器(DNS),或伪造域名解析服务器(DNS)的方法,把目标网站域名解析到错误的IP地址从而实现用户无法访问目标网站的目的或者蓄意或恶意要求用户访问指定IP地址(网站)的目的。例如:常常就能看到运营商会跳转到业务的页面。
引申知识7: DNS 毒化
:监控 53 端口(DNS 标准端口)的 UDP查询数据报并分析,一旦发现敏感查询,则抢先向查询者返回一个伪造的错误结果,从而实现 DNS 污染。
Cache
cache 即缓存,此处指代浏览器缓存。浏览器缓存是根据 HTTP 报文的缓存标识进行的,是性能优化中简单高效的一种优化方式了。对于一个数据请求来说,可以分为发起网络请求、后端处理、浏览器响应三个步骤。浏览器缓存可以帮助我们在第一和第三步骤中优化性能。
缓存过程:
在浏览器页面F5 刷新
在浏览器页面Ctrl + 5 刷新
两者都是在同一个页面的操作。对比可知,一些png 资源和CSS样式资源被cache 了。
接下来查看两种方式的请求耗时:
-
不使用缓存:
-
使用缓存:
居然速度快了整整四倍左右!!!
总结:
虽然说着是一个简单的验证性实验,只需要查看相关资料和简单的操作。但整个过程确实耗了我不少时间。不过,整个过程亲力亲为,还是收获满满。QAQ
参考
:其他未提及的相关参考资料,若存在侵权,请联系笔者!