计算机网络实验报告

注:本报告示例为本人真实所做,更多详解请看本人平时实验所写的博客:
计算机网络之验证性实验(ipconfig+ping)–雪小萍2021年9月29日
计算机网络之验证性实验(tracert+ARP)–雪小萍2021年10月13日
计算机网络之验证性实验(DHCP+netstat)–雪小萍2021年10月13日
计算机网络之验证性实验(DNS+cache)–雪小萍2021年10月27日
计算机网络之Wireshark实验-雪小萍2021年10月27日
计算机网络之CPT实验-雪小萍2021年11月24日

一、验证性实验

1.ipconfig

概念

ipconfig 是微软操作系统的计算机上用来控制网络连接的一个命令行工具。它的主要用来显示当前网络连接的配置信息(/all 参数)
显示所有当前的 TCP/IP 网络配置值,并刷新动态主机配置协议 (DHCP) 和域名系统 (DNS) 设置。 在不使用参数的情况下使用 ,ipconfig Internet 协议第四版 (IPv4) IPv6 地址、子网掩码以及所有适配器的默认网关

语法示例

1.若要显示所有适配器的基本 TCP/IP 配置,请键入:
ipconfig

请添加图片描述
请添加图片描述

2.若要显示所有适配器的完整 TCP/IP 配置,请键入:
ipconfig /all

请添加图片描述

请添加图片描述
请添加图片描述

3.若要仅为"本地连接"适配器续订 DHCP 分配的 IP 地址配置,请键入:
ipconfig /renew Local Area Connection

请添加图片描述

4.若要在排查 DNS 名称解析问题时刷新 DNS 解析程序缓存,请键入:
ipconfig /flushdns

请添加图片描述

5.若要显示名称以 Local 开始的所有适配器的 DHCP 类 ID,请键入:
ipconfig /showclassid Local*

请添加图片描述

6.若要将"局部区域连接"适配器的 DHCP 类 ID 设置为 TEST,请键入:
ipconfig /setclassid Local Area Connection TEST

请添加图片描述
请添加图片描述

参数说明

请添加图片描述
请添加图片描述

2.ping

概念

PING (Packet Internet Groper),因特网包探索器,用于测试网络连接量的程序 。ping 是工作在 TCP/IP 网络体系结构中应用层的一个服务命令, 主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。
ping命令通常用来作为网络可用性的检查。ping命令可以对一个网络地址发送测试数据包,看该网络地址是否有响应并统计响应时间,以此测试网络。

ping和ICMP的关系:ping命令发送数据使用的是ICMP协议。

ping的原理

向指定的网络地址发送一定长度的数据包,按照约定,若指定网络地址存在的话,会返回同样大小的数据包,当然,若在特定时间内没有返回,就是“超时”,会被认为指定的网络地址不存在。

ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。在Unix/Linux,序号从0开始计数,依次递增。而Windows ping程序的ICMP序列号是没有规律。

ICMP协议在实际传输中数据包:20字节IP首部 + 8字节ICMP首部 + 1472字节<数据大小>38字节。

ICMP报文格式:IP首部(20字节) + 8位类型 + 8位代码 + 16校验和 + (不同类型和代码,格式也有所不同)。

ping的命令示例

请添加图片描述
命令详解:
-t :Ping 指定的计算机直到中断。

-a :将地址解析为计算机名。

-n count :发送 count 指定的 ECHO 数据包数。默认值为 4。

-l size :发送包含由 size 指定的数据量的 ECHO 数据包。默认为 32 字节;最大值是65,527。

-f :在数据包中发送"不要分段"标志。数据包就不会被路由上的网关分段。

-i ttl :将"生存时间"字段设置为 ttl 指定的值。

-v tos :将"服务类型"字段设置为 tos 指定的值。

-r count :在"记录路由"字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。

-s count :指定 count 指定的跃点数的时间戳。

-j host-list :利用 host-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。

-k host-list :利用 host-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。

-w timeout :指定超时间隔,单位为毫秒。

destination-list :指定要 ping 的远程计算机。

使用Ping检查连通性
A. 使用ipconfig /all观察本地网络设置是否正确

请添加图片描述

B.Ping 127.0.0.1,127.0.0.1 回送地址Ping回送地址是为了检查本地的TCP/IP协议有没有设置好;

请添加图片描述

C. Ping本机IP地址,这样是为了检查本机的IP地址是否设置有误;

请添加图片描述

D. Ping本网网关或本网IP地址,这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略)

请添加图片描述

E. Ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常。

请添加图片描述

用Ping命令来判断一条链路好坏

Ping这个命令除了可以检查网络的连通和检测故障以外,还有一个比较有趣的用途,那就是可以利用它的一些返回数据,来估算你跟某台主机之间的速度是多少字节每秒。

请添加图片描述
在例子中:

"字节=32"表示ICMP报文中有32个字节的测试数据;

"时间=41ms"是往返时间。

"已发送=4"发送多个秒包、"已接收=4"收到多个回应包、"丢失=0"丢弃了多少个;

Minmum 最小值 、MAXimun 最大值、Average 平均值。

所在图上来看,来回用了41MS 时间,lost =0 即是丢包数为0,网络状态比较良好

对Ping后返回信息的分析

1.Request timed out

情况有以下几种:
A. 对方已关机,或者网络上根本没有这个地址

B. 对方与自己不在同一网段内,通过路由也无法找到对方,但有时对方确实是存在的,当然不存在也是返回超时的信息。

C. 对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)。

(怎样知道对方是存在,还是不存在呢,可以用带参数 -a 的Ping命令探测对方,如果能得到对方的NETBIOS名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是对方不存在或关机,或不在同一网段内。)

D. 错误设置IP地址

正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP地址(这些地址一定要处于不同的IP子网)。但如果一台电脑的“拨号网络适配器”(相当于一块软网卡)的TCP/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这样,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题:

a. 主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段。

b. 主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法处理,超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台机器了。

2.Destination host Unreachable

A. 对方与自己不在同一网段内,而自己又未设置默认的路由,就会出现“Destination host Unreachable”。

B. 网线出了故障

(这里要说明一下“destination host unreachable”和 “time out”的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“time out”,如果路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。)

3.Bad IP address

这个信息表示您可能没有连接到DNS服务器,所以无法解析这个IP地址,也可能是IP地址不存在。

4.Source quench received

这个信息比较特殊,它出现的机率很少。它表示对方或中途的服务器繁忙无法回应。

5.Unknown host——不知名主机

这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成IP地址。故障原因可能是域名服务器有故障,或者其名字不正确,或者网络管理员的系统与远程主机之间的通信线路有故障。

6.No answer——无响应

这种故障说明本地系统有一条通向中心主机的路由,但却接收不到它发给该中心主机的任何信息。故障原因可能是下列之一:中心主机没有工作;本地或中心主机网络配置不正确;本地或中心的路由器没有工作;通信线路有故障;中心主机存在路由选择问题。

7.Ping 127.0.0.1:127.0.0.1是本地循环地址

如果本地址无法Ping通,则表明本地机TCP/IP协议不能正常工作。

8.no rout to host

网卡工作不正常。

9.transmit failed,error code

10043网卡驱动不正常。

10.unknown host name

DNS配置不正确。

(注:ping 这个程序曾经是有 bug 的,比如使对方缓冲区溢出导致死机,或死 ping 对方以达到耗费对方主机的系统和网络资源等
本ping部分来源:ping命令详解)

✎ TroubleShooting

当你的网络出现故障不能访问某计算机如 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 配置即网卡状态等

2)ping 192.168.1.64 ,测试到旁边计算机的连通性,如果OK,那么说明本子网内部工作正常,否则,问题在本机网络出口到交换机之间,检查本机网卡到交换机的连线等

3)ping 192.168.1.1,测试到网关的连通性,如果 OK,那么说明本子网出口工作正常,否则,问题在网关,这是你无能为力的事情,报告给网管

4)ping 14.215.177.39,测试到百度的连通性,如果 OK,那就 OK,否则,问题在网关以外,这也是你无能为力的事情,报告给网管或者李彦宏。

假设在秘籍中进行的网络排查中,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。

3.tracert

概念

TRACERT (Trace Route 的组合缩写),也称为路由追踪,该命令行程序可用于跟踪 Internet 协议 (IP) 数据包传送到目标地址时经过的路径。

如何使用 TRACERT 实用程序

TRACERT 诊断实用程序通过向目标地址发送 Internet 控制消息协议 (ICMP) 回显数据包来确定到目标地址的路由。 在这些数据包中,TRACERT 使用了不同的 IP“生存期”(TTL) 值。 由于要求沿途的路由器在转发数据包前至少必须将 TTL 减少 1,因此 TTL 实际上是一个跃点计数器 (hop counter)。 当某个数据包的 TTL 达到零 (0) 时,路由器就会向源计算机发送一个 ICMP“超时”的消息。

