当前位置: 首页 > article >正文

【Linux网络编程】数据链路层

前言:

       数据链路层非常简单,对于程序员来说,这里只需要大致了解即可,本篇文章不做重点说明。

数据链路层介绍

        数据链路层是OSI位于物理层之上和网络层之下,这一层的报文叫做帧。它的主要任务是确保数据从一个节点可靠地传输到相邻的节点(连接的网络设备),即专门解决网络传输中两台设备之间的通信。这里所说的节点指的是网络设备,而网络设备可以是计算机、交换机或路由器等。

        这里重点说明下数据链路层和网络层。需注意,数据链路层只能处理网络中两台直接相连的节点之间的通信问题。它的作用范围仅限于直接相连的节点。对于跨越的网络通信(例如,从一台计算机传输数据到另一台不在同一局域网内的计算机或在同一网段下相隔离多台设备的两个节点),需要依赖网络层的服务来实现。网络层是专门处理数据在网络传输方面所遇到的问题。

MAC地址

        MAC地址也称为物理地址,长度为48位(6个字节)一般用16进制数字加上冒号的形式来表示,例如: 08:00:27:03:fb:19。

        MAC地址是网络设备的唯一标识符,它在网络设备的网卡中。MAC地址在网络中用于数据链路层,专门区分不同的网络设备。

        MAC地址是全球唯一的、固定的。每个网络设备在出厂时都会被分配一个独一无二的MAC地址。它与IP地址不同,IP地址可能会变化,但MAC地址不会随着网络设备的移动而改变。

        在网络通信中,当数据包从一个设备发送到另一个设备时,源设备和目标设备的MAC地址都会被包含在数据包中。这样,网络中的交换机和路由器就可以根据MAC地址来确定数据包的传输路径,确保数据包能够准确地到达目标设备。

MTU的认识

        MTU(最大传输单元)是指网络通信中数据包在传输过程中的最大大小限制(以字节为单位)。MTU的大小决定了发送端一次能够发送报文的最大字节数,是数据链路层对数据帧长度的限制。在以太网中,MTU的默认值通常为1500字节,但在某些网络环境中,可能需要根据具体情况调整MTU值以获得更好的性能和稳定性。

        数据在传输过程中,若是数据包的大小超过MTU,那么数据包会在发送端或中间设备(如路由器)被分片成较小的数据包以适应MTU的限制。这些分片的数据包会在接收端被重新组合成原始的数据包。

        注意:数据包分片会增加网络的开销和延迟,因为每个分片都需要单独的传输和处理。此外,如果分片的数据包在传输过程中丢失或损坏,整个数据包都需要重新传输。

        为什么要有MTU呢?要明白,数据在网络中的传输效率受网络性能的影响,MTU减少数据包的数量,可以降低网络通信的开销和延迟提高网络性能,这非常有利于大量数据和大型数据的传输。


总结:

        网络部分这里重在放在传输层和应用层。其中,应用层是程序员为了满足自己的需求而设计的网络程序。传输层是负责将数据从一台主机发送到另一台主机。这两层都是程序员必不可少要接触的网络知识。至于其它网络层次结构,这里只需明白大致内容即可。

        数据链路层的作用:负责两个设备(同一种数据链路节点)之间进行传递数据。

        网络层的作用:在复杂的网络环境中确定一个合适的路径。

        传输层的作用:负责数据能够从发送端传输到接收端。


http://www.kler.cn/a/522519.html

相关文章:

  • CMake常用命令指南(CMakeList.txt)
  • 基于亿坊PHP框架构建物联网解决方案的优势分析!
  • python:洛伦兹变换
  • 最长递增——蓝桥杯
  • 定制Centos镜像(一)
  • 装饰SpringMVC的适配器实现响应自动包装
  • 计算机组成原理(2)王道学习笔记
  • 基于Flask的全国奶茶饮品加盟及门店数据分析系统的设计与实现
  • QT中给界面设置qss样式
  • 浅谈Linux 权限、压缩、进程与服务
  • 锐捷EWEB /auth 远程命令执行漏洞复现(附脚本)
  • 01.双Android容器解决方案
  • 【135. 分发糖果 困难】
  • 关联传播和 Python 和 Scikit-learn 实现
  • LeetCode热题100(一)—— 1.两数之和
  • Autogen_core: Reflection
  • Nuxt:利用public-ip这个npm包来获取公网IP
  • C#字典Dictionary用法详解
  • TikTok 推出了一款 IDE,用于快速构建 AI 应用
  • leetcode 1750. 删除字符串两端相同字符后的最短长度
  • 双选会资料录入步骤
  • 什么是卷积神经网络?
  • linux实际中的常用命令
  • SQL Server约束
  • FPGA 使用 CLOCK_LOW_FANOUT 约束
  • 简易CPU设计入门:控制总线的剩余信号(二)