网络链路层之(1)基础概念

news2024/11/6 10:01:02

网络链路层之(1)基础概念


Author: Once Day Date: 2024年3月27日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CSDN博客。

参考文章:

-《TCP/IP详解卷一》


文章目录

  • 网络链路层之(1)基础概念
        • 1. 概述
          • 1.1 介绍
          • 1.2 常见实现
          • 1.3 TCP/IP协议族中作用
        • 2. 环回接口
        • 3. 最大传输单元(MTU)
        • 4. 常见数据链路层隧道协议
        • 5. 常见链路层攻击

1. 概述
1.1 介绍

数据链路层,将网络层交下来的IP数据报组装成帧(frame),在两个相邻的链路节点上传输。该层还可以对帧进行检错甚至纠正。

在这里插入图片描述

数据链路层主要使用两种类型的信道:

  • 点对点信道,使用1对1的通信方式。

  • 广播信道,使用1对多的广播通信模式。

**链路(link)**是从一个结点到相邻结点之间的一段物理线路,中间没有任何其他的交换结点。

数据链路(data link),在链路通信,所需要的硬件和软件协议,总和在一起就构成了数据链路。也就是现在所属的网络适配器。

数据链路层无需考虑物理层传输的细节,直接抽象成沿水平方向传递数据就好。

数据链路层的协议必须考虑三个问题:

  • 封装成帧,在一段数据前后分别添加首部和尾部,进行帧定界。当检测到帧接收不完整时,可以直接丢弃。

  • 透明传输,需要对数据里可能涉及帧定界字符的字符进行转义,即字节填充或字符填充。这些数据对于数据链路层的协议来说就是透明的。

  • 差错控制。通信线路并非理想,传输过程可能出现差错。数据链路层广泛使用循环冗余校验CRC来进行检错。

差错检测只是保证接受的帧几乎没有错误,但是还是会出现帧丢失、失序、重复等问题,因此是不可靠传输

但对于通信质量较差的无线传输链路,数据链路层使用确认和重传机制。

但有线传输的通信质量已经挺好了,不确认、不重传可以提高效率。

数据链路层网络中,协议数据单元PDU的大小是有限制的,以太网中为1500,PPP协议保持兼容一般也为1500.

该限制特征被称为最大传输单元MTU,在包含所有链路的整个网络路径上,最小MTU称为路径MTU。

1.2 常见实现

通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡,它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。

  • 在相邻节点间提供数据传输服务,成帧、物理寻址、流量、差错、接入控制。

  • 局域网:IEEE802.2定义LLC子层(数据链路层),IEEE802.3的以太网标准,802.3标准定义了物理层和数据链路层的MAC子层。

  • 广域网:HDLC、PPP、Frame Relay

在这里插入图片描述

1.3 TCP/IP协议族中作用

TCP/IP协议族中,链路层主要有三个目的:

(1)为IP模块发送和接收IP数据报;

(2)为ARP模块发送ARP请求和接收ARP应答;

(3)为RARP发送RARP请求和接收RARP应答。

2. 环回接口

在计算机网络中,环回接口是一个特殊的逻辑接口。它常常用于测试和诊断。在Linux操作系统中,环回接口被称为lo,它允许计算机与自己通信。可能听起来有点像科幻小说中的自言自语,但这其实是一个非常实用的功能。环回接口有一个标准的IP地址,通常是127.0.0.1,这个地址被大家熟知地称为“localhost”。

当在Linux系统上运行网络服务,如Web服务器或数据库服务器时,环回接口就发挥了作用。开发者在本机上测试服务是否正常运行时,会访问127.0.0.1。这样,他们就不必担心网络配置的问题,可以专注于服务的功能性测试。因为网络数据包在没有离开主机的情况下,就被送达并返回,这就像是给自己写信并立刻收到回信一样。

环回接口不仅仅用于测试,它也是网络配置的一个重要组成部分。例如,很多安全策略和系统配置规则会特别考虑到环回流量,确保它不会被错误地过滤或重定向。此外,环回地址也常常用作预留地址,用于软件配置中指代本机。

值得一提的是,环回接口的工作方式确保了它是极其高效的。由于数据不需要经过任何物理网络设备,环回流量几乎没有延迟,也不会占用实际的网络带宽。这就像是用内部邮件系统代替了外部邮寄,相比之下快捷而高效。

但是,环回接口也有其局限性。显而易见,它不能用于与网络上的其他设备通信。此外,如果网络服务配置不当,仅监听环回地址,那么它将无法接受来自其他设备的连接请求。