TRACERT 将发送 TTL 为 1 的第一个回显数据包,并在每次后续传输时将 TTL 增加 1,直到目标地址响应或达到 TTL 的最大值。 中间路由器发送回来的 ICMP“超时”消息显示了路由。 请注意,有些路由器会丢弃 TTL 失效的数据包而不发出消息,这些数据包对于 TRACERT 来说是不可见的。

TRACERT 将会显示一个返回 ICMP“超时”消息的中间路由器的顺序列表。 使用带有 d 选项的 tracert 命令时,TRACERT 将不会对每个 IP 地址执行 DNS 查找,这样,TRACERT 将报告路由器近端接口的 IP 地址。

请添加图片描述

请添加图片描述
tracert 命令和输出的示例中,数据包经过10.160.255.254 等几个路默认网关是 10.160.255.254

如何使用 TRACERT 排除故障

可以使用 TRACERT 找出数据包在网络中停止的位置

如何使用 TRACERT 选项

有一些命令行选项可以与 TRACERT 一起使用,尽管在标准的故障排除过程中通常并不需要这些选项。

以下命令行语法的示例显示了所有可能的选项:

tracert -d -h maximum_hops -j host-list -w timeout target_host
参数的作用:

-d
Specifies to not resolve addresses to host names

-h maximum_hops
Specifies the maximum number of hops to search for the target

-j host-list
Specifies loose source route along the host-list

-w timeout
Waits the number of milliseconds specified by timeout for each
reply

tracert路由跟踪工具使用方法

  1. 路由跟踪在线Tracert工具说明
    Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。Tracert 命令用 IP 生存时间 (TTL) 字段和 ICMP 错误消息来确定从一个主机到网络上其他主机的路由。
  2. Tracert 工作原理
    通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
    Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。
    3.Tracert 命令详解及用法
    Tracert 命令支持多种选项,如下所示。

请添加图片描述

请添加图片描述
(捕获)

请添加图片描述

在图中我们可以看出

A. 最左侧的,1~10,这标明在我使用的宽带上,经过10个路由节点,可以到达百度的服务;

B. 中间这三列,单位是ms,是表示我们连接到每个路由节点的速度,返回速度和多次链接反馈的平均值;因为腾讯在国内,经过联通骨干网,网络非常 好,所以都很小,这个值有一定的参考性,但不是唯一的,也不作为主要的参考;比如一个主机,200和300,这100ms,其实说明不了什么;

C. 后面的IP,就是每个路由节点对应的IP,每个ip输入什么,可通过http://tool.chinaz.com的ip详细查询去了解;

D. *,在第3,6,7,10个路由节点上,返回消息是超时,这表示这个路由节点和当前我们使用的宽带,是无法联通的至于原因,就有很多种了,比如:特意在路上上做了过滤限制;比如确实是路由的问题等,具体问题具体分析;

( 如果在测试的时候,大量的都是*和返回超时,那就说明这个IP,在各个路由节点都有问题。)请添加图片描述

✎ 问题一

tracert 能告诉我们路径上的节点以及大致的延迟等信息,那么它背后的原理是什么?本问题可结合第二部分的 Wireshark 实验进行验证。

原理是向目标地址发送不同生存时间(TTL)的ICMP包,Tracert诊断程序确定到目标采取的路由。
因为路径上的每一个路由器在转发数据包之前至少将数据包上的 TTL 递减1,数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为1的回应数据包,并在随后的每次发送过程将TTL递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在Tracert 实用程序中看不到。

✎ 问题二

在以上两个实作中,如果你留意路径中的节点,你会发现无论是访问百度还是棋歌教学网,路径中的第一跳都是相同的,甚至你应该发现似乎前几个节点都是相同的,你的解释是什么?

因为我们都处于子网中,所以当我们访问外网时,第一步都是访问网关,然后由网关给我i们进行下一步连接,所以,访问外网的路径中的第一跳都是相同的,即所在子网的网关。

✎ 问题三

在追踪过程中,你可能会看到路径中某些节点显示为 * 号,这是发生了什么?

因为某些路由器对于TTL为零的数据包没有发出“ICMP已超时”的消息,不经询问直接丢弃 TTL 过期的数据包,导致某些路径显示*号。

4.ARP

ARP(Address Resolution Protocol)即地址解析协议,是用于根据给定网络层地址即 IP 地址,查找并得到其对应的数据链路层地址即 MAC地址的协议。 ARP 协议定义在 1982 年的 RFC 826。

ARP协议的工作机制详解

概念

1.ARP 是“Address Resolution Protocol”的缩写,译为“地址解析协议”,它是根据 IP 地址获取物理地址的一个 TCP/IP 协议
2.ARP 协议通过 IP 地址向 MAC 地址的转换,解决网际层和网络访问层的衔接问题。
3.由于 IP 地址和 MAC 地址定位方式不同,ARP 协议成为数据传输的必备协议。主机发送信息前,必须通过 ARP 协议获取目标 IP 地址对应的 MAC 地址,才能正确地发送数据包。

为什么需要 ARP 协议

在网络访问层中,同一局域网中的一台主机要和另一台主机进行通信,需要通过 MAC 地址进行定位,然后才能进行数据包的发送。

而在网络层和传输层中,计算机之间是通过 IP 地址定位目标主机,对应的数据报文只包含目标主机的 IP 地址,而没有 MAC 地址。

因此,在发送之前需要根据 IP 地址获取 MAC 地址,然后才能将数据包发送到正确的目标主机,而这个获取过程是通过 ARP 协议完成的。

ARP 工作的基本流程

ARP 工作流程分为两个阶段,一个是 ARP 请求过程,另一个是 ARP 响应过程。

工作流程如下所示。

请添加图片描述
在上面图片中,主机 A 的 IP 地址为 192.168.1.1,主机 B 的 IP 地址为 192.168.1.2。

主机 A 与主机 B 进行通信,需要获取其 MAC 地址,基本流程如下:
主机 A 以广播形式向网络中所有主机发送 ARP 请求,请求包中包含了目标 IP 地址 192.168.1.2。
主机 B 接收到请求,发现自己就是主机 A 要找的主机,返回响应,响应包中包含自己的 MAC 地址。

ARP 缓存
在请求目标主机的 MAC 地址时,每次获取目标主机 MAC 地址都需要发送一次 ARP 请求,然后根据响应获取到 MAC 地址。

为了避免重复发送 ARP 请求,每台主机都有一个 ARP 高速缓存。当主机得到 ARP 响应后,将目标主机的 IP 地址和物理地址存入本机 ARP 缓存中,并保留一定时间。

只要在这个时间范围内,下次请求 MAC 地址时,直接查询 ARP 缓存,而无须再发送 ARP 请求,从而节约了网络资源。

当有了 ARP 缓存以后,ARP 的工作流程如下:

  1. 主机 A 在本机 ARP 缓存中检查主机 B 的匹配 MAC 地址。
  1. 如果在 ARP 缓存中没有找到主机 B 的 IP 地址及对应的 MAC 地址,它将询问主机 B 的 MAC 地址,从而将 ARP 请求帧广播到本地网络上的所有主机。源主机 A 的 IP 地址和 MAC 地址都包括在 ARP 请求中。
  1. 本地网络上的每台主机都接收到 ARP 请求,并且检查是否与自己的 IP 地址匹配。如果主机发现请求的 IP 地址与自己的 IP 地址不匹配,它将丢弃 ARP 请求。主机 B 确定 ARP 请求中的 IP 地址与自己的 IP 地址匹配,则将主机 A 的 IP 地址和 MAC 地址映射添加到本地 ARP 缓存中。
  1. 主机 B 将包含自身 MAC 地址的 ARP 回复消息直接发送给主机 A。
  1. 当主机 A 收到从主机 B 发来的 ARP 回复消息时,会用主机 B 的 IP 地址和 MAC 地址更新 ARP 缓存。
  1. 主机 B 的 MAC 地址一旦确定,主机 A 就能向主机 B 发送 IP 数据包。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。

查看 ARP 缓存

每次成功得到 ARP 响应以后,就会将 IP 地址对应的 MAC 地址添加到 ARP 缓存中。用户可以通过 arp 命令查看 ARP 缓存中的信息,并验证是否会将目标 IP 地址和 MAC 地址添加到 ARP 缓存中。

【示例】查看 ARP 缓存表并验证添加的 IP 地址和 MAC 地址。

  1. 使用 arp 命令查看当前主机缓存信息,执行命令如下:
root@daxueba:~# arp -a

输出信息如下:

