Skip to content

LV015-网络模型与协议 ​

本文主要是网络基础——因特网中的机器通信方式的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

一、网络与网络通信 ​

1. 网络分类 ​

  • 按照网络的覆盖范围进行分类
局域网局域网是在局部区域范围内将计算机、外设和通信设备通过高速通信线路互连起来的网络系统。覆盖的区域范围较小,一般为几米甚至十几公里,但其连接速率较高。
广域网广域网也称为远程网,所覆盖的地理范围可从几十平方公里到几千平方公里,它一般是将不同城市或不同国家之间的局域网互联起来。广域网是由终端设备、结点交换设备和传送设备组成的,设备间的连接通常是租用电话线或用专线建造的。
城域网城域网的覆盖范围在局域网和广域网之间,一般来说,是将一个城市范围内的计算机互联,这种网络的连接距离约为10~100公里。
  • 从网络的交换方式进行分类
电路交换网电路交换与传统的电话转接相似,就是在两台计算机相互通信时,使用一条实际的物理链路,在通信过程中自始至终使用这条线路进行信息传输,直至传输完毕。
报文交换网报文交换网的原理有点类似于电报,转接交换机实现将接收的信息予以存储,当所需要的线路空闲时,再讲该信息转发出去。这样就可以充分利用线路的空闲,减少“拥塞”,但是由于不是及时发送,显然增加了延时。
分组交换网通常一个报文包含的数据量较大,转接交换机,需要有较大容量的存储设备,而且需要的线路空间时间也较长,实时性差。因此,又提出分组交换,即把每个报文分成有限长度的小分组,发送和交换均以分组为单位,接收端把收到的分组再拼装成一个完整的报文。
信元交换网随着线路质量和速度的提高,新的交换设备和网络技术的出现,以及人们对视频、话音等多媒体信息传输的需求,在分组交换的基础上又发展了信元交换。信元交换是异步传输模式中采用的交换方式。

【说明】报文:网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。

  • 从网络的使用用途进行分类
公用网公用网也称为公众网或公共网,是指由国家的电信公司出资建造的大型网络,一般地都由国家政府电信部门管理和控制,网络内的传输和转接装置可提供给任何部门和单位使用,公用网属于国家基础设施。
专用网专用网是指一个政府部门或一个公司组建经营的,仅供本部门或单位使用,不向本单位外的人提供服务的网络。
  • 从网络的连接范围进行分类
互联网互联网是指将各种网络连接起来形成的一个大系统,在该系统中,任何一个用户都可以使用网络的线路或资源。。
内联网内联网是基于互联网的TCP/IP协议,使用WWW工具,采用防止入侵的安全措施,为企业内部服务,并有链接互联网功能的企业内容网络。
外联网外联网是指基于互联网的安全专用网络,其目的在于利用互联网把企业和其贸易伙伴的内联网安全地互连起来,在企业和其贸易伙伴之间共享信息资源。

2. 常见名词 ​

LAN局域网
WAN广域网
WLAN无线局域网
VLAN虚拟局域网
VPN 虚拟私有网络

3. 网络通信 ​

前边学习进程和线程的时候,我们知道对于同一台设备上的进程间通信,有很多种方式,比如有管道、消息队列、共享内存、信号等方式,而对于不同设备上的进程间通信,那要怎么办呢?这时候就需要网络通信,网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信,属于IPC的一种,通常称为socket IPC。

那需要哪些部分,才能完成两台主机的通信呢?大概需要三个层次:

  • (1)硬件层:网卡设备,收发网络数据。
  • (2)驱动层:网卡驱动(Linux内核网卡驱动代码)。
  • (3)应用层:上层应用程序(调用socket接口或更高级别接口实现网络相关应用程序)。
image-20220528083144917

在硬件层,两台主机都提供了网卡设备,也就满足了进行网络通信最基本的要求,网卡设备是实现网络数据收发的硬件基础。通信的两台主机之间需要建立网络连接,这样两台主机之间才可以进行数据传输,例如通过网线进行数据传输。网络数据的传输媒介有很多种,大体上分为有线传输(例如双绞线网线、光纤等)和无线传输(例如WIFI、蓝牙、ZigBee、4G/5G/GPRS等),PC机通常使用有线网络,而手机等移动设备通常使用无线网络。