本地环回口通常有以下的属性:

  • IPv4地址一般为127.0.0.1,子网掩码255.0.0.0,Linux默认为lo口,Windows中默认没安装Microsoft环回适配器。
  • IPv6中只有地址::1地址被定义用于环回。
  • 接口MTU一般为16KB,也可以配置得更大(最大2GB)。

下面是Ubuntu设备lo口详情:

ubuntu->~:$ ifconfig lo
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 6985873  bytes 3023510986 (3.0 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6985873  bytes 3023510986 (3.0 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

3. 最大传输单元(MTU)

在网络通信中,MTU(Maximum Transmission Unit,最大传输单元)是指在网络层上可以传输的最大数据包大小。每种网络技术都有其标准的MTU值。例如,以太网的常规MTU大小是1500字节。

这个参数至关重要,因为它决定了数据包的传输效率和网络的拥塞状况。如果一个数据包的大小超过了网络的MTU,它就需要被分割成更小的片段以便传输,这个过程称为分片。分片可能会增加延迟和处理开销,因为每个片段都需要在目的地被重新组装。

而路径MTU(Path MTU,路径最大传输单元)则是指在数据包传输路径上所有网络段中MTU的最小值。这个概念是为了解决数据包在传输过程中可能遇到的不同MTU限制的问题。

路径MTU发现(PMTUD,Path MTU Discovery)是一种机制,它允许网络设备发现从发送端到接收端之间路径上的最小MTU值,以避免分片。

这个机制通过发送一个设置了“不分片”(DF)标志的IP数据包来工作,如果这个数据包太大而无法通过网络的某个段,那么这个段就会丢弃该数据包,并发送一个ICMP(Internet Control Message Protocol,互联网控制消息协议)的“不能分片的错误”消息回发送端,通知它路径MTU的限制。

4. 常见数据链路层隧道协议

数据链路层的隧道协议允许网络流量在第三层(网络层)以下进行封装,从而在两个相隔较远的网络节点之间建立一个逻辑链接。这些隧道协议通常用于VPN(Virtual Private Network,虚拟专用网络)的构建,以确保数据传输的安全性和私密性。以下是一些常见的数据链路层隧道协议的简要介绍:

  1. 点对点协议(PPP):PPP是一种用于在点对点链路上封装网络层数据包的数据链路层通信协议。它支持多种网络层协议,如IP和IPX,并且能够提供认证,如PAP(Password Authentication Protocol)和CHAP(Challenge-Handshake Authentication Protocol)。

  2. 点对点隧道协议(PPTP):PPTP是一种用于实现VPN的隧道协议,它使用了PPP协议的封装方法,并在TCP/IP网络中创建一个虚拟隧道。PPTP允许用户通过互联网以加密的形式安全地访问公司网络。

  3. 第二层隧道协议(L2TP):L2TP结合了PPTP和L2F(Layer 2 Forwarding Protocol)的特点,通常与IPSec(Internet Protocol Security)结合使用,以提供隧道的机密性、发送者身份认证和数据完整性。L2TP本身不提供加密,但它创建了一个隧道,IPSec负责数据包的加密。

  4. 安全套接字隧道协议(SSTP):SSTP是微软开发的一种隧道协议,它通过HTTPS在客户端和服务器之间建立VPN连接,可以穿越防火墙和NAT(Network Address Translation)设备。SSTP提供了高级的加密功能和较好的兼容性。

  5. 以太网隧道协议(EtherIP/L2TPv3/VXLAN):EtherIP、L2TP版本3和VXLAN是用于在IP网络上隧道传输以太网流量的协议。它们允许跨越不同的网络基础架构传输以太网帧,并常用于数据中心网络虚拟化。

在选择隧道协议时,网络设计师需要考虑多种因素,如安全性、性能、网络环境的兼容性以及部署的复杂性。例如,尽管PPTP易于设置,但它的安全性已不再被认为是可靠的,因此现代VPN更倾向于使用L2TP/IPSec或SSTP。隧道协议的选择也要适应网络的长期发展,以应对快速变化的网络安全威胁和不断升级的技术标准。

5. 常见链路层攻击

链路层是OSI模型中的第二层,负责在相邻网络节点间的数据帧传输。这一层涉及的协议和硬件设备,如以太网、无线局域网(WLAN)和交换设备,都可能成为攻击者的目标。链路层攻击通常利用链路层协议的缺陷或设计上的缺陷来进行。以下是一些常见的与链路层有关的攻击类型:

  1. MAC地址欺骗(MAC Spoofing):攻击者通过改变其网络接口的MAC(Media Access Control)地址来模仿其他设备。这可以导致多种攻击,如身份冒充、网络访问控制规则绕过等。

  2. ARP欺骗(ARP Spoofing):主要针对IPv4网络,攻击者发送伪造的ARP(Address Resolution Protocol)消息,将自己的MAC地址与网络中另一个设备的IP地址关联起来。这可以导致中间人攻击,攻击者能够截获、修改或阻断两个设备之间的通信。

  3. VLAN跳跃(VLAN Hopping):攻击者尝试从一个VLAN(Virtual Local Area Network,虚拟局域网)跳转到另一个VLAN,以绕过网络分段带来的安全控制。比如,通过双重封装802.1Q标签的方法来欺骗交换机,将数据包发送到不同的VLAN。

  4. DHCP欺骗(DHCP Spoofing):攻击者设置一个假的DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)服务器,对网络内的设备分配IP地址。这可以让攻击者控制受害者设备的网络配置,进行中间人攻击或是网络流量重定向。

  5. 无线网络攻击(Wi-Fi Attacks):在无线网络中,攻击者可能会尝试破解WEP(Wired Equivalent Privacy)或WPA(Wi-Fi Protected Access)密码,进行无线网络监听或未授权访问。此外,还包括“邪恶孪生”(Evil Twin)攻击,攻击者设置一个假的无线接入点来欺骗用户,诱使他们连接并窃取信息。

  6. LLC层攻击(LLC Layer Attacks):在逻辑链路控制(Logical Link Control)层,攻击者可能利用特定的LLC报文格式或流控制机制进行拒绝服务攻击或数据篡改。

要防御这些攻击,网络管理员需要采取多种安全措施,例如使用端口安全功能限制MAC地址的更改,配置动态ARP检查,使用VLAN访问控制列表(ACLs),部署加密无线网络以及监控网络流量以检测异常行为。







Alt

Once Day

也信美人终作土,不堪幽梦太匆匆......

如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!

(。◕‿◕。)感谢您的阅读与支持~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1549851.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Fastjson配置消息转换器(时间格式问题)

问题&#xff1a; 我们可以看见&#xff0c;日期的格式有点问题。 由于ArticleListVO类的createTime成员变量是Date类型&#xff0c;默认是由java的Jackson来处理&#xff0c;使用 ISO-8601 规范来处理日期时间格式。ISO-8601 是一种国际标准的日期时间表示法&#xff0c;例如&…

『Apisix安全篇』探索Apache APISIX身份认证插件:从基础到实战

&#x1f680;『Apisix系列文章』探索新一代微服务体系下的API管理新范式与最佳实践 【点击此跳转】 &#x1f4e3;读完这篇文章里你能收获到 &#x1f6e0;️ 了解APISIX身份认证的重要性和基本概念&#xff0c;以及如何在微服务架构中实施API安全。&#x1f511; 学习如何使…

【Git篇】复习git

文章目录 &#x1f354;什么是git⭐git和svn的区别 &#x1f354;搭建本地仓库&#x1f354;克隆远程仓库&#x1f6f8;git常用命令 &#x1f354;什么是git Git是一种分布式版本控制系统&#xff0c;它可以追踪文件的变化、协调多人在同一个项目上的工作、恢复文件的旧版本等…

金蝶BI方案治好我的数据分析困难症

结构分析、趋势分析、分布分析、对比分析……这还是大方向的&#xff0c;细分下来还会根据数据类型和具体场景不同而不同&#xff0c;不仅如此&#xff0c;每个月的数据分析需求还可能不同&#xff0c;导致分析量多且复杂&#xff0c;加班加点也忙不过来。但金蝶BI方案就不一样…

servlet开发详解

一、什么是servlet&#xff0c;干什么用的&#xff1f;&#xff1f;&#xff1f; tomcat作为一个web服务器&#xff0c;也称作servlet容器。servlet只有放在web服务器中才能运行&#xff0c;不能独立运行。tomcat这个容器要做三件事&#xff1a;接收请求、处理请求和响应请求。…

VMware ESXi部署macOS Monterey

正文共&#xff1a;1024 字 30 图&#xff0c;预估阅读时间&#xff1a;2 分钟 最早使用黑苹果是在2015年&#xff0c;装在了古老的Acer商务本上&#xff08;老樹發新芽&#xff0c;acer tm 4750g裝黑蘋果&#xff09;&#xff1b;上次安装黑苹果是在两年前&#xff08;VMware…

uniapp写小程序如何实现分包

众所众知小程序上传的过程中对包的大小有限制&#xff0c;正常情况下不允许当个包超过2M&#xff0c;所以需要分包 需要再pages.json这个文件夹中进行配置 "pages": [{"path": "pages/index/index","style": {"navigationBarTit…

【Flink架构】关于FLink BLOB的组织架构:FLIP-19: Improved BLOB storage architecture:官网解读

文章目录 一. BlobServer架构1.BlobClient2. BlobServer3. BlobCache4. LibraryCacheManager 二、BLOB的生命周期1. 分阶段清理2. BlobCache的生命周期3. BlobServer 三、文件上下载流程1. BlobCache 下载2. BlobServer 上传3. BlobServer 下载 四. Flink中支持的BLOB文件类型1…

VTK 示例 基本的流程-事件交互、球体、

流程可以总结如下&#xff1a; 导入所需的头文件&#xff1a; 首先&#xff0c;导入了一系列 VTK 头文件&#xff0c;这些文件包含了所需的类和函数声明。 创建对象&#xff1a; 创建了两个球体&#xff08;一个较大&#xff0c;一个较小&#xff09;&#xff0c;一个平面&…

Docker和 Containerd 的区别

自 Docker 开启了使用容器的爆发式增长&#xff0c;有越来越多的工具和标准来帮助管理和使用这项容器化技术&#xff0c;与此同时也造成了有很多术语让人感到困惑。 容器生态系统 容器生态系统是由许多令人兴奋的技术、大量的专业术语和大公司相互争斗组成的。 幸运的是&…

Windows平台cmake编译QT源码库,使用VScode开发QT

不愿意安装庞大的QT开发IDE&#xff0c;可以编译QT源码库。 下载源码可以用国内镜像&#xff0c;如清华大学的&#xff1a;Index of /qt/archive/qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 我用的是 6.5.3&#xff0c;进去之后&#xff0c;不要下载整个源…

linux环境gitlab迁移到新服务器

目录 备份项目备份gitlab配置阿里云磁盘格式化准备 最近服务器中了挖矿病毒&#xff0c;清理几次&#xff0c;都没有搞定&#xff0c;只能重新安装gitlab 备份项目 先把项目备份到本地 git pull git remote prune origin确保本地代码是最新的并且拥有所有的分支 git remote …

unity 横版过关单向通行实现(PlatformEffector2D)

目录 前言一、什么是 PlatformEffector2D&#xff1f;二、使用步骤1.创建模型2.创建jump脚本3.PlatformEffector2D组件 三、效果总结 前言 在 2D 游戏中&#xff0c;处理角色与平台之间的交互是一个常见但复杂的任务。为了简化这一过程&#xff0c;Unity 提供了 PlatformEffec…

JVM(五)——类加载阶段

一、类加载阶段 一个类型从被加载到虚拟机内存中开始&#xff0c;到卸载出内存为止&#xff0c;它的整个生命周期将会经历加载 &#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09;、解析&#xff08;Resol…

基于PHP高校网上教材征订系统的设计与实现(论文+源码)_kaic

高校网上教材征订系统设计与实现 摘 要 本高校网上教材征订系统是针对目前高校网上教材征订管理的实际需求&#xff0c;从实际工作出发&#xff0c;对过去的高校网上教材征订系统存在的问题进行分析&#xff0c;结合计算机系统的结构、概念、模型、原理、方法&#xff0c;在计算…

VBA高级应用30例应用2:MouseMove鼠标左键按下并移动鼠标事件

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…

【GitLab】Ubuntu 22.04 快速安装 GitLab

在 Ubuntu 22.04 上安装最新版本的 GitLab&#xff0c;可以按照以下步骤操作&#xff1a; 1. 更新系统&#xff1a; 在终端中执行以下命令以确保系统是最新的&#xff1a; sudo apt update sudo apt upgrade2. 安装依赖&#xff1a; 安装 GitLab 所需的依赖包&#xff1a; …

唯美动态个人404页面源码

源码介绍 手机端先加载静态图再缓慢加载gif动图&#xff0c;电脑端先加载静态图在加载mp4。提升打开速度&#xff01; 源码截图 下载地址 唯美动态个人404页面源码

BUG定位---一起学习吧之测试

判断一个BUG是前端还是后端的&#xff0c;通常需要根据BUG的具体表现、发生的环境以及相关的技术栈来进行分析。以下是一些常用的判断方法&#xff1a; 错误发生的位置&#xff1a; 如果BUG涉及的是页面的布局、样式、交互效果等&#xff0c;那么很可能是前端的BUG。如果BUG与…

架构师之路--Docker的技术学习路径

Docker 的技术学习路径 一、引言 Docker 是一个开源的应用容器引擎&#xff0c;它可以让开发者将应用程序及其依赖包打包成一个可移植的容器&#xff0c;然后在任何支持 Docker 的操作系统上运行。Docker 具有轻量级、快速部署、可移植性强等优点&#xff0c;因此在现代软件开…