localhost (192.168.59.254) at 00:50:56:f7:9b:0d [ether] on eth0
localhost (192.168.59.2) at 00:50:56:ea:f3:a1 [ether] on eth0

上述输出信息表示当前 ARP 缓存中有两组信息,192.168.59.254 对应的 MAC 地址为 00:50:56:f7:9b:0d,192.168.59.2 对应的 MAC 地址为 00:50:56:ea:f3:a1。

  1. 在当前主机上与主机 192.168.59.135 进行通信。例如,可以使用 ping 命令探测该主机。执行命令如下:
root@daxueba:~# ping 192.168.59.135

输出信息如下:

PING 192.168.59.135 (192.168.59.135) 56(84) bytes of data.
64 bytes from 192.168.59.135: icmp_seq=1 ttl=64 time=1.64 ms
64 bytes from 192.168.59.135: icmp_seq=2 ttl=64 time=0.420 ms
64 bytes from 192.168.59.135: icmp_seq=3 ttl=64 time=0.405 ms
64 bytes from 192.168.59.135: icmp_seq=4 ttl=64 time=0.343 ms

上述输出信息表示成功向目标主机 192.168.59.135 发送了 ping 请求并得到了响应。

  1. 当前主机的 ARP 缓存将会添加目标主机的 IP 地址及 MAC 地址。再次查看当前主机缓存信息,执行命令如下:
root@daxueba:~# arp -a
localhost (192.168.59.135) at 00:0c:29:ca:e4:66 [ether] on eth0
localhost (192.168.59.254) at 00:50:56:f7:9b:0d [ether] on eth0
localhost (192.168.59.2) at 00:50:56:ea:f3:a1 [ether] on eth0

图解ARP协议

并且引用知乎杰哥的一句话:基于功能来考虑,ARP是链路层协议;基于分层/包封装来考虑,ARP是网络层协议。(此方法对于ICMP协议同样管用)

ARP协议详解

地址解析包格式

1.硬件类型(Hardware Type, HTYPE): 当前网络数据链路层的协议类型, 实际指定了硬件地址类型。如,以太网 的 HTYPE 是 1。
2.协议类型(Protocol Type, PTYPE): 上层网络协议,实际指定了待映射的网络地址的类型。如,IPv4 协议的 PTYPE 是 0x0800。
3.硬件大小(Hardware Length, HLEN): 硬件地址的长度(单位: 八位字节(Octets))。以太网的 HLEN 是 6。
4. 协议大小(Protocol Length, PLEN): PTYPE 指定的上层协议的网络地址长度(单位:八位字节(Octets))。IPv4 协议的 PLEN 是 4。
5.操作(Operation, OPER): 该协议包的操作。ARP 请求包的 OPER 是 1,而ARP 响应包的 OPER 是 2。
6.发送方硬件地址(Sender Hardware Address, SHA): 发送方的硬件地址。
7.发送方协议地址(Sender Protocol Address, SPA): 发送方的上层协议的网络地址。
8.目的硬件地址(Target Hardware Address, THA): 接收方的硬件地址。在 ARP 请求包的 THA 是 0。
9.目的方协议地址(Target Protocol Address, TPA): 接收方的上层协议的网络地址。

学习ARP

1.学习ARP前要了解的内容

建立TCP连接与ARP的关系

应用接受用户提交的数据,触发TCP建立连接,TCP的第一个SYN报文通过connect函数到达IP层,IP层通过查询路由表:

如果目的IP和自己在同一个网段:

当IP层的ARP高速缓存表中存在目的IP对应的MAC地址时,则调用网络接口send函数(参数为IP Packet和目的MAC))将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC的封装,并发送出去;

当IP层的ARP高速缓存表中不存在目的IP对应的MAC地址时,则IP层将TCP的SYN缓存下来,发送ARP广播请求目的IP的MAC,收到ARP应答之后,将应答之中的<IP地址,对应的MAC>对缓存在本地ARP高速缓存表中,然后完成TCP SYN的IP封装,调用网络接口send函数(参数为IP Packet和目的MAC))将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC的封装,并发送出去;。

如果目的IP地址和自己不在同一个网段,就需要将包发送给默认网关,这需要知道默认网关的MAC地址:

当IP层的ARP高速缓存表中存在默认网关对应的MAC地址时,则调用网络接口send函数(参数为IP Packet和默认网关的MAC)将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC

当IP层的ARP高速缓存表中不存在默认网关对应的MAC地址时,则IP层将TCP的SYN缓存下来,发送ARP广播请求默认网关的MAC,收到ARP应答之后,将应答之中的<默认网关地址,对应的MAC>对缓存在本地ARP高速缓存表中,然后完成TCP SYN的IP封装,调用网络接口send函数(参数为IP Packet和默认网关的MAC)将数据提交给网络接口,网络接口完成Ethernet Header + IP + CRC的封装,并发送出去。

ARP的位置
  OSI模型有七层,TCP在第4层传输层,IP在第3层网络层,而ARP在第2层数据链路层。高层对低层是有强依赖的,所以TCP的建立前要进行ARP的请求和应答。

ARP高速缓存表在IP层使用。如果每次建立TCP连接都发送ARP请求,会降低效率,因此在主机、交换机、路由器上都会有ARP缓存表。建立TCP连接时先查询ARP缓存表,如果有效,直接读取ARP表项的内容进行第二层数据包的发送;只有表失效时才进行ARP请求和应答进行MAC地址的获取,以建立TCP连接。

ARP的作用

要了解ARP的作用,首先要分清两个“地址”:

(1)TCP/IP的32bit IP地址。仅知道主机的IP地址不能让内核发送数据帧给主机。

(2)网络接口的硬件地址,它是一个48bit的值,用来标识不同的以太网或令牌环网络接口。在硬件层次上,进行数据交换必须有正确的接口地址,内核必须知道目的端的硬件地址才能发送数据。

简言之,就是在以太网中,一台主机要把数据帧发送到同一局域网上的另一台主机时,设备驱动程序必须知道以太网地址才能发送数据。而我们只知道IP地址,这时就需要采用ARP协议将IP地址映射为以太网地址。

要注意一点,一般认为ARP协议只使适用于局域网。

2.ARP分组格式

ARP分组的格式如下图:

请添加图片描述

先要清楚,一般说以太网地址就是指MAC地址。

字段1是ARP请求的目的以太网地址,全1时代表广播地址。

字段2是发送ARP请求的以太网地址。

字段3以太网帧类型表示的是后面的数据类型,ARP请求和ARP应答这个值为0x0806。

字段4表示硬件地址的类型,硬件地址不只以太网一种,是以太网类型时此值为1。

字段5表示要映射的协议地址的类型,要对IPv4地址进行映射,此值为0x0800。

字段6和7表示硬件地址长度和协议地址长度,MAC地址占6字节,IP地址占4字节。

字段8是操作类型字段,值为1,表示进行ARP请求;值为2,表示进行ARP应答;值为3,表示进行RARP请求;值为4,表示进行RARP应答。

字段9是发送端ARP请求或应答的硬件地址,这里是以太网地址,和字段2相同。

字段10是发送ARP请求或应答的IP地址。

字段11和12是目的端的硬件地址和协议地址。

下面是抓取的ARP数据包,可以对照上面的说明进行理解。

图中红框圈起来的是一对ARP请求和ARP应答。

在这里插入图片描述
下面两张图分别是ARP请求和相应的ARP应答的分组格式截图。

ARP请求分组中,字段11目的MAC地址未知,用全0进行填充

在这里插入图片描述
ARP应答分组中,将ARP请求中的源和目的地址进行交换,此外,变化的还有字段8 Opcode。其余字段内容不会发生变化。

在这里插入图片描述
那么我们是如何区分ARP请求和ARP应答分组的呢?

分组中的地址字段和其他相同的字段无法作为区分依据,这时Opcode字段就发挥了作用,根据Opcode的值可以确定是请求还是应答,是ARP还是RARP。

ARP高速缓存

定义

ARP缓存是一个缓冲区,用来储存IP地址和MAC地址,本质就是<IP地址,MAC地址>的对应表。表中一个条目记录了网络上一个主机的IP地址和其对应的MAC地址。

每一个以太网或令牌环网络适配器都有自己单独的表。

当地址解析协议被询问一个已知IP地址节点的MAC地址时,先在ARP缓存中查看,若存在,就直接返回与之对应的MAC地址,若不存在,才发送ARP请求向局域网查询。

ARP缓存表项的生存时间TTL

ARP缓存包含动态和静态项目:

动态项目随时间推移自动添加和删除,每个动态ARP缓存项都有都设置了TTL(生存时间),TTL为0时此项目就从表中删除,Windows下TTL一般不超过10分钟。