在内核层,提供了网卡驱动程序,可以驱动底层网卡硬件设备,同时向应用层提供socket接口。

在应用层,应用程序基于内核提供的socket接口进行应用编程,实现自己的网络应用程序。需要注意的是,socket接口其实就是内核向应用层提供的一套网络编程接口。除了socket接口之外,在应用层通常还会使用一些更为高级的编程接口,例如http、网络控件等,那么这些接口实际上是对socket接口的一种更高级别的封装。

二、网络互联模型 ​

1. OSI七层模型 ​

七层模型,也就是OSI(Open System Interconnection)。OSI七层参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间网络互联的标准体系,一般称为OSI参考模型或七层模型,它是一个网络互连模型,从上到下依次是:

【说明】该图片来源于网络。

img
应用层为应用程序提供服务并规定应用程序中相关的通信细节。常见的协议包括超文本传输协议(HTTP)、简单邮件传送协议(SMTP)和远程登录(Telnet)协议等。
表示层将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式。该层主要负责数据格式的转换,确保一个系统的应用层信息可被另一个系统应用层读取。数据压缩/解压缩和加密/解密(提供网络的安全性)也是表示层可提供的功能之一。
会话层会话层(Session Layer)对应了主机进程,指本地主机与远程主机正在进行的会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。负责建立和断开通信连接(数据流动的逻辑通路),以及记忆数据的分隔等数据传输相关的管理。将不同实体之间表示层的连接称为会话。因此会话层的任务就是组织和协调两个会话进程之间的通信,并对数据交换进行管理。
传输层传输层(Transport Layer)定义传输数据的协议端口号,以及端到端的流控和差错校验。该层建立了主机端到端的连接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括差错校验处理和流控等问题。我们通常说的, TCP、 UDP 协议就工作在这一层,端口号既是这里的“端”。
网络层将数据传输到目标地址,主要负责寻找地址和路由选择,网络层还可以实现拥塞控制、网际互联等功能。本层通过 IP 寻址来建立两个节点之间的连接,为源端发送的数据包选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。网络层(Network Layer)也就是通常说的 IP 层。该层包含的协议有: IP(Ipv4、 Ipv6)、 ICMP、 IGMP 等。
数据链路层负责物理层面上互连的节点间的通信传输。例如,一个以太网相连的两个节点之间的通信。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错和重发等。
物理层利用传输介质为数据链路层提供物理连接,实现比特流的透明传输。
  • OSI模型相关的协议已经很少使用,但模型本身非常通用。

  • OSI模型是一个理想化的模型,尚未有完整的实现。

2. TCP/IP模型 ​

TCP/IP协议是Internet实际上的工业标准,它有四层模型和五层模型两种,TCP/IP四层、五层模型以及OSI七层模型对应关系如下图所示:

image-20220528085845192

可以看到,TCP/IP五层模型中,将OSI七层模型的最上三层(应用层、表示层和会话层)合并为一个层,即应用层,所以TCP/IP五层模型包括:应用层、传输层、网络层、数据链路层以及物理层。TCP/IP四层模型,与五层模型唯一不同的就是将数据链路层和物理层合并为网络接口层。

在实际的应用中还是使用TCP/IP四层模型,五层模型是专门为介绍网络原理而设计的。下边看看四层模型各层的作用吧。

image-20220528092638871

2.1 应用层 ​

应用层(Application Layer)是最靠近用户的一层,为上层用户提供应用接口,也为用户直接提供各种网络服务,我们电脑或手机使用的应用软件都是在应用层实现。我们常见应用层的网络服务协议有:HTTP、FTP、TFTP、SMTP、SNMP、DNS、TELNET、HTTPS、POP3、DHCP。当两个不同设备的应用需要通信的时候,应用就把应用数据传给下一层,也就是传输层。

2.2 传输层 ​

传输层(Transport Layer)是为应用层提供网络支持的。它定义传输数据的协议端口号,以及端到端的流控和差错校验。该层建立了主机端到端的连接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括差错校验处理和流控等问题。我们通常说的,TCP、UDP协议就工作在这一层,端口号既是这里的端。

