网络编程(三)数据链路相关知识

简介: 网络编程(三)数据链路相关知识

数据链路,指OSI参考模型中的数据链路层,有时也指以太网、无线局域网等通信手段。

各个设备之间在数据传输时,数据链路层和物理层都是必不可少的。数据链路层的协议定义了通过通信媒介互连的设备之间传输的规范。

MAC地址

MAC地址用于识别数据链路中互连的节点。以太网、无线LAN、蓝牙等设备都是使用的相同规格的MAC地址。


MAC地址长48比特,在使用网卡(NIC)的情况下,MAC地址一般会被烧入到ROM中。因此,任何一个网卡的MAC地址都是唯一的,在全世界都不会有重复(凡事有例外:微机板自己设置MAC;虚拟机分配的MAC等不能确保不重复)。

image.png

MAC地址中3~24位(比特位)表示厂商识别码,每个NIC厂商都有特定唯一的识别数字。25~48位是厂商内部为识别每个网卡而用。因此,可以保证全世界不会有相同MAC地址的网卡。

半双工与全双工通信

半双工是指,只发送或只接收的通信方式。它类似于无线电收发器,若两端同时说话,是听不见对方说的话的。而全双工不同,它允许在同一时间既可以发送数据也可以接收数据。类似于电话,接打双方可以同时说话。

共享介质网络与非共享介质网络

从通信介质的使用方法上看,网络可分为共享介质型和非共享介质型。

共享介质网络

指由多个设备共享一个通信介质的一种网络。最早的以太网和FDDI就是介质共享型网络。在这种方式下,设备之间使用同一个载波信道进行发送和接收。为此,基本上采用半双工通信方式,并有必要对介质进行访问控制。

非共享介质网络

是指不共享介质,是对介质采取专用的一种传输控制方式。在这种方式下,网络中的每个站直连交换机,由交换机负责转发数据帧。此方式下,发送端与接收端并不共享通信介质,因此很多情况下采用全双工通信方式。


最近它也成为了以太网的主流方式。通过以太网交换机构建网络,从而使计算机与交换机端口之间形成一对一的连接,即可实现全双工通信。


该方式还可以根据交换机的高级特性构建虚拟局域网(VLAN,Virtual LAN)、进行流量控

制等。当然,这种方式也有一个致命的弱点,那就是一旦交换机发生故障,与之相连的所有计算机之间都将无法通信。

交换集线器(以太网交换机)

这是一种将非介质共享型网络中所使用的交换机用在以太网中的技术,交换集线器也叫做以太网交换机。

以太网交换机就是持有多个端口的网桥,它们根据数据链路层中每个帧的目标MAC地址,决定从哪个网络接口发送数据。这时所参考的、用以记录发送接口的表就叫做转发表(Forwarding Table)。

自学过程

上面提到的转发表不需要人工在交换机上面进行设置,可以自动生成。


数据链路层的每个通过点在接到包时,会从中将源MAC地址以及曾经接收该地址发送的数据包的接口作为对应关系记录到转发表中。以某个MAC地址作为源地址的包由某一接口接收,实质上可以理解为该MAC地址就是该接口的目标。因此也可以说,以该MAC地址作为目标地址的包,经由该接口送出即可。这一过程也叫自学过程。

交换机的转发方式
1、存储转发

存储转发方式检查以太网数据帧末尾的FCS位后再进行转发。

因此,可以避免发送由于冲突而被破坏的帧或噪声导致的错误帧。

2、直通转发

不需要将整个帧全部接收下来以后再进行转发。只需要得知目标地址即可开始转发。

因此,它具有延迟较短的优势。但同时也不可避免地有发送错误帧的可能性。

VLAN

为了减少实际网络拓扑的修改,可以使用带有VLAN功能的交换机。

VLAN技术附加到网桥/2层交换机上,就可以切断所有VLAN之间的所有通信。因此,相比一般的网桥/2层交换机,VLAN可以过滤多余的包,提高网络的承载效率。

简单VLAN

如下图所示,是一个简单的VLAN,该交换机按照其端口区分了A、B两个网段,从而区分了广播数据传播的范围、减少了网络负载并高了网络的安全性。然而异构的两个网段之间,就需要利用具有路由功能的交换机(如3层交换机),或在各段中间通过路由器的连接才能实现通信。

image.png

TAG VLAN(定义了IEEE802.1Q的标准)

TAG VLAN中对每个网段都用一个VLAN ID的标签进行唯一标识。

在交换机中传输帧时,在以太网首部加入这个VID 标签,根据这个值决定将数据帧发送给哪个网段。

image.png

以太网

在众多数据链路中最为著名、使用最为广泛的莫过于以太网(Ethernet)(以太网(Ethernet)一词源于Ether(以太),意为介质。在爱因斯坦提出量子力学之前,人们普遍认为宇宙空间充满以太,并以波的形式传送着光。) 。

现在,以太网已成为最具兼容性与未来发展性的一种数据链路。

早期以太网结构

初期使用多台终端使用同一电缆的共享介质型的连接方式。

image.png

现代以太网结构

终端与交换机之间独占电缆的方式实现以太网通信。

image.png

以太网分类

下图展示以太网介质,不做详细介绍:

image.png

以太网帧格式

以太网帧前端有一个叫做前导码(Preamble)的部分,表示一个以太网帧的开始,也是对端网卡能够确保与其同步的标志。

前导码如下所示:

image.png