静态 ARP 缓存条目是永久性的,可以使用 TCP/IP 工具手动添加和删除。静态 ARP 缓存条目用来禁止节点发送对常用的本地IPv4地址(例如路由器和服务器的 IPv4 地址)的ARP请求。

ARP高速缓存的使用

当主机发送一个ARP请求时,先查看ARP高速缓存表,如果存在对应条目,则直接返回MAC地址,否则向局域网发送ARP请求广播。

ARP高速缓存的优缺点

优点:从ARP高速缓存的使用中可以看到,ARP高速缓存可以减小广播量,进而减小网络通信量,提高计算机之间的通信效率。

缺点:造成安全隐患(参考下面免费ARP的作用)。

免费ARP

定义

免费ARP指主机发送ARP查找自己的IP地址,通常发生在系统引导期间进行接口配置时。

与标准ARP的区别就是免费ARP分组的目的IP地址字段封装的是自己的IP地址,即向所在网络请求自己的MAC地址。

作用

免费ARP的作用有:
  1) 一个主机可以通过它来确定另一个主机是否设置了相同的 IP地址。
正常情况下发送免费ARP请求不会收到ARP应答,如果收到了一个ARP应答,则说明网络中存在与本机相同的IP地址的主机,发生了地址冲突。

2)更新其他主机高速缓存中旧的硬件地址进行。
如果发送免费ARP的主机正好改变了硬件地址,如更换了接口卡。
其他主机接收到这个ARP请求的时候,发现自己的ARP高速缓存表中存在对应的IP地址,但是MAC地址不匹配,那么就需要利用接收的ARP请求来更新本地的ARP高速缓存表表项。

3)网关利用免费ARP防止ARP攻击
有些网关设备在一定的时间间隔内向网络主动发送免费ARP报文,让网络内的其他主机更新ARP表项中的网关MAC地址信息,以达到防止或缓解ARP攻击的效果。

4)利用免费ARP进行ARP攻击

ARP协议并不只在发送了ARP请求才接收ARP应答,计算机只要接收到ARP应答数据包,就会使用应答中的IP和MAC地址对本地的ARP缓存进行更新。

主机可以构造虚假的免费ARP应答,将ARP的源MAC地址设为错误的MAC地址,并把这个虚假的免费ARP应答发送到网络中,那么所有接收到这个免费ARP应答的主机都会更新本地ARP表项中相应IP地址对应的MAC地址。更新成功后,这些主机的数据报文就会被转发到错误的MAC地址,从而实现了ARP欺骗的攻击。

代理ARP

定义

代理ARP就是通过使用一个主机(通常为router),来作为指定的设备使用自己的 MAC 地址来对另一设备的ARP请求作出应答。

为什么需要代理ARP?

先要了解,路由器的重要功能之一就是把局域网的广播包限制在该网内,阻止其扩散,否则会造成网络风暴。

ARP请求是个广播包,它询问的对象如果在同一个局域网内,就会收到应答。但是如果询问的对象不在同一个局域网该如何处理?路由器就提供的代理ARP为这个问题提供了解决方案。

工作过程

两台主机A和B处于同一网段但不同的广播段时,主机A发送ARP请求主机B的MAC地址时,因为路由器不转发广播包的原因,ARP请求只能到达路由器。如果路由器启用了代理ARP功能,并知道主机B属于它连接的网络,那么路由器就用自己接口的MAC地址代替主机B的MAC地址来对主机A进行ARP应答。主机A接收ARP应答,但并不知道代理ARP的存在。

代理ARP的优缺点

优点:代理ARP能在不影响路由表的情况下添加一个新的Router,使子网对该主机变得透明化。一般代理ARP应该使用在主机没有配置默认网关或没有任何路由策略的网络上。

缺点:从工作工程可以看到,这其实是一种ARP欺骗。而且,通过两个物理网络之间的路由器的代理ARP功能其实互相隐藏了物理网络,这导致无法对网络拓扑进行网络概括。此外,代理ARP增加了使用它的那段网络的ARP流量,主机需要更大的ARP缓存空间,也不会为不使用ARP进行地址解析的网络工作。

✎ 问题

为何缓存中常常有网关的信息?
我们将网关或其它计算机的 arp 信息设置为静态有什么优缺点?

将网关或其它计算机的arp信息设置为静态需要手动指定配置和维护,静态arp表项不会被老化,不会被动态ARP表项覆盖。

配置静态ARP表项可以增加通信的安全性。静态ARP表项可以限制和指定IP地址的设备通信时只使用指定的MAC地址,此时攻击报文无法修改此表项的IP地址和MAC地址的映射关系,从而保护了本设备和指定设备间的正常通信。

(ARP 协议在制定之初是没有考虑安全性的,导致现在广泛提及的"网络扫描"、“内网渗透”、“中间人拦截”、“局域网流控”、"流量欺骗"等等其实都跟 ARP 欺骗有关。).

5.DHCP

概念

DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一个用于 IP 网络的网络协议,位于 OSI 模型的应用层,使用 UDP 协议工作,主要有两个用途:

1.用于内部网或网络服务供应商自动分配 IP 地址给用户
2.用于内部网管理员对所有电脑作中央管理

简单的说,DHCP 可以让计算机自动获取/释放网络配置。

DHCP的工作原理

必须先安装和配置 DHCP 服务器。在配置过程中,需要指定客户机在网络上运行时所需的有关网络的信息。具备该信息后,客户机便可请求并接收网络信息。
下图显示了 DHCP 服务事件的序列。圆圈中的数字与图表之后的说明中的编号相对应。
在这里插入图片描述

上图显示了以下步骤:

1.客户机通过将搜索消息广播到本地子网上的有限广播地址 (255.255.255.255) 来搜索 DHCP 服务器。如果存在路由器并已将其配置为充当 BOOTP 中继代理的角色,请求便会传送到不同子网上的其他 DHCP 服务器。客户机的广播包括其唯一的 ID,在 Oracle Solaris 中的 DHCP 实现中,此 ID 由客户机的介质访问控制 (Media Access Control, MAC) 地址派生而来。在以太网上,MAC 地址与以太网地址相同。

接收搜索消息的 DHCP 服务器可以通过查看以下信息来确定客户机的网络:

请求来自哪个网络接口?服务器会确定客户机是位于通过接口连接的网络上,还是正在使用连接到该网络的 BOOTP 中继代理。

请求中包含 BOOTP 中继代理的 IP 地址吗?当请求通过中继代理时,中继代理会将其地址插入到请求标头中。当服务器检测到中继代理地址时,服务器知道该地址的网络部分表示客户机的网络地址,这是因为中继代理必须连接到客户机的网络。

客户机的网络有子网吗?服务器会查看 netmasks 表,来查找由中继代理地址或接收请求的网络接口地址指定的网络使用的子网掩码。服务器一旦知道了所用的子网掩码,就可以确定网络地址的哪一部分表示主机地址,然后可以选择适用于客户机的 IP 地址。有关 netmasks 的信息,请参见 netmasks(4) 手册页。

2.在 DHCP 服务器确定客户机的网络之后,便会选择相应的 IP 地址并确认该地址尚未使用。然后,DHCP 服务器通过广播一条提供消息来响应客户机。该提供消息中包含选定的 IP 地址以及有关可为客户机配置的服务的信息。每台服务器都会暂时保留所提供的 IP 地址,直到客户机确定是否使用该 IP 地址为止。

3.客户机会根据所提供的服务的数量和类型来选择最佳内容。客户机会广播一条请求来指定提供最佳内容的服务器的 IP 地址。该广播确保所有发出响应的 DHCP 服务器都知道客户机已经选择了一台服务器。未被选中的服务器会取消对之前提供的 IP 地址的保留。

4.被选中的服务器会为客户机分配 IP 地址,并将信息存储到 DHCP 数据存储中。该服务器还会向客户机发送一条确认消息 (acknowledgement message, ACK)。确认消息包含客户机的网络配置参数。客户机使用 ping 实用程序测试此 IP 地址,以确保它没有被其他系统使用。然后,客户机会继续引导以加入网络。

5.客户机会监视租用时间。当设定的时间段过去时,客户机会向所选的服务器发送一条新消息来延长租用时间。

6.接收请求的 DHCP 服务器会延长租用时间,前提是租用仍然遵循由管理员设置的本地租用策略。如果服务器在 20 秒内没有响应,客户机便会广播一条请求,以便其他 DHCP 服务器之一可以延长租用期。

7.当客户机不再需要 IP 地址时,便会通知服务器已释放了 IP 地址。此通知可以在正常关机时发送,也可以手动发送。

