在开始之前放上一张本文章的核心图片,要一直记住图中的内容!!!
一、概念理解
首先我们知道分析网络的时候有两种模型,一种是OSI七层模型,另一种就是TCP/IP四层模型。一般来说,我们常用的就是TCP/IP四层模型,很少会使用OSI七层模型。而上面的图片中是五层是因为上面四层是TCP/IP模型,最下面的物理层只是方便我们理解概念用的,基本上也不会涉及,所以实际上的核心还是上面四层的TCP/IP模型。
一般来说我们常见的就是以下五种词汇:
1、IP (Internet Protocol)
IP(互联网协议)是用于在网络中传输数据包的一组规则或标准。它定义了如何将数据从一个设备发送到另一个设备。有两种主要版本的IP协议:IPv4 和 IPv6。IPv4 使用 32 位地址,而 IPv6 使用 128 位地址,以应对地址空间不足的问题。
2、MAC (Media Access Control) 地址
MAC 地址是一个硬件地址,用于标识网络上的物理设备。每个网络接口都有一个唯一的 MAC 地址,通常由 6 组两位十六进制数表示。MAC 地址用于局域网 (LAN) 中的数据链路层,例如以太网。
3、ARP (Address Resolution Protocol)
ARP 是一种用于将网络层地址(如 IP 地址)映射到数据链路层地址(如 MAC 地址)的协议。当一个设备想要向另一个设备发送数据但只知道其 IP 地址时,它会使用 ARP 发现该设备的 MAC 地址。
4、交换机 (Switch)
交换机是一种网络设备,用于连接多个设备形成局域网。它基于 MAC 地址来转发数据帧。现代交换机能够智能地学习连接到它的设备的 MAC 地址,并根据这些信息决定如何转发数据。这样可以提高网络效率,减少广播流量。
5、路由器 (Router)
路由器是一种网络设备,用于在不同网络之间转发数据包。它工作在网络层,通常使用 IP 地址进行路由决策。路由器可以根据不同的网络协议和子网掩码确定数据包的最佳路径,并将其发送到目的地。
二、从链路层开始分析(同一网段内)
2.1 通信过程(直连)
在链路层的时候,我们只知道有物理地址(即 MAC 地址),且每台设备的物理地址是唯一的。这意味着在同一个局域网内,不会有两台设备拥有相同的 MAC 地址。
首先在通信开始之前,我们知道是有一个人先发消息,一个人接收消息。其中这个发送消息的人的地址我们称为源MAC地址,而接收消息的人我们称为目的MAC地址。此时我们通过一根网线将两台电脑设备连接起来,这种方式我们称为直连。假设自己的IP是192.168.0.30,而隔壁老王的IP是192.168.0.100。当我们构建起连接的时候我们可以使用ping去检测我们是否正常连接。
现在我们已知的信息:自己的MAC地址和IP地址,老王的IP地址。
自己 | 隔壁老王 |
连接方式:直连 | |
发送消息 | 接收消息 |
源MAC地址 | 目的MAC地址 |
192.168.0.30 | 192.168.0.100 |
现在我们要怎么知道老王的MAC地址呢?
在这里就要引出ARP协议,通过这个协议我们就可以获得其他设备的MAC地址。那么他又是怎么实现的呢?其实原理就是我们用ARP协议去发了一个ARP请求的广播,所有设备都会收到我们的信息,而只有目标的IP会回复我们的信息,这时候我们就找到了老王的MAC地址。具体实现如下。
我们先构建一个ARP请求帧,其中包含了:
- 源MAC地址:我们自己的MAC地址。
- 目的MAC地址:通常使用FF:FF:FF:FF:FF:FF(全1广播地址),这样网络中的所有设备都会接收到这个帧。
- 请求信息:表明你在寻找哪个IP地址对应的MAC地址。
这个ARP请求帧会被作为一个广播帧发送到整个局域网内。所有的设备都会接收到这个帧,但只有拥有对应IP地址的设备会处理它。拥有对应IP地址的设备会查看ARP请求中的信息,确认这是在询问它的MAC地址。该设备会构建一个ARP响应帧,其中包含:
- 源MAC地址:该设备的MAC地址。
- 目的MAC地址:发起请求的设备的MAC地址。
- 响应信息:表明它就是请求中提到的IP地址的所有者,并提供了它的MAC地址。
之后老王的电脑就会发出这个ARP响应帧。 且ARP响应帧通常是以单播形式发送给发起请求的设备,而不是广播。我们接收到老王的ARP响应后,就可以将目标IP地址与MAC地址关联起来,存入本地的ARP缓存表中。之后,当需要与老王的IP地址通信时,可以直接使用对应的MAC地址构建链路层帧。
2.2 查询ARP缓存表
详细使用见:
[Windows CMD] 查看 IP和物理地址 arp-CSDN博客https://blog.csdn.net/m0_52980547/article/details/140434332?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522172310387816800188590618%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=172310387816800188590618&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-140434332-null-null.nonecase&utm_term=arp&spm=1018.2226.3001.4450 ARP缓存表是操作系统用来存储IP地址与MAC地址对应关系的地方,还可以查看记录的MAC地址有效期。在Windows系统中打开命令提示符(cmd.exe),输入
arp -a
命令来显示ARP缓存表的内容。在Lin