看到这里,我们可能会认为它负责将数据从一个设备传输到另一个设备,但是在实际的场景中的网络环节是错综复杂的,中间有各种各样的线路和分叉路口,如果一个设备的数据要传输给另一个设备,就需要在各种各样的路径和节点进行选择,同时我们并不希望传输层协议处理太多的事情,它只需要服务好应用即可,让其作为应用间数据传输的媒介,帮助实现应用到应用的通信,所以实际的传输功能就交给下一层,也就是网络层。

2.3 网络层 ​

网络层(Internet Layer)进行逻辑地址寻址,实现不同网络之间的路径选择。这一层通过IP寻址来建立两个节点之间的连接,为源端发送的数据包选择合适的路由和交换节点,正确无误地按照地址传送给目的端的传输层,实际上实现了端到端的传输。其实这一层也就是通常说的IP层,该层包含的协议有:IP(Ipv4、Ipv6)、ICMP、IGMP等。

2.4 网络接口和物理层 ​

在 TCP/IP 协议中,这一层对应 OSI 七层网络模型的物理层和数据链路层。这一层包含的功能挺多的,我自己觉得吧,这一层分为两层来理解可能更好理解一些。

2.4.2 数据链路层 ​

数据链路层(Data Link Layer)是OSI参考模型中的第二层,介于物理层与网络层之间,用来为网络层提供数据传送服务,负责建立和管理节点间逻辑连接、进行硬件地址寻址、差错检测等功能。

具体工作是接收来自物理层的位流形式的数据,并封装成帧,传送到上一层;同样,也将来自上层的数据帧,拆装为位流形式的数据转发到物理层。并且,还负责处理接收端发回的确认帧的信息,以便提供可靠的数据传输。这一层用 MAC 地址访问介质,可以进行错误发现但不能纠正。

由于数据链路层完成以上两个独立的任务,所以相应地划分为两个子层:

MAC媒体访问控制子层(Media Access Control),提供与网络适配器连接的接口,主要任务是解决共享型网络中多用户对信道竞争的问题,完成网络介质的访问控制。实际上,网络适配器驱动程序通常被称为 MAC 驱动,而网卡在工厂固化的硬件地址通常被称为 MAC 地址。
LLC逻辑链路控制子层(Logical Link Control),这个子层对经过子网传递的帧进行错误检查,并且管理子网上通信设备之间的链路。主要任务是建立和维护网络连接,执行差错校验、流量控制和链路控制。
2.4.2 物理层 ​

先了解一个概念,透明传送就是指不管所传数据是什么样的比特组合,都应当能够在链路上传送。物理层(Physical Layer)主要功能是:利用传输介质为数据链路层提供物理连接,实现相邻计算机节点之间比特流的透明传送,尽可能屏蔽掉具体传输介质和物理设备的差异,使数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化,对传送的比特流来说,这个电路好像是看不见的。

实际上,网络数据信号的传输是通过物理层实现的,通过物理介质传输比特流。物理层规定了物理设备标准、电平、传输速率等。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆等,这些都是物理层的传输介质。

对于计算机来说,物理层对应的就是网络适配器(通常意义上的网卡)。根据网络适配器的存在方式,可以分为两类:第一类是物理网络适配器,如有线网卡、无线网卡。第二类是虚拟网络适配器,如宽带拨号连接、VPN 连接等。我们可以使用如下命令来查看我们系统的网络适配器信息:

shell
netwox 169

三、网络体系 ​

网络体系定义了物理网络的构成,以及对应的通信协议。所谓网络体系,就是为了完成计算机之间的通信合作,把每个计算机互联的功能划分为定义明确的层次,规定了同层次进程通信的协议及相邻层之间的接口和服务。将这些同层进程通信的协议及相邻层接口统称为网络体系结构,网络体系结构中基本的原理是抽象分层

1. 网络体系的构成 ​

网络体系不仅定义了网络构成,还规定了通信方式,它构成主要包括以下几个方面:

访问方法定义了计算机使用传输介质的规则,通过这些规则,可以避免数据传输的各种冲突。
数据帧格式定义了数据传输的格式。所有要传输的数据必须按照该格式进行传输。
布线类型定义了网络适配器和其他网络设备的连接方式。例如,每台计算机都通过电缆连接到网络设备,从而形成星型网络。
布线规则定义网络适配器和网络设备连接规范,如网络适配器接口类型和连线长度等。
### 2. 网络体系的类型