DHCP也是一个没有考虑安全性的并且使用广泛的一个协议。比如,因为 DHCP 维护的地址池是有限的,那么我可以不停的发出 DHCP 请求,从而导致 DHCP 地址耗尽。然后我自己再运行一个 DHCP 服务器来提供虚假的网络信息,特别是伪造的网关和 DNS 信息。

✎ 问题

在Windows系统下,如果由于某种原因计算机不能获取 DHCP 服务器的配置数据,那么Windows将会根据某种算法自动配置为 169.254.x.x 这样的 IP 地址。显然,这样的 IP 以及相关的配置信息是不能让我们真正接入 Internet 的,为什么?既然不能接入 Internet,那么Winodws系统采用这样的方案有什么意义?

因为自动配置的IP地址和信息只是短暂性的解决计算机不能获取 DHCP
服务器的配置数据的问题,要真正的接入Internet还是得本身计算机的正确IP地址。

6.netstat

概念

无论是使用 TCP 还是 UDP,任何一个网络服务都与特定的端口(Port Number)关联在一起。因此,每个端口都对应于某个通信协议/服务。

netstat(Network Statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。

netstat命令用法详解

Netstat(network statistics)是在内核中访问网络连接状态及其相关信息的命令行程序,可以显示路由表、实际的网络连接和网络接口设备的状态信息,以及与 IP、TCP、UDP 和 ICMP 协议相关的统计数据,一般用于检验本机各端口的网络服务运行状况。

命令选项

1.显示所有连接。
-a 选项会列出 tcp, udp 和 unix 协议下所有套接字的所有连接。

请添加图片描述

2.只列出 TCP 或 UDP 协议的连接

使用 -t 选项列出 TCP 协议的连接,可和 -a 选项配合使用

请添加图片描述

使用 -u 选项列出 UDP 协议的连接

3.禁用反向域名解析,加快查询速度

默认情况下 netstat 会通过反向域名解析查找每个 IP 地址对应的主机名,会降低查找速度。n 选项可以禁用此行为,并且用户 ID 和端口号也优先使用数字显示。
请添加图片描述

4.只列出监听中的连接

-l 选项可以只列出正在监听的连接(不能和 a 选项同时使用)

5.获取进程名、进程号以及用户 ID

-p 选项可以查看进程信息(此时 netstat 应尽量运行在 root 权限之下,否则不能得到运行在 root 权限下的进程名)

-pe 选项可以同时查看进程名(号)和进程所属的用户名

6.显示路由信息
使用 -r 选项打印内核路由信息,与 route 命令输出一样。

使用 -r 选项打印内核路由信息,与 route 命令输出一样。

请添加图片描述

7.网络接口信息

-i 选项可以输出网络接口设备的统计信息,结合上 -e 选项,等于 ifconfig 命令的输出。

8.获取网络协议的统计信息

-s 选项可以输出针对不同网络协议的统计信息,包括 Ip、Icmp、Tcp 和 Udp 等。

请添加图片描述

-a或–all:显示所有连线中的Socket;
-A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址;
-c或–continuous:持续列出网络状态;
-C或–cache:显示路由器配置的快取信息;
-e或–extend:显示网络其他相关信息;
-F或–fib:显示FIB;
-g或–groups:显示多重广播功能群组组员名单;
-h或–help:在线帮助;
-i或–interfaces:显示网络界面信息表单;
-l或–listening:显示监控中的服务器的Socket;
-M或–masquerade:显示伪装的网络连线;
-n或–numeric:直接使用ip地址,而不通过域名服务器;
-N或–netlink或–symbolic:显示网络硬件外围设备的符号连接名称;
-o或–timers:显示计时器;
-p或–programs:显示正在使用Socket的程序识别码和程序名称;
-r或–route:显示Routing Table;
-s或–statistice:显示网络工作信息统计表;
-t或–tcp:显示TCP传输协议的连线状况;
-u或–udp:显示UDP传输协议的连线状况;
-v或–verbose:显示指令执行过程;
-V或–version:显示版本信息;
-w或–raw:显示RAW传输协议的连线状况;
-x或–unix:此参数的效果和指定”-A unix”参数相同;
–ip或–inet:此参数的效果和指定”-A inet”参数相同。
例子

列出所有端口情况
[root@txp ~]# netstat -a # 列出所有端口
[root@txp ~# netstat -at # 列出所有TCP端口
[root@txp ~]# netstat -au # 列出所有UDP端口

列出所有处于监听状态的 Sockets
[root@txp ~]# netstat -l # 只显示监听端口
[root@txp ~]# netstat -lt # 显示监听TCP端口
[root@txp ~]# netstat -lu # 显示监听UDP端口
[root@txp ~]# netstat -lx # 显示监听UNIX端口

显示每个协议的统计信息
[root@txp ~]# netstat -s # 显示所有端口的统计信息
[root@txp ~]# netstat -st # 显示所有TCP的统计信息
[root@txp ~]# netstat -su # 显示所有UDP的统计信息

显示 PID 和进程名称
[root@txp ~]# netstat -p

显示核心路由信息
[root@txp ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
192.168.130.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0

[root@txp ~]# netstat -rn # 显示数字格式,不查询主机名称
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.130.1 0.0.0.0 UG 0 0 0 eth0
192.168.130.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
[root@txp ~]#

查看端口和服务
[root@txp ~]# netstat -antp | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 734/sshd
tcp 0 52 192.168.130.20:22 119.129.118.189:58737 ESTABLISHED 1846/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 734/sshd
[root@txp ~]# netstat -antp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 734/sshd
tcp 0 52 192.168.130.20:22 119.129.118.189:58737 ESTABLISHED 1846/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 734/sshd
[root@txp ~]#
netstat –help

[root@txp ~]# netstat –help
usage: netstat [-vWeenNcCF] [] -r netstat {-V|–version|-h|–help}
netstat [-vWnNcaeol] [ …]
netstat { [-vWeenNac] -I[] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw] } [delay]

-r, --route              display routing table
-I, --interfaces=<Iface> display interface table for <Iface>
-i, --interfaces         display interface table
-g, --groups             display multicast group memberships
-s, --statistics         display networking statistics (like SNMP)
-M, --masquerade         display masqueraded connections

-v, --verbose            be verbose
-W, --wide               don't truncate IP addresses
-n, --numeric            don't resolve names
--numeric-hosts          don't resolve host names
--numeric-ports          don't resolve port names
--numeric-users          don't resolve user names
-N, --symbolic           resolve hardware names
-e, --extend             display other/more information
-p, --programs           display PID/Program name for sockets
-o, --timers             display timers
-c, --continuous         continuous listing

-l, --listening          display listening server sockets
-a, --all                display all sockets (default: connected)
-F, --fib                display Forwarding Information Base (default)
-C, --cache              display routing cache instead of FIB
-Z, --context            display SELinux security context for sockets

={-t|–tcp} {-u|–udp} {-U|–udplite} {-w|–raw} {-x|–unix}
–ax25 –ipx –netrom
=Use ‘-6|-4’ or ‘-A ’ or ‘–’; default: inet
List of possible address families (which support routing):
inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25)
netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)

7.DNS

概念

DNS(Domain Name System)即域名系统,是互联网的一项服务。它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS 使用 TCP 和 UDP 的 53 号端口
DNS能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)

在这里插入图片描述

nslookup命令详解

nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。 nslookup的用法相对来说还是蛮简单的,主要是下面的几个用法。

1.直接查询
这个可能大家用到最多,查询一个域名的A记录。

nslookup domain [dns-server]

如果没指定dns-server,用系统默认的dns服务器。下面是一个例子:

[root@localhost ~]# nslookup baidu.com
Server:     10.30.7.177
Address:    10.30.7.177#53

Non-authoritative answer:
Name:   baidu.com
Address: 123.125.114.144
Name:   baidu.com
Address: 111.13.101.208
Name:   baidu.com
Address: 180.149.132.47
Name:   baidu.com
Address: 220.181.57.217

2.查询其他记录
直接查询返回的是A记录,我们可以指定参数,查询其他记录,比如AAAA、MX等

nslookup -qt=type domain [dns-server]

其中,type可以是以下这些类型:

  • A 地址记录

  • AAAA 地址记录

  • AFSDB Andrew文件系统数据库服务器记录

  • ATMA ATM地址记录

  • CNAME 别名记录

  • HINFO 硬件配置记录,包括CPU、操作系统信息

  • ISDN 域名对应的ISDN号码

  • MB 存放指定邮箱的服务器

  • MG 邮件组记录

  • MINFO 邮件组和邮箱的信息记录

  • MR 改名的邮箱记录

  • MX 邮件服务器记录

  • NS 名字服务器记录

  • PTR 反向记录

  • RP 负责人记录

  • RT 路由穿透记录

  • SRV TCP服务器信息记录

  • TXT 域名对应的文本信息

  • X25 域名对应的X.25地址记录

