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

网络链路层之(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 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::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 0TX 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.mzph.cn/news/775166.shtml

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

相关文章

HarmonyOS应用/元服务发布流程

在发布HarmonyOS应用/元服务前&#xff0c;建议您在本地进行调试&#xff0c;以查看和验证应用/元服务运行效果&#xff0c;减少发布过程中可能遇到的问题。 华为支持您使用HUAWEI DevEco Studio自动化签名的方式对应用/元服务进行调试&#xff0c;总体流程如下。 配置签名信息…

H12-831_338

多选题338、某园区部署OSPF实现网络互通&#xff0c;其中R2的LSDB如图所示。以下关于该LSDB信息的描述&#xff0c;错误的有哪些项? A.此时R4不能访间地址10.1.35.5/24&#xff0c;因为R4所在的Area l内没有泛洪R3-R5互联网段路由信息 B.Area l内无3类LSA&#xff0c;有7类1SA…

【LVGL-键盘部件,实体按键控制】

LVGL-二维码库 ■ LVGL-键盘部件■ 示例一&#xff1a;键盘弹窗提示■ 示例二&#xff1a;设置键盘模式■ 综合示例&#xff1a; ■ LVGL-实体按键控制■ 简介 ■ LVGL-键盘部件 ■ 示例一&#xff1a;键盘弹窗提示 lv_keyboard_set_popovers(kb,true);■ 示例二&#xff1a;设…

前端 CSS 经典:grid 栅格布局

前言&#xff1a;Grid 布局是将容器划分成"行"和"列"&#xff0c;产生单元格&#xff0c;然后将"项目"分配给划分好的单元格&#xff0c;因为有行和列&#xff0c;可以看作是二维布局。 一 术语 1. 容器 采用网格布局的区域&#xff0c;也就是…

Chakra UI:重塑React组件开发的未来

随着前端开发技术的不断演进&#xff0c;React已经成为了一个不可或缺的开源JavaScript库&#xff0c;用于构建用户界面。然而&#xff0c;虽然React提供了构建用户界面的强大工具&#xff0c;但在组件的可访问性、可重复使用性和可组合性方面仍存在挑战。Chakra UI正是一个为解…

上位机图像处理和嵌入式模块部署(qmacvisual区域提取)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在图像处理中&#xff0c;有两部分比较重要&#xff0c;一个是区域分割&#xff0c;一个是区域提取。区域分割&#xff0c;比较好理解&#xff0c;…

MFC标签设计工具 图片控件上,移动鼠标显示图片控件内的鼠标xy的水平和垂直辅助线要在标签模板上加上文字、条型码、二维码 找准坐标和字体大小 源码

需求&#xff1a;要在标签模板上加上文字、条型码、二维码 找准坐标和字体大小 我生成标签时&#xff0c;需要对齐和 调文字字体大小。这工具微调 能快速知道位置 和字体大小。 标签设计(点击图片&#xff0c;上下左右箭头移动 或-调字体) 已经够用了&#xff0c;滚动条还没完…

Jmeter 从登录接口提取cookie 并 跨线程组调用cookie (超详细)

文章目录 一、开始前的准备二、 业务场景介绍三、从登录接口提取cookies四、跨线程组调用cookies 一、开始前的准备 1、安装Jmeter&#xff0c;参考文章&#xff1a;JMeter 3.1 和JMeterPlugin的下载安装 2、设置配置文件使Cookie管理器保存cookie信息。 修改apache-jmeter-x…

PPT没保存怎么恢复?3个方法(更新版)!

“我刚做完一个PPT&#xff0c;正准备保存的时候电脑没电自动关机了&#xff0c;打开电脑后才发现我的PPT没保存。这可怎么办&#xff1f;还有机会恢复吗&#xff1f;” 在日常办公和学习中&#xff0c;PowerPoint是制作演示文稿的重要工具。我们会在各种场景下使用它。但有时候…

目标检测+车道线识别+追踪

一种方法&#xff1a; 车道线检测-canny边缘检测-霍夫变换 一、什么是霍夫变换 霍夫变换&#xff08;Hough Transform&#xff09;是一种在图像处理和计算机视觉中广泛使用的特征检测技术&#xff0c;主要用于识别图像中的几何形状&#xff0c;尤其是直线、圆和椭圆等常见形状…

ssm小区车库停车系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm小区车库停车系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模…

持续集成与版本控制的相关概念

目录 一、持续集成 1.1 持续集成基本概念 1.1.1 持续集成的含义 1.1.1.1 持续集成流程是依赖产品版本迭代和版本分支而产生的 1.1.1.2 持续集成流程中包含的内容 1.1.2 传统打包模式说明 1.1.2.1 传统打包模式概述 1.1.2.2 传统打包模式问题 1.1.3 持续集成模式 1.1.…

day70 Mybatis使用mapper重构xml文件重新修改商品管理系统

day67 基于mysql数据库jdbcDruidjar包连接的商品管理用户购物系统-CSDN博客 1多表操作 2动态SQL 项目中使用的为商品管理系统的表 一 查询商品信息 编号&#xff0c;名称&#xff0c;单价&#xff0c;库存&#xff0c;类别 1表&#xff1a;商品表&#xff0c;类别表 n对1…

java图书管理系统(简易)

实现的基本功能&#xff1a; 登录时&#xff0c;需要输入姓名&#xff0c;然后选择作为管理者还是普通用户。选择成功后选择想要实现的功能。管理者的目录下方有有五个功能&#xff0c;而普通用户有4个功能&#xff0c;如下图 首先我们要建立Book这个类&#xff0c;里面包含书…

sqlite跨数据库复制表

1.方法1 要将 SQLite 数据库中的一个表复制到另一个数据库&#xff0c;您可以按照以下步骤操作&#xff1a; 备份原始表的SQL定义和数据&#xff1a; 使用 sqlite3 命令行工具或任何SQLite图形界面工具&#xff0c;您可以执行以下SQL命令来导出表的SQL定义和数据&#xff1a…

算法打卡day19

今日任务&#xff1a; 1&#xff09;235. 二叉搜索树的最近公共祖先 2&#xff09;701.二叉搜索树中的插入操作 3&#xff09;450.删除二叉搜索树中的节点 235. 二叉搜索树的最近公共祖先 题目链接&#xff1a;235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&…

Adobe推出20多个,企业版生成式AI定制、微调服务

3月27日&#xff0c;全球多媒体领导者Adobe在拉斯维加斯召开“Summit 2024”大会&#xff0c;重磅推出了Firefly Services。 Firefly Services提供了20 多个生成式AI和创意API服务&#xff0c;支持企业自有数据对模型进行定制、微调&#xff0c;同时可以与PS、Illustrator、Ex…

华为开源自研AI框架昇思MindSpore应用案例:梯度累加

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 二、案例实现 梯度累加的训练算法&#xff0c;目的是为了解决由于内存不足&#xff0c;导致Batch size过大神经网络无法训练&#xff0c;或者网络模型过大无法加载的OOM&#xff08;Out Of Memory&#xff…

Learn OpenGL 26 视差贴图

什么是视差贴图 视差贴图(Parallax Mapping)技术和法线贴图差不多&#xff0c;但它有着不同的原则。和法线贴图一样视差贴图能够极大提升表面细节&#xff0c;使之具有深度感。它也是利用了视错觉&#xff0c;然而对深度有着更好的表达&#xff0c;与法线贴图一起用能够产生难…

uniapp写小程序如何实现分包

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