网络使用的场景和数据传输所使用的终端设备不同,在物理层中识别的网络接口设备也会不同。网络体系主要分为 4 大类型:

IEEE 802.3(以太网)基于线缆的网络,就是常见的有线局域网。
IEEE 802.11(无线网络)无线网络技术,如 Wi-Fi 网络。
IEEE 802.16(WiMAX)用于移动通信长距离无线连接的技术。
点到点协议(PPP)使用 Modem 通过电话线进行连接的技术,如通过拨号方式建立的网络连接。

四、网络协议简介 ​

网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合,它规定了通信时信息必须采用的格式和这些格式所代表的意义。网络协议使网络上各种设备能够相互交换信息。

网络中存在着许多协议,接收方和发送方使用的协议必须一致,否则一方将无法识别另一方发出的信息。而 TCP/IP 协议就是一种常见的协议,Internet 上的计算机使用的就是该协议。每一层都有很多的不同种类的协议,我就只简单了解各层常见的协议。

image-20230702095714752

1. 网络接口与物理层 ​

1.1 ARP协议 ​

ARP(Address Resolution Protocol),即地址解析协议,是根据IP地址获取物理地址(MAC)的一个TCP/IP协议。主机发送信息时,将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

1.2 RARP协议 ​

RARP(Reverse Address Resolution Protocol),即反向地址转换协议。它允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。网络管理员在局域网的网关路由器里创建一个表以映射物理地址(MAC)和与其对应的 IP 地址。当设置一台新的机器时,其 RARP 客户机程序需要向路由器上的 RARP 服务器请求相应的 IP 地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。 RARP 可以使用于以太网、光纤分布式数据接口及令牌环 LAN等。

1.3 ppp协议 ​

PPP(Point to Point Protocol),即点对点协议。它是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。

2. 网络层 ​

2.1 网络层协议主要工作 ​

网络层协议主要完成的工作有:

(1) 实现不同网络(主机)间的数据包路由传递。

(2)在发送端(或中转站)提供数据包分片功能以使数据包大小满足 PMTU(Path-MTU)。

(3)在接收端提供数据包分片重组功能。

(4)负责数据包优先级,安全性等问题。

2.2常用协议简介 ​

2.2.1 IP协议 ​

IP协议,英文名称为Internet Protocol,是TCP/IP体系中的网络层协议,分为IPv4和IPv6。IP 协议可以将多个交换网络连接起来,在源地址和目的地址之间传送数据包。同时,它还提供数据重新组装功能,以适应不同网络对数据包大小的要求。

2.2.2 ICMP协议 ​

ICMP(Internet Control Message Protocol),即Internet控制报文协议。是 TCP/IP 协议族的一个子协议。ICMP 协议用于在 IP 主机和路由器之间传递控制消息,描述网络是否通畅、主机是否可达、路由器是否可用等网络状态。我们常用的ping命令就属于ICMP协议。

2.2.3 IGMP协议 ​

IGMP(Internet Group Management Ptotocol),即Internet组管理协议。它是因特网协议家族中的一个组播协议,该协议运行在主机和组播路由器之间。MP提供了在转发组播数据包到目的地的最后阶段所需的信息,实现如下双向的功能:

(1)主机通过IGMP通知路由器希望接收或离开某个特定组播组的信息。

(2)路由器通过IGMP周期性地查询局域网内的组播组成员是否处于活动状态,实现所连网段组成员关系的收集与维护。

3. 传输层 ​

3.1 传输层协议主要工作 ​

(1)提供多路复用。

(2)实现数据基本传输功能。

(3)建立通信通道。

(4)提供流量控制。

(5)提供数据可靠性传输保证。

上边的主要针对 TCP协议而言,并非所有的传输层协议都需要提供这些功能,如UDP 协议就不提供可靠性数据传输。

3.2 常用协议简介 ​

3.2.1 TCP协议 ​

TCP(Transmission Control Protocol),即传输控制协议。是一种面向连接的、可靠的、基于字节流的传输层通信协议。

  • 适用场景:

(1)适合于对传输质量要求较高,以及传输大量数据的通信。