例如:

[root@localhost ~]# nslookup -qt=mx baidu.com 8.8.8.8
*** Invalid option: qt=mx
Server:     8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:   baidu.com
Address: 111.13.101.208
Name:   baidu.com
Address: 123.125.114.144
Name:   baidu.com
Address: 180.149.132.47
Name:   baidu.com
Address: 220.181.57.217

3.查询更具体的信息
查询语法:

nslookup –d [其他参数] domain [dns-server]

只要在查询的时候,加上-d参数,即可查询域名的缓存。

当我们使用浏览器上网时,或多或少的会看到一些广告。某些网站的广告是非常没有节操的,所以我们一般可以通过安装浏览器插件如 AdGuard、AdBlocker 等来拦截和过滤。
这种方法简单方便有效,不过有一定安全或隐私问题,因为该插件实时知道你访问的 URL。
假设不使用这种第三方的插件,希望自己完全控制,那么就请考虑在我们前面提到的 hosts 文件中添加 DNS 记录。有自愿者时时在维护全球正确的 DNS 记录文件

示例
Windows 系统将一些固定的/静态的 DNS 信息记录在C:\WINDOWS\system32\drivers\etc\hosts ,查看有什么记录在该文件中。
在这里插入图片描述

解析过的 DNS 记录将会被缓存,以利于加快解析速度。请使用 ipconfig /displaydns 命令查看。我们也可以使用 ipconfig /flushdns 命令来清除所有的 DNS 缓存。
在这里插入图片描述

使用 nslookup qige.io 命令,将使用默认的 DNS 服务器查询该域名。当然你也可以指定使用 CloudFlare(1.1.1.1)或 Google(8.8.8.8) 的全球 DNS 服务器来解析,如:nslookup qige.io 8.8.8.8,不一定会得到正确的答案。
在这里插入图片描述

🗣 TroubleShooting

上面秘籍中我们提到了使用插件或自己修改 hosts 文件来屏蔽广告,思考一下这种方式为何能过滤广告?如果某些广告拦截失效,那么是什么原因?应该怎样进行分析从而能够成功屏蔽它?

原理是再hosts文件中将广告域名对应的ip写为本机(0.0.0.0)。
如果某些广告拦截失效,可能是这个广告域名改了,而我们的hosts文件中有没有写入这个新域名对应本机,所以拦截失败,这是就需要向hosts文件中写入这个新域名对应为本机,这样就可以屏蔽这个之前屏蔽失败的广告了。

8.cache

概念

cache 即缓存,是 IT 领域一个重要的技术。我们此处提到的 cache 主要是浏览器缓存

浏览器缓存是根据 HTTP 报文的缓存标识进行的,是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略可以缩短网页请求资源的距离,减少延迟,并且由于缓存文件可以重复利用,还可以减少带宽,降低网络负荷。

重点:强制缓存,协商缓存等

在这里插入图片描述
计算机可能还在使用 XX 管家,XX 卫士之类的垃圾软件,那么它可能就会在某些时候提示你计算机的垃圾文件有多少多少,请清理(其实是它本身应该被清理!)之类的弹窗。如果查看一下它判断的所谓垃圾文件,会发现大多都是浏览器的缓存。

二、Wireshark实验

Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。

1.Wireshark 抓包示例

先介绍一个使用wireshark工具抓取ping命令操作的示例,可以先上手操作感受一下抓包的具体过程。

1、打开wireshark ,主界面如下:

请添加图片描述

2.选择菜单栏上,勾选WLAN网卡(这里需要根据各自电脑网卡使用情况选择,简单的办法可以看使用的IP对应的网卡)。点击Start。启动抓包。

3.wireshark启动后,wireshark处于抓包状态中。

请添加图片描述

4、执行需要抓包的操作,如在cmd窗口下执行ping www.baidu.com。

5、操作完成后相关数据包就抓取到了。为避免其他无用的数据包影响分析,可以通过在过滤栏设置过滤条件进行数据包列表过滤,获取结果如下。说明:ip.addr == 14.215.177.38 and icmp 表示只显示ICPM协议且源主机IP或者目的主机IP为119.75.217.26的数据包。说明:协议名称icmp要小写。

请添加图片描述
请添加图片描述

6、wireshark抓包完成,就这么简单。关于wireshark显示过滤条件、抓包过滤条件、以及如何查看数据包中的详细内容在后面介绍

请添加图片描述

2.Wireshakr抓包界面介绍

在这里插入图片描述

说明:数据包列表区中不同的协议使用了不同的颜色区分。协议颜色标识定位在菜单栏View --> Coloring Rules。如下所示

在这里插入图片描述

WireShark 主要分为这几个界面

1.Display Filter(显示过滤器), 用于设置过滤条件进行数据包列表过滤。菜单路径:Analyze --> Display Filters。

请添加图片描述

2.Packet List Pane(数据包列表), 显示捕获到的数据包,每个数据包包含编号,时间戳,源地址,目标地址,协议,长度,以及数据包信息。 不同协议的数据包使用了不同的颜色区分显示。

3.Packet Details Pane(数据包详细信息), 在数据包列表中选择指定数据包,在数据包详细信息中会显示数据包的所有详细信息内容。数据包详细信息面板是最重要的,用来查看协议中的每一个字段。各行信息分别为:

(1)Frame: 物理层的数据帧概况

(2)Ethernet II: 数据链路层以太网帧头部信息

(3)Internet Protocol Version 4: 互联网层IP包头部信息

(4)Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP

(5)Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
请添加图片描述
在这里插入图片描述

3.TCP包的具体内容

从下图可以看到wireshark捕获到的TCP包中的每个字段。
在这里插入图片描述
在这里插入图片描述
4. Dissector Pane(数据包字节区)。

4.Wireshark过滤器设置

初学者使用wireshark时,将会得到大量的冗余数据包列表,以至于很难找到自己需要抓取的数据包部分。wireshark工具中自带了两种类型的过滤器,学会使用这两种过滤器会帮助我们在大量的数据中迅速找到我们需要的信息。

(1)抓包过滤器

捕获过滤器的菜单栏路径为Capture --> Capture Filters。用于在抓取数据包前设置。
在这里插入图片描述
如何使用?可以在抓取数据包前设置如下。
在这里插入图片描述
ip host 14.215.177.38 and icmp表示只捕获主机IP为14.215.177.38的ICMP数据包。

2)显示过滤器

显示过滤器是用于在抓取数据包后设置过滤条件进行过滤数据包。通常是在抓取数据包时设置条件相对宽泛或者没有设置导致抓取的数据包内容较多时使用显示过滤器设置条件过滤以方便分析。同样上述场景,在捕获时未设置抓包过滤规则直接通过网卡进行抓取所有数据包,如下
在这里插入图片描述
执行ping www.huawei.com获取的数据包列表如下

请添加图片描述
请添加图片描述
观察上述获取的数据包列表,含有大量的无效数据。这时可以通过设置显示器过滤条件进行提取分析信息。ip.addr == 222.180.166.230 and icmp。并进行过滤。

请添加图片描述
上述介绍了抓包过滤器和显示过滤器的基本使用方法。在组网不复杂或者流量不大情况下,使用显示器过滤器进行抓包后处理就可以满足我们使用。下面介绍一下两者间的语法以及它们的区别。

5. wireshark过滤器表达式的规则

1、抓包过滤器语法和实例

抓包过滤器类型Type(host、net、port)、方向Dir(src、dst)、协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)、逻辑运算符(&& 与、|| 或、!非)

(1)协议过滤

比较简单,直接在抓包过滤框中直接输入协议名即可。

tcp,只显示TCP协议的数据包列表

http,只查看HTTP协议的数据包列表

icmp,只显示ICMP协议的数据包列表

(2)IP过滤

host 192.168.1.104

src host 192.168.1.104

dst host 192.168.1.104

(3)端口过滤

port 80

src port 80

dst port 80

(4)逻辑运算符&& 与、|| 或、!非

src host 192.168.1.104 && dst port 80 抓取主机地址为192.168.1.80、目的端口为80的数据包

host 192.168.1.104 || host 192.168.1.102 抓取主机为192.168.1.104或者192.168.1.102的数据包

!broadcast 不抓取广播数据包

2、显示过滤器语法和实例

(1)比较操作符

比较操作符有== 等于、!= 不等于、> 大于、< 小于、>= 大于等于、<=小于等于。

(2)协议过滤

比较简单,直接在Filter框中直接输入协议名即可。注意:协议名称需要输入小写。

tcp,只显示TCP协议的数据包列表

http,只查看HTTP协议的数据包列表

icmp,只显示ICMP协议的数据包列表

请添加图片描述
3) ip过滤