以太网帧本体的前端是以太网的首部,它总共占14个字节。分别是6个字节的目标MAC地址、6个字节的源MAC地址以及2个字节的上层协议类型。

image.png

相关文章
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习的魔法:如何用神经网络解锁数据的奥秘
在人工智能的璀璨星空中,深度学习犹如一颗最亮的星,它以其强大的数据处理能力,改变了我们对世界的认知方式。本文将深入浅出地介绍深度学习的核心概念、工作原理及其在不同领域的应用实例,让读者能够理解并欣赏到深度学习技术背后的奇妙和强大之处。
25 3
|
25天前
|
JavaScript 算法 前端开发
采招网JS逆向:基于AES解密网络数据
采招网JS逆向:基于AES解密网络数据
37 0
|
1天前
|
数据采集 存储 监控
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
本文探讨了如何利用 PHP 的 `set_time_limit()` 与爬虫工具的 `setTrafficLimit()` 方法,结合多线程和代理 IP 技术,高效稳定地抓取百度云盘的公开资源。通过设置脚本执行时间和流量限制,使用多线程提高抓取效率,并通过代理 IP 防止 IP 封禁,确保长时间稳定运行。文章还提供了示例代码,展示了如何具体实现这一过程,并加入了数据分类统计功能以监控抓取效果。
32 16
网络爬虫的最佳实践:结合 set_time_limit() 与 setTrafficLimit() 抓取云盘数据
|
2天前
|
存储 监控 安全
网络安全与信息安全:保护数据的重要性与实践措施
本文深入探讨了网络安全和信息安全领域内的关键概念,包括网络漏洞、加密技术以及安全意识的重要性。通过分析这些要素,文章提供了实用的策略来增强个人和企业的数据保护能力。我们将探讨如何识别和防范潜在的网络威胁,并强调了持续更新安全知识和采取预防措施的必要性。
|
15天前
|
存储 安全 网络安全
云计算与网络安全:如何保护您的数据在云端
【9月更文挑战第4天】在数字化时代,云计算已成为企业和个人存储和处理数据的首选方式。然而,随着云服务的普及,网络安全问题也日益凸显。本文将探讨云计算的基本原理,网络安全的重要性,以及如何在使用云服务时保护数据安全。我们将从云服务的基本概念出发,深入讨论网络安全的关键技术,最后提供一些实用的建议,帮助您在使用云服务时确保数据安全。
43 6
|
24天前
|
数据采集 存储 机器学习/深度学习
豆瓣评分7.6!Python大牛教你如何采集网络数据
网络数据采集大有所为。在大数据深入人心的时代,网络数据采集作为网络、数据库与机器学习等领域的交汇点,已经成为满足个性化网络数据需求的最佳实践。你在浏览器上看到的内容,大部分都可以通过编写Python 程序来获取。如果你可以通过程序获取数据,那么就可以把数据存储到数据库里。如果你可以把数据存储到数据库里,自然也就可以将这些数据可视化。 今天给小伙伴们分享的这份手册采用简洁强大的Python语言,介绍了网络数据采集,并为采集新式网络中的各种数据类型提供了全面的指导。
|
23天前
|
存储 安全 网络安全
云计算与网络安全:保护云端数据的关键技术
【8月更文挑战第28天】在数字化时代,云计算服务成为企业和个人存储、处理数据的首选。然而,随之而来的网络安全挑战也日益严峻。本文将深入探讨如何通过先进的网络安全技术来保护云服务中的数据安全。我们将从基础的云服务模型开始,逐步深入到网络安全的核心策略和最佳实践,旨在为读者提供一套完整的解决方案,确保他们的数据在云端得到充分的保护。
|
23天前
|
安全 网络安全 数据安全/隐私保护
云原生技术探索:容器化与微服务架构的实践之路网络安全与信息安全:保护数据的关键策略
【8月更文挑战第28天】本文将深入探讨云原生技术的核心概念,包括容器化和微服务架构。我们将通过实际案例和代码示例,展示如何在云平台上实现高效的应用部署和管理。文章不仅提供理论知识,还包含实操指南,帮助开发者理解并应用这些前沿技术。 【8月更文挑战第28天】在数字化时代,网络安全和信息安全是保护个人和企业数据的前线防御。本文将探讨网络安全漏洞的成因、加密技术的应用以及提升安全意识的重要性。文章旨在通过分析网络安全的薄弱环节,介绍如何利用加密技术和提高用户警觉性来构建更为坚固的数据保护屏障。
|
24天前
|
存储 安全 网络安全
云计算与网络安全的博弈:保护数据在虚拟世界中的安全移动应用开发之旅:从新手到专家
【8月更文挑战第27天】随着云计算技术的飞速发展,企业和个人用户越来越多地将数据和服务迁移到云端。然而,这一转变同时带来了新的安全挑战。本文旨在探讨云计算环境下的网络安全问题,并分析如何通过技术和策略保障信息安全。我们将从云服务的基础知识出发,逐步深入到网络安全和信息安全的高级概念,最后讨论如何实施有效的安全措施来抵御网络威胁。文章不仅涵盖了理论框架,还提供了实际案例分析,旨在为读者提供一套全面的云计算安全指南。
|
28天前
|
监控 网络协议 Linux
在Linux中,如何实时抓取并显示当前系统中tcp 80 端口的网络数据信息?
在Linux中,如何实时抓取并显示当前系统中tcp 80 端口的网络数据信息?