(2)在需要可靠数据传输的场合,通常使用TCP协议

(3)MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

  • 我们需要理解的重点如下

(1) TCP 协议工作在传输层,对上服务 socket 接口,对下调用 IP 层;

(2) TCP 是一种面向连接的传输协议,通信之前必须通过三次握手与客户端建立连接关系后才可通信;

(3) TCP 协议提供可靠传输,不怕丢包、乱序。

  • TCP 协议如何保证可靠传输?

(1) TCP 协议采用发送应答机制,即发送端发送的每个 TCP 报文段都必须得到接收方的应答,才能认为这个 TCP 报文段传输成功。

(2)TCP 协议采用超时重传机制,发送端在发送出一个 TCP 报文段之后启动定时器,如果在定时时间内未收到应答,它将重新发送该报文段。

(3)由于 TCP 报文段最终是以 IP 数据报发送的,而 IP 数据报到达接收端可能乱序、重复、所以 TCP协议还会将接收到的 TCP 报文段重排、整理、再交付给应用层。

3.2.2 UDP协议 ​

UDP(User Datagram Protocol),即用户数据报协议。提供不可靠,无连接的尽力传输协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。适用场景如下:

(1)发送小尺寸数据(如对DNS服务器进行IP地址查询时)。

(2)在接收到数据,给出应答较困难的网络中使用UDP(如:无线网络)。

(3)适合于广播/组播式通信中。

(4)MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议。

(5)流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输。

3.2.3 SCTP协议 ​

SCTP(Stream Control Transmission Protocol),即流控制传输协议。 是可靠传输,是TCP的增强版,它能实现多主机、多链路的通信。

4. 应用层 ​

这里主要是简单了解下有哪些协议吧。

4.1 HTTP协议 ​

HTTP(Hyper Text Transfer Protocol),即超文本传输协议。它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

4.2 HTTPS协议 ​