ip.src ==192.168.1.104 显示源地址为192.168.1.104的数据包列表

ip.dst==192.168.1.104, 显示目标地址为192.168.1.104的数据包列表

ip.addr == 192.168.1.104 显示源IP地址或目标IP地址为192.168.1.104的数据包列表

(4)端口过滤

tcp.port ==80, 显示源主机或者目的主机端口为80的数据包列表。

tcp.srcport == 80, 只显示TCP协议的源主机端口为80的数据包列表。

tcp.dstport == 80,只显示TCP协议的目的主机端口为80的数据包列表。
在这里插入图片描述

(5) Http模式过滤

http.request.method==“GET”, 只显示HTTP GET方法的。

(6)逻辑运算符为 and/or/not

过滤多个条件组合时,使用and/or。比如获取IP地址为192.168.1.104的ICMP数据包表达式为ip.addr == 192.168.1.104 and icmp
(7)按照数据包内容过滤。假设我要以IMCP层中的内容进行过滤,可以单击选中界面中的码流,在下方进行选中数据。如下

请添加图片描述
右键单击选中后出现如下界面

在这里插入图片描述

选中Select后在过滤器中显示如下

在这里插入图片描述

后面条件表达式就需要自己填写。如下我想过滤出data数据包中包含"abcd"内容的数据流。包含的关键词是contains 后面跟上内容。
在这里插入图片描述

看到这, 基本上对wireshak有了初步了解。

6.Wireshark抓包分析TCP三次握手

1)TCP三次握手连接建立过程

Step1:客户端发送一个SYN=1,ACK=0标志的数据包给服务端,请求进行连接,这是第一次握手;

Step2:服务端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给发送端,告诉它,可以通讯了,并且让客户端发送一个确认数据包,这是第二次握手;

Step3:服务端发送一个SYN=0,ACK=1的数据包给客户端端,告诉它连接已被确认,这就是第三次握手。TCP连接建立,开始通讯。

在这里插入图片描述
(2)wireshark抓包获取访问指定服务端数据包

Step1:启动wireshark抓包,打开浏览器输入www.huawei.com。

Step2:使用ping www.huawei.com获取IP。
Step3:输入过滤条件获取待分析数据包列表 ip.addr ==222.180.160.230

第一次握手数据包

客户端发送一个TCP,标志位为SYN,序列号为0, 代表客户端请求建立连接。 如下图。

在这里插入图片描述

数据包的关键属性如下:

SYN :标志位,表示请求建立连接

Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据

Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据

第二次握手的数据包

服务器发回确认包, 标志位为 SYN,ACK. 将确认序号(Acknowledgement Number)设置为客户的I S N加1以.即0+1=1, 如下图
在这里插入图片描述
数据包的关键属性如下:

Seq = 0 :初始建立值为0,表示当前还没有发送数据

Ack = 1:表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)

第三次握手的数据包

客户端再次发送确认包(ACK) SYN标志位为0,ACK标志位为1.并且把服务器发来ACK的序号字段+1,放在确定字段中发送给对方.并且在数据段放写ISN的+1, 如下图:
在这里插入图片描述
数据包的关键属性如下:

ACK :标志位,表示已经收到记录

Seq = 1 :表示当前已经发送1个数据

Ack = 1 : 表示当前端成功接收的数据位数,虽然服务端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)。

就这样通过了TCP三次握手,建立了连接。开始进行数据交互
在这里插入图片描述
下面针对数据交互过程的数据包进行一些说明
在这里插入图片描述
数据包的关键属性说明

Seq: 1

Ack: 1: 说明现在共收到1字节数据
在这里插入图片描述
Seq: 1
Ack: 951: 说明现在服务端共收到951字节数据

在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG。如下
在这里插入图片描述
其中,对于我们日常的分析有用的就是前面的五个字段。它们的含义是:SYN表示建立连接,FIN表示关闭连接,ACK表示响应,PSH表示有DATA数据传输,RST表示连接重置。

Wireshark分析常用操作

调整数据包列表中时间戳显示格式。调整方法为View -->Time Display Format --> Date and Time of Day。调整后格式如下:
在这里插入图片描述

注:

  1. Wireshark 展现给我们的帧中没有校验字段
  2. 访问本子网的计算机时,目的 MAC 就是该主机的
  3. 访问非本子网的计算机时,目的 MAC 是网关的
  4. ARP 请求都是使用广播方式发送的
  5. 如果访问的是本子网的 IP,那么 ARP 解析将直接得到该 IP 对应的 MAC;如果访问的非本子网的 IP, 那么 ARP解析将得到网关的 MAC。
  6. IP 头部你会发现既有头部长度字段,也有总长度字段
  7. 根据规定,一个 IP 包最大可以有 64K 字节。但由于 Ethernet 帧的限制,当 IP 包的数据超过 1500 字节时就会被发送方的数据链路层分段,然后在接收方的网络层重组。缺省的,ping 命令只会向对方发送 32 个字节的数据。我们可以使用 ping 202.202.240.16 -l 2000 命令指定要发送的数据长度。
  8. 分段与重组是一个耗费资源的操作,特别是当分段由传送路径上的节点即路由器来完成的时候,所以 IPv6 已经不允许分段了。
  9. 在 IP 包头中有一个 TTL 字段用来限定该包可以在 Internet上传输多少跳(hops),一般该值设置为 64、128等。在验证性实验部分我们使用了 tracert 命令进行路由追踪。其原理是主动设置 IP 包的 TTL 值,从 1 开始逐渐增加,直至到达最终目的主机。
  10. 在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。
  11. 释放连接需要四次挥手,有时可能会抓到只有三次挥手。

✎ 问题1

为提高效率,我们应该让 IP 的头部尽可能的精简。但在如此珍贵的 IP 头部你会发现既有头部长度字段,也有总长度字段。请问为什么?

用来确定ip包数据的大小

✎ 问题2

分段与重组是一个耗费资源的操作,特别是当分段由传送路径上的节点即路由器来完成的时候,所以 IPv6 已经不允许分段了。那么 IPv6 中,如果路由器遇到了一个大数据包该怎么办?

转发至能支持该数据报的出链路上

✎ 问题3

在 IPv4 中,TTL 虽然定义为生命期即 Time To Live,但现实中我们都以跳数/节点数进行设置。如果你收到一个包,其 TTL 的值为 50,那么可以推断这个包从源点到你之间有多少跳?

假设设置TTL时大小为64,则推断这个包从源点到我之间有64-50=14跳

✎ 问题4

去掉 Follow TCP Stream,即不跟踪一个 TCP 流,你可能会看到访问时我们建立的连接有多个。请思考为什么会有多个连接?作用是什么?

多个连接可以加快数据的传输效率,使我们上网更流畅,同时资源消耗也比单单建立一个tcp连接要大

✎ 问题5

我们上面提到了释放连接需要四次挥手,有时你可能会抓到只有三次挥手。原因是什么?

上面挥手的第三步和第四步可能会被服务端和并发送,即当服务端没有数据要发送时,服务端收到来自客户机的fin包后,会发送一个ack和fin同时为1的包

✎ 问题6

刷新一次 qige.io 网站的页面同时进行抓包,你会发现不少的 304 代码的应答,这是所请求的对象没有更改的意思,让浏览器使用本地缓存的内容即可。那么服务器为什么会回答 304 应答而不是常见的 200 应答?

当用户第一次请求index.html时,服务器会添加一个名为Last-Modified响应头,这个头说明了index.html的最后修改时间,
浏览器会把index.html内容,以及最后响应时间缓存下来。当用户第二次请求index.html时,在请求中包含一个名为If-Modified-Since请求头,
它的值就是第一次请求时服务器通过Last-Modified响应头发送给浏览器的值,即index.html最后的修改时间,
If-Modified-Since请求头就是在告诉服务器,我这里浏览器缓存的index.html最后修改时间是这个,
您看看现在的index.html最后修改时间是不是这个,如果还是,那么您就不用再响应这个index.html内容了,
我会把缓存的内容直接显示出来。而服务器端会获取If-Modified-Since值,与index.html的当前最后修改时间比对,
如果相同,服务器会发响应码304,表示index.html与浏览器上次缓存的相同,无需再次发送(节省传输成本),
浏览器可以显示自己的缓存页面,如果比对不同,那么说明index.html已经做了修改,服务器会响应200。
来自:https://www.cnblogs.com/chenyablog/p/9197305.html

三、Cisco Packet Tracer 实验

CPT下好后是这样子:
在这里插入图片描述

1.CPT软件使用简介

CPT系列视频
在这里插入图片描述

2.直接连接两台 PC 构建 LAN

将两台 PC 直接连接构成一个网络。注意:直接连接需使用交叉线。

