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

news/2025/2/2 14:49:53/

前言:

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

数据链路层介绍

        数据链路层是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.ppmy.cn/news/1568724.html

相关文章

go变量、打印、注释

Go 语言定义变量 变量:程序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,…

【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南

文章目录 🌍一. WEB 开发❄️1. 介绍 ❄️2. BS 与 CS 开发介绍 ❄️3. JavaWeb 服务软件 🌍二. Tomcat❄️1. Tomcat 下载和安装 ❄️2. Tomcat 启动 ❄️3. Tomcat 启动故障排除 ❄️4. Tomcat 服务中部署 WEB 应用 ❄️5. 浏览器访问 Web 服务过程详…

fpga系列 HDL:XILINX Vivado ILA FPGA 在线逻辑分析

ILA为内置逻辑分析仪,通过JTAG与FPGA连接,程序在真实硬件中运行,功能类似Quaruts的SignalTap II 。 ip创建ila 使用ila ip核 timescale 1ns / 1ps module HLSLED(input wire clk ,input wire rst_n ,output wire led);// reg led_o_i 1…

如何选择Spring AOP的动态代理?JDK与CGLIB的适用场景

Spring AOP在默认情况下使用的动态代理方式,可以比作是餐厅里的“智能服务员助手”。 Spring AOP默认提供了两种动态代理方式:JDK动态代理和CGLIB代理。其选择取决于被代理的对象是否实现了接口,以及配置的代理模式。默认情况下,…

北京门头沟区房屋轮廓shp的arcgis数据建筑物轮廓无偏移坐标测评

在IT行业中,地理信息系统(GIS)是用于处理、分析和展示地理空间数据的重要工具,而ArcGIS则是GIS领域中的一款知名软件。本文将详细解析标题和描述中提及的知识点,并结合“门头沟区建筑物数据”这一标签,深入…

Java 分布式与微服务架构:现代企业应用开发的新范式

Java学习资料 Java学习资料 Java学习资料 一、引言 在当今数字化时代,企业应用面临着越来越高的性能、可扩展性和灵活性要求。传统的单体架构在应对大规模用户访问、复杂业务逻辑和频繁的功能迭代时,逐渐暴露出诸多问题。Java 分布式与微服务架构应运…

在Putty创建php文件

之前不知道怎么在 http://AAAcemcs02.AAA.edu/~AAA/515/1 上面创建文件夹,一直都是forbidden 解决办法是用chomod 755 * 创建文件以后全部打开,再用ls确认目录,就会有 创建文件的流程如下 #enter folder 515/1 cd ~/public_html/515/1 …

用Devc++与easyx一步一步做游戏[启动界面部分]-解决hover闪烁问题及优化

在之前的博文中《用Devc与easyx一步一步做游戏[启动界面部分]-之按钮制作》,我们利用Devc和easyx完成了游戏启动界面按钮的基本制作,实现了按钮的绘制以及鼠标悬停时的信息提示功能。然而,目前还存在一个问题,即鼠标移动时&#x…