HTTPS(HyperText Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性 。一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

4.3 POP3协议 ​

POP3(Post Office Protocol - Version 3),即邮局协议版本3,一般用于邮件的接收。是TCP/IP协议族中的一员,由RFC1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。提供了SSL加密的POP3协议被称为POP3S。

4.4 SMTP协议 ​

SMTP(Simple Mail Transfer Protocal),即简单邮件传输协议,一般用于邮件的发送。SMTP独立于特定的传输子系统,且只需要可靠有序的数据流信道支持,SMTP的重要特性之一是其能跨越网络传输邮件,即“SMTP邮件中继”。使用SMTP,可实现相同网络处理进程之间的邮件传输,也可通过中继器或网关实现某处理进程与其他网络之间的邮件传输。

4.5 IMAP协议 ​

IMAP(Internet Message Access Protocol),它的主要作用是邮件客户端可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。

4.6 FTP协议 ​

FTP(File Transfer Protocol),即文件传输协议。是 TCP/IP 协议组中的协议之一。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。

4.7 Telnet协议 ​

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。Telnet协议的目的是提供一个相对通用的,双向的,面向8位字节的通信方法,允许界面终端设备和面向终端的过程能通过一个标准过程进行互相交互。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。

4.8 SSH协议 ​

SSH 为 Secure Shell 的缩写,由IETF的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台,几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

4.9 邮件相关协议 ​

  • 邮件发送接收协议: POP3(收)/SMTP(发) 等。

5. 嵌入式相关 ​

5.1 NTP协议 ​

NTP(Network Time Protocol),即网络时间协议。是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源(如石英钟,GPS等等)做同步化,它可以提供高精准度的时间校正(LAN上与标准间差小于1毫秒,WAN上几十毫秒),且可介由加密确认的方式来防止恶毒的协议攻击。NTP的目的是在无序的Internet环境中提供精确和健壮的时间服务。

5.2 SNMP协议 ​

SNMP,即简单网络管理协议(SNMP)是TCP/IP协议簇的一个应用层协议,工作在UDP 161端口,用于监控目标设备的操作系统、硬件设备、服务应用、软硬件配置、网络协议状态、设备性能及资源利用率、设备报错事件信息、应用程序状态等软硬件信息。

5.3 RTP协议 ​

RTP(Real-time Transport Protocol),即实时传输协议。RTP用来为IP网上的语音、图像、传真等多种需要实时传输的多媒体数据提供端到端的实时传输服务。RTP为Internet上端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。

5.4 RTSP协议 ​

RTSP(Real Time Streaming Protocol),即实时流传输协议,是TCP/IP协议体系中的一个应用层协议。设计用于娱乐、会议系统中控制流媒体服务器。

五、MAC地址 ​

在网络中,有一个很重要的概念叫MAC,下边就是来看一看什么是MAC,前边其实已经学到了,这里加深下印象吧。

1. 什么是MAC? ​

MAC 地址为 Media Access Control Address,直译为媒体存取控制位址,也称为局域网地址(LAN Address)、以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。

MAC地址是一种标识符,用来标记网络中的每个设备。网络内传输的所有数据包都会包含发送方和接收方的物理地址,为了能够正确地将数据包发送出去,准确的将数据包从起始地发送到目的地,就必须要求 MAC 地址具有唯一性。因此 MAC 地址都是由生产厂家在生产时固化在网络硬件中,是硬件预留的地址。

硬件的 MAC 地址是厂家按照一定的规则,进行设置所产生的。一般MAC 地址采用十六进制数表示,共 6 个字节(48 位),长度为 48bit,共计12个十六进制位。整个地址可以分为前 24 位和后 24 位,代表不同的含义

  • 0~23bit称为组织唯一标识符(Organizationally Unique Identifier,简称OUI),是由 IEEE 的注册管理机构给不同厂家分配的代码,区分了不同的厂家。
  • 后 24 位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中 MAC 地址后 24 位是不同的。

2. MAC地址的类型 ​

物理MAC地址这种类型的MAC地址唯一的标识了以太网上的一个终端,该地址为全球唯一的硬件地址。
广播MAC地址全1的MAC地址(FF-FF-FF-FF-FF-FF),用来表示LAN上的所有终端设备。
组播MAC地址除广播地址外,第8bit为1的MAC地址为组播MAC地址(例如01-00-00-00-00-00),用来代表LAN上的一组终端。

3. 查看网络主机 MAC 地址 ​

一个局域网往往存在多台计算机,这些计算机都有自己的 MAC 地址和 IP 地址。其中,IP 地址是可变的,而 MAC 地址一般是不可变的。为了准确地识别主机,用户可以获取计算机对应的 MAC 地址。这个时候就需要用到之前安装的netwox工具啦。

  • 显示局域网中指定主机的 MAC 地址信息
shell
netwox 5 -i 192.168.10.101

然后会看到有如下信息输出:

shell
192.168.10.101	00:0C:29:45:70:EB

这表示主机 192.168.10.101 的 MAC 地址为 00:0C:29:45:70:EB。

  • 显示局域网中所有主机的 MAC 地址信息
shell
netwox 5 -i 192.168.10.0/24

等候一段时间后,会看到有如下信息输出:

shell
192.168.10.101	00:0C:29:45:70:EB

在显示局域网中所有主机的 MAC 地址信息时,有时由于暂时没有发现主机,等待较长的时间,也不会有任何输出信息。为了能够更好地了解当前的进度,可以使用-u选项,显示未发现主机的 MAC 地址的信息,进而可以查看扫描进度。

shell
netwox 5 -i 192.168.10.0/24 -u

4. 由MAC获取主机其他信息 ​

进行数据传输的主机不仅拥有 MAC 地址,还拥有路由器分配的 IP 地址,有的还会有自己的主机名、标题等信息。如果知道了主机的 MAC 地址信息,那么就可以获取该主机的这些信息。

  • 显示该主机相关信息
shell
netwox 4 -e 00:0C:29:45:70:EB

然后会看到有如下信息输出:

shell
IP address:  192.168.10.101
Hostname:    vm
Hostnames:   vm

这表示该主机的 IP 地址为 192.168.10.101,主机名为 vm。在上便命令后加上选项可以实现特定信息的输出:

shell
netwox 4 -e 00:0C:29:45:70:EB --ip    # 在显示信息时只想显示 IP 地址信息
netwox 4 -e 00:0C:29:45:70:EB --host  # 在显示信息时只想显示主机名信息
netwox 4 -e 00:0C:29:45:70:EB --title # 在显示信息时只想显示标题信息