进行两台 PC 的基本网络配置,只需要配置 IP 地址即可,然后相互 ping 通即成功。

用交换机构建 LAN
构建如下拓扑结构的局域网:

在这里插入图片描述

3.交换机接口地址列表

二层交换机是一种即插即用的多接口设备,它对于收到的帧有 3 种处理方式:广播、转发和丢弃(请弄清楚何时进行何种操作)。那么,要转发成功,则交换机中必须要有接口地址列表即 MAC 表,该表是交换机通过学习自动得到的!

仍然构建上图的拓扑结构,并配置各计算机的 IP 在同一个一个子网,使用工具栏中的放大镜点击某交换机如左边的 Switch3,选择 MAC Table,可以看到最初交换机的 MAC 表是空的,也即它不知道该怎样转发帧(那么它将如何处理?),用 PC0 访问(ping)PC1 后,再查看该交换机的 MAC 表,现在有相应的记录,请思考如何得来。随着网络通信的增加,各交换机都将生成自己完整的 MAC 表,此时交换机的交换速度就是最快的!

4.生成树协议(Spanning Tree Protocol)

交换机在目的地址未知或接收到广播帧时是要进行广播的。如果交换机之间存在回路/环路,那么就会产生广播循环风暴,从而严重影响网络性能。

而交换机中运行的 STP 协议能避免交换机之间发生广播循环风暴。

只使用交换机,构建如下拓扑:
在这里插入图片描述

这是初始时的状态。我们可以看到交换机之间有回路,这会造成广播帧循环传送即形成广播风暴,严重影响网络性能。

随后,交换机将自动通过生成树协议(STP)对多余的线路进行自动阻塞(Blocking),以形成一棵以 Switch4 为根(具体哪个是根交换机有相关的策略)的具有唯一路径树即生成树!

经过一段时间,随着 STP 协议成功构建了生成树后,Switch5 的两个接口当前物理上是连接的,但逻辑上是不通的,处于Blocking状态(桔色)如下图所示:
在这里插入图片描述
在网络运行期间,假设某个时候 Switch4 与 Switch5 之间的物理连接出现问题(将 Switch4 与 Switch5 的连线剪掉),则该生成树将自动发生变化。Switch5 上方先前 Blocking 的那个接口现在活动了(绿色),但下方那个接口仍处于 Blocking 状态(桔色)。如下图所示
在这里插入图片描述

交换机的 STP 协议即生成树协议始终自动保证交换机之间不会出现回路,从而形成广播风暴

使用 CPT 的 Simulation 即模拟方式可非常清楚看到这个过程!

5.路由器配置初步

我们模拟重庆交通大学和重庆大学两个学校的连接,构建如下拓扑:
在这里插入图片描述

说明一

交通大学与重庆大学显然是两个不同的子网。在不同子网间通信需通过路由器。
路由器的每个接口下至少是一个子网,图中我们简单的规划了 3 个子网:

左边路由器是交通大学的,其下使用交换机连接交通大学的网络,分配网络号 192.168.1.0/24,该路由器接口也是交通大学网络的网关,分配 IP 为 192.168.1.1
右边路由器是重庆大学的,其下使用交换机连接重庆大学的网络,分配网络号 192.168.3.0/24,该路由器接口也是重庆大学网络的网关,分配 IP 为 192.168.3.1
两个路由器之间使用广域网接口相连,也是一个子网,分配网络号 192.168.2.0/24

说明二

现实中,交通大学和重庆大学的连接是远程的。该连接要么通过路由器的光纤接口,要么通过广域网接口即所谓的 serial 口(如拓扑图所示)进行,一般不会通过双绞线连接。

下面我们以通过路由器的广域网口连接为例来进行相关配置。请注意:我们选用的路由器默认没有广域网模块(名称为 WIC-1T 等),需要关闭路由器后添加,然后再开机启动。

说明三
在模拟的广域网连接中需注意 DCE 和 DTE 端(连线时线路上有提示,带一个时钟标志的是 DCE 端。有关 DCE 和 DTE 的概念请查阅相关资料。),在 DCE 端需配置时钟频率 64000

说明四
路由器有多种命令行配置模式,每种模式对应不同的提示符及相应的权限。

请留意在正确的模式下输入配置相关的命令。

User mode:用户模式
Privileged mode:特权模式
Global configuration mode:全局配置模式
Interface mode:接口配置模式
Subinterface mode:子接口配置模式

说明五
在现实中,对新的路由器,显然不能远程进行配置,我们必须在现场通过笔记本的串口与路由器的 console 接口连接并进行初次的配置(注意设置比特率为9600)后,才能通过网络远程进行配置。这也是上图左上画出笔记本连接的用意。

说明六
在路由器的 CLI 界面中,可看到路由器刚启动成功后,因为无任何配置,将会提示是否进行对话配置(Would you like to enter the initial configuration dialog?),因其步骤繁多,请选择 NO

比如交通大学路由器的初步配置可以如下:

Router>en   // 从普通模式进入特权模式
Router#conf t   // 进入全局配置模式
Router(config)#interface FastEthernet0/0
Router(config-if)#ip address 192.168.1.1 255.255.255.0
Router(config-if)#no shutdown
Router(config-if)#exit
Router(config)#line vty 0 4 //可支持0-4共5个终端同时登录
Router(config-line)#password dswybs // 远程登录密码
Router(config-line)#login
Router(config-line)#exit
Router(config)#enable password dswybs // 特权模式密码
Router(config)#^Z  // 退出

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

交通大学路由器基本配置如下:

以太网口:

Router>enable   // 从普通模式进入特权模式
Router#configure terminal   // 进入全局配置模式
Router(config)#interface f0/0   // 进入配置以太网口模式
Router(config-if)#ip address 192.168.1.1 255.255.255.0   // 配置该接口的 IP
Router(config-if)#no shutdown   // 激活接口
Router(config-if)#^z   // 直接退到特权模式
Router#

在这里插入图片描述

后续步骤省略
✎ 问题

现在交通大学内的各 PC 及网关相互能 ping 通,重庆大学也类似。但不能从交大的 PC ping 通重大的 PC,反之亦然,也即不能跨子网。为什么?

两个Rounter之间没有配置路由协议,即当不同子网的主机想发送数据到另一个子网时,先发送到网关,即路由器一端接口,而此时路由不知道下一步应该把数据交给谁

6.静态路由

静态路由是非自适应性路由协议,是由网络管理人员手动配置的,不能够根据网络拓扑的变化而改变。 因此,静态路由简单高效,适用于结构非常简单的网络。

7.动态路由 RIP

动态路由协议采用自适应路由算法,能够根据网络拓扑的变化而重新计算机最佳路由。

RIP 的全称是 Routing Information Protocol,是距离矢量路由的代表(目前虽然淘汰,但可作为我们学习的对象)。使用 RIP 协议只需要告诉路由器直接相连有哪些网络即可,然后 RIP 根据算法自动构建出路由表

8.动态路由 OSPF

OSPF(Open Shortest Path First 开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称 IGP), 用于在单一自治系统(Autonomous System,AS)内决策路由。OSPF 性能优于 RIP,是当前域内路由广泛使用的路由协议。

9.基于端口的网络地址翻译 PAT

网络地址转换(NAT,Network Address Translation)被各个 Internet 服务商即 ISP 广泛应用于它们的网络中,也包括 WiFi 网络。 原因很简单,NAT 不仅完美地解决了 lP 地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。

NAT 的实现方式一般有三种:

静态转换: Static NAT
动态转换: Dynamic NAT
端口多路复用: OverLoad
端口多路复用使用最多也最灵活。OverLoad 是指不仅改变发向 Internet 数据包的源 IP 地址,同时还改变其源端口,即进行了端口地址转换(PAT,Port Address Translation)。

采用端口多路复用方式,内部网络的所有主机均可共享一个合法外部 IP 地址实现对 Internet 的访问,从而可以最大限度地节约IP地址资源。 同时,又可隐藏网络内部的所有主机,有效避免来自 Internet 的攻击。因此,目前网络中应用最多的就是端口多路复用方式。

10.虚拟局域网 VLAN

VLAN(Virtual Local Area Network)即虚拟局域网。通过划分 VLAN,我们可以把一个物理网络划分为多个逻辑网段即多个子网。

划分 VLAN 后可以杜绝网络广播风暴,增强网络的安全性,便于进行统一管理等。

✎ 思考

分析一下当前为何不同 VLAN 中的 PC 不能通信?网关在此起什么作用?我们的网关又在何处?如何发起广播测试?

不同vlan中的pc不能通信时由于他们处于不同的子网

网关起到了信息拦截的作用,此时网关应为相同子网下与交换机连接的端口

广播测试:ping一个不同子网下ip

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值