『 Linux 』网络基础

文章目录

    • 协议分层
    • OSI 七层模型
    • TCP/IP 四层(五层)模型
    • 网络协议栈与操作系统的联系
    • 报文
    • TCP/IP 通讯过程
    • 以太网通信的过程
      • 以太网的数据碰撞


协议分层

请添加图片描述

协议分层是计算机网络中奖网络协议进行组织和管理的方法;

通过将网络通信过程分成多个层次,每个层次负责特定的功能从而简化网络设计和实现;

常见的协议分层模型包括OSI模型和TCP/IP模型;

协议分层使得同层之间可以直接交换信息,而不需要上层或下层进行中介从而提高效率;

其优点为如下:

  • 简化设计

    将复杂的网络通信过程分解为多个简单的层次,每个层只需关注特定的功能从而降低了系统的复杂性;

  • 模块化

    每一层可以独立开发和维护,便于更新换代某一层的协议而不影响其它层;

  • 标准化

    通过定义每一层的功能和接口从而促进不同设备和技术之间的互操作性;

  • 故障隔离

    当出现问题时可以更容易定位到具体的层从而提高故障排查和修复的效率;

  • 灵活性

    不同的网络技术可以在同一层上工作使得新技术可以被集成到现有网络中二不需要全面重构;

  • 可拓展性

    协议分层允许在未来进行扩展或引入新的协议以适应技术的发展变化;

在这个例子中AB使用同一种语言进行沟通,在宏观上AB直接进行沟通,但实际上为A将语言以特定的形式发给座机,座机与座机之间进行通信,而后座机将信息处理完毕后重新使B接收从而达到一个通过不同层协议的封装与解包后宏观上AB直接通信的效果;

由于协议进行分层,AB都无需关心座机协议如何处理;

当某层协议进行更换时其他层也无需了解,从而降低了维护成本;


OSI 七层模型

请添加图片描述

OSI模型将网络通信过程分为七个层次为一个协议栈,每一层都有其特定的功能和协议;

  • 应用层

    为用户提供网络服务,支持各种应用程序的运行;

    通常的协议有HTTP(超文本传输协议),FTP(文件传输协议),SMTP(简单邮件传输协议),DNS(域名系统)等;

  • 表示层

    负责数据的格式转换,加密解密,以及数据压缩和解压缩以确保不同系统间的数据能够被理解;

    通常协议有JPEG,MPEG,ASCII,TLS(传输层安全)等;

  • 会话层

    用于管理用户会话,控制会话的建立,维护和终止,同时还负责会话的恢复和同步;

    通常协议有RPC(远程过程调用),NetBIOS等;

  • 传输层

    用于提供端到端的数据传输服务,确保数据完整性和可靠性,包括流量控制和错误检查;

    通常协议有TCP(传输控制协议),UDP(用户数据报协议)等;

  • 网络层

    负责数据包在不同网络间的传输,处理路由器选择和逻辑地址(如IP地址)的分配;

    通常协议有IP(互联网协议),ICMP(互联网控制消息协议),IGMP(互联网组管协议互联网组管协议)等;

  • 数据链路层

    负责物理地址(如MAC地址)的处理,确保在同一网络内数的数据帧传输,提供错误检测和纠正功能;

    通常协议有Ethernet(以太网),PPP点对点协议,HDLC(高级数据链路控制)等;

  • 物理层

    用于负责实际的物理连接和信号传输,包括电缆,接头,信号电压和数据传输速率等;

    通常的协议有USB,RS-232,IEEE 802.3(以太网标准)等;

而实际上在一般实际的网络实现中传输层,网络层,和数据链路层被视为同一层;

主要原因为:

  • 相互依赖

    这三层在功能上存在很大的依赖关系,网络层负责选择数据包的路由,而传输层则确保这些数据包的可靠传输,数据链路层则处理物理地址和局部网络的传输;

  • 协议栈的简化

    在许多现代网络协议栈(TCP/IP模型)中,网络层和传输层的功能往往会在同一设备或软件中实现;

    如路由器和交换机通常同时处理IP数据包和TCP/UDP数据段;

    结合使得设备的设计和维护变得更加简单和高效;

通常情况下OSI模型为一个标准或者参考框架,而类似于TCP/IP模型则是这一标准在实际应用中的具体实现;


TCP/IP 四层(五层)模型

请添加图片描述

TCP/IP四层模型是互联网协议套件的基础,通常被描述为四层模型,每一层都有其特定的功能和协议;

  • 应用层

    用于负责为用户提供网络服务,支持各种应用程序的运行,处理用户界面和应用程序之间的交互;

    通常协议有HTTP(超文本传输协议),FTP(文件传输协议),SMTP(简单邮件传输协议),DNS(域名系统)等;

  • 传输层

    负责在网络中提供端到端的通信,确保数据的完整和可靠性,处理数据的分段,传输和重组;

    通常协议有TCP(传输控制协议),UDP(用户数据报协议)等;

  • 网络层

    负责数据包的路由选择和传输,处理逻辑地址(如IP地址)的分配,确保数据包能够在不同网络之间传输;

    通常协议有:

    • IP(互联网协议)

      负责数据包的寻址和路由;

    • ICMP(互联网控制消息协议)

      用于发送错误消息和操作信息;

    • ARP(地址解析协议)

      用于将IP地址映射到物理地址(MAC地址);

  • 链路层

    链路层负责在同一网络内的数据帧传输,处理物理地址(MAC地址)和数据的封装与解封装,以确保数据在物理媒介上的传输;

    协议通常有:

    • Ethernet(以太网)

      最常用的局域网技术;

    • Wi-Fi

      无限局域网技术;

    • PPP(点对点协议)

      用于点对点连接;

  • 物理层


网络协议栈与操作系统的联系

请添加图片描述

网络协议栈和操作系统之间的联系在于操作系统负责实现和管理网络协议栈的各个层次以便支持网络通信;

以Linux为例;

操作系统是计算机系统的核心,负责管理硬件和软件资源,包括网络通信;

Linux操作系统通过内核实现网络协议栈从而提供网络功能的基础;

Linux的网络协议栈通常遵循TCP/IP模型;

该图为网络协议栈与操作系统的相关联系;

其中数据链路层与物理层对应操作系统的设备和驱动部分;

传输层与网络层对应操作系统中的系统层,这意味着通常传输层与网络层将由操作系统实现,其中将为上层提供对应的系统调用接口;

应用层对应操作系统的系统层;

当存在两台主机,即主机A与主机B,主机A向主机B通过网络发送数据时将层层封装,数据到达主机B时将被层层解包最后再交由用户;


报文

请添加图片描述

报文是网络通信过程中,由发送方生成并发送给接收方的一组数据;

报文通常包含了控制信息和用户数据两部分,用于实现不同的通信功能;

报文一般由头部,有效载荷,尾部(可选)组成;

  • 头部

    头部一般包含控制信息,用于知道网络设备如何处理报文;

    头部通常包括发送的原地址,目的地址,序列号,协议类型,校验和等信息;

    不同的协议有不同的头部格式,如IP报文头部和TCP报文头的格式是不同的;

  • 有效载荷

    有效载荷为实际传输的数据内容,即下一层关心的信息;

    有效载荷的大小可根据协议和应用的需求而变化;

  • 尾部(可选)

    在某些协议中,报文的尾部可能包含一些额外的信息,如错误检测码或结束标识;

在网络协议栈中,报文的概念可以在不同层次上体现:

  • 应用层报文

    在应用层,报文通常指应用程序之间交换的信息,如HTTP请求和响应;

  • 传输层报文

    在传输层中报文可以指TCP段或UDP数据包;

  • 网络层报文

    在网络层中报文通常被称为IP数据包,其包含IP地址,目的IP地址以及其他路由信息;

  • 链路层报文

    在链路层中,报文被称为帧,一个帧中包含MAC地址等硬件相关信息;


TCP/IP 通讯过程

请添加图片描述

当一个主机接收到一个报文时将会只处理属于该层协议的报头,而剩下部分则会被当做有效载荷并传给下一层;

这表示对于每一层协议而言其报头与有效载荷都是不同的;

通常报文在网络传输的过程中一般为:

  • 发送方应用程序生成报文并将其传递给操作系统的网络栈;
  • 操作系统在传输层,网络层和链路层对报文进行封装,为其添加响应头部信息;
  • 经过各层封装后的报文通过网络接口发送到目标设备;
  • 接收方的网络栈收到报文后逐层解包,即处理属于该层的报头并将有效载荷传递给上一层;
  • 最终接收方的应用程序处理有效载荷中的数据;

其中一个数据从用户经网络栈为其添加报头的过程被称为封装;

对应的一个数据被网络栈进行接收逐层处理最终交给用户的过程被称为解包;

本质上通信的过程就是对报文不断的封装和解包的过程;

  • 几乎任何协议都必须提供一种将报头和有效载荷分离的能力
  • 几乎任何协议都必须提供一种将有效载荷正确交付给对应上一层的能力

以太网通信的过程

请添加图片描述

以太网是一种广泛使用的局域网(LAN)技术,主要用于计算机和网络设备之间的传输数据;

在以太网的通信中一般数据通常由应用程序生成,经过操作系统的网络协议栈进行处理;

  • 应用层

    创建要发送的数据(文件,消息等);

  • 传输层

    数据被封装成传输层报文(如TCP段或UDP数据包),包含源端口和目的端口等信息;

  • 网络层

    传输层报文被进一步封装为IP数据包,并添加源IP与目标IP的地址;

  • 链路层

    IP数据包将被封装为以太网帧,添加源MAC地址和目的MAC地址等信息;

以太网主要支持两种传输方式,分为单播和广播:

  • 单播

    当一个设备发送数据包给特定目标时,这种通信成为单播;

    在单播中,所有连接到同一局域网(LAN)的设备都能够接收到发送的数据包,这是因为该以太网在物理介质中传播,所有连接到同一交换机或共享网络的设备都会接收到这个帧;

    每个接收设备的网卡将会检查收到的以太网帧的目标MAC地址;

    • 如果相同

      该设备将接收并处理这个数据包,解析有效载荷并将其传递给上层协议栈;

    • 如果不同

      该设备将丢弃这个帧,通常不会进行任何处理也不会向上层传递任何信息;

  • 广播

    当一个设备向该网络中的所有设备发送数据时这种通信成为广播;

    在这种情况下发送方的以太网帧中目标MAC地址将被设置为广播地址(FF:FF:FF:FF:FF:FF);

    所有连接在同一局域网的设备都会接收到这个广播帧并对其进行处理;


以太网的数据碰撞

请添加图片描述

在以太网中数据碰撞是指两个或以上的设备在同一时间尝试通过共享传输介质发送数据从而导致这些数据相互干扰;

本质原因是以太网是通过光电信号进行传输的,当多个设备同时进行传输时可能会导致数据碰撞从而发生数据碰撞的问题;

以太网属于是多个设备的共享资源,当一个设备准备发送数据时它首先会监听信道以确保没有其他设备在发送数据,如果信道空闲设备会开始发送数据;

在发送过程中,设备会继续监听信道,如果检测到信号强度的变化(由其他设备也在发送数据)则会发生碰撞;

当数据发生碰撞后可能会导致以下问题:

  • 数据损坏

    发生碰撞后,两个设备发送的数据包将会相互干扰导致数据内容被破坏;

  • 重发

    由于数据未能成功传输,发送设备需要根据碰撞检测机制重新发送数据,从而增加了网络的延迟和负载;

在以太网中,可能发生碰撞的集合被称为碰撞域;

在传统的共享以太网中,整个网络都是一个碰撞域;

为了减少碰撞几率的发生可在以太网中使用交换机来减少(划分)碰撞域;

当一个设备需要发送信息给另一个设备时将会先发送给交换机,交换机将判断目标MAC地址的方向;

假设发出设备与接收设备都在交换机的同侧时,该数据将不会发送给交换机的另一侧从而减少数据碰撞的发生;

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

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

相关文章

触屏交互设备的安全风险

现实中的绝大多数电子设备都具有交互性,而现在越来越多的公共场合有布置越来越多的带触屏的交互设备,功能有简单的,有复杂的,布置的场所和应用的场合也各有不同,几乎在任何一个大型公共场合都可以看到这样的设备&#…

【算法 03】雇佣问题

“雇用问题”及其算法优化 在日常生活和工作中,我们经常会遇到需要从多个选项中做出选择的情况,而“雇用问题”正是这样一个典型的例子。在这个问题中,我们不仅要考虑如何高效地找到最佳候选人,还要关注整个过程中的成本。今天&a…

提高工作效率: AWS Gen AI 在几秒钟内总结会议记录

欢迎来到雲闪世界。全面介绍如何利用 AWS Lambda、Bedrock 和 S3 创建总结会议记录的工作流程 免责声明:本文中使用的会议记录纯属虚构,仅用于作为本文说明和教育目的。它并不反映任何实际的对话、事件或个人。任何与实际人物或事件的相似之处纯属巧合。…

为什么网站要使用HTTPS访问

网站使用HTTPS访问的原因有很多,主要可以归纳为以下几个关键点: 1、数据安全性:HTTPS使用SSL/TLS协议对通信过程进行加密,确保信息在传输过程中不被窃取、篡改或冒充。对于涉及敏感信息(如个人身份、信用卡号等&#x…

数字人解决方案——音频驱动机器人

音频集成 机器人 标志着 人工智能(AI)。 想象一下,机器人可以通过视觉和听觉导航并与周围环境互动。音频驱动的机器人使这成为可能,提高了它们更高效、更直观地执行任务的能力。这一发展可能会影响到各个领域,包括家庭…

github技巧和bug解决方法短篇收集

有一些几句话就可以说明白的观点或者解决的的问题,小虎单独收集到这里。 Commits没有算入每天的activity fork的仓库是不算的。 Commits made in a fork will not count toward your contributions. 参考: Contribution activity not shown for github…

鸿蒙HarmonyOS开发:如何使用第三方库,加速应用开发

文章目录 一、如何安装 ohpm-cli二、如何安装三方库1、在 oh-package.json5 文件中声明三方库,以 ohos/crypto-js 为例:2、安装指定名称 pacakge_name 的三方库,执行以下命令,将自动在当前目录下的 oh-package.json5 文件中自动添…

C# 中引用类型的探讨

引用类型的变量不直接包含其数据;它包含对其数据的引用。 如果按值传递引用类型参数,则可能更改属于所引 用对象的数据,例如类成员的值。 但是,不能更改引用本身的值;例如,不能使用相同引用为新对象分配内存…

QuanTide-weekly第1期

本周Po文 这周我们共发表5篇文章。《基于 XGBoost 的组合策略…》等两篇详细讲解了机器学习构建组合策略的框架和常见问题。 文章要点与结论: 通过两阶段式方案实现多因子、多资产的组合策略构建。第一阶段基于XGBoost构建多个多因子单标的模型,第二阶…

electron-updater实现electron全量更新和增量更新——渲染进程交互部分

同学们可以私信我加入学习群! 正文开始 前言更新功能所有文章汇总一、监听页面渲染完毕1.1 myApi.handleCheckPcUpdate检查更新1.2myApi.onPcUpdateProgress接收下载信息1.3myApi.onPcDownloaded监听下载完毕事件 二、立即更新三、跳过更新四、打开更新模块总结 前言…

vtkConnectivityFilter提取连通区域中的问题

直接使用vtkConnectivityFilter提取连通区域&#xff0c;渲染上没问题&#xff0c;但是打印出polydata中的点数&#xff0c;发现跟原始数据是一致的。 for (int i 0; i < numRegions; i){vtkSmartPointer<vtkConnectivityFilter> connectivityFilter vtkSmartPointe…

Unknown input format pdf Pandoc can convert to PDF, but not from PDF.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

口碑好的可视耳勺:四款口碑超好产品种草分享

随着科技的进步&#xff0c;越来越多人使用可视耳勺&#xff0c;因为它能够清晰地看到耳道内的状况&#xff0c;从而实现更精准、更安全的清洁。 然而&#xff0c;如今可视耳勺市场产品参差不齐&#xff0c;产品的评价褒贬参半。有的产品声称有超高像素&#xff0c;可实际到手画…

谷歌25亿美金收购Character AI的幕后故事

在科技领域中&#xff0c;并购交易无疑是推动技术发展的重要手段之一。最近&#xff0c;谷歌以25亿美金的对价收购了Character AI&#xff0c;这一交易的方式和细节引起了广泛关注。本文将详细解析谷歌这一奇葩交易方式&#xff0c;探讨其背后的动机和影响。 一、交易背景 1.…

程序员短视频上瘾综合症

一、是你疯了还是面试官疯了&#xff1f; ​ 最近有两个学员咨询问题&#xff0c;把我给整得苦笑不得。大家来看看&#xff0c;你有没有同样的症状。 ​ 第一个学员说去一家公司面试&#xff0c;第一轮面试聊得挺好的。第二轮面试自我感觉良好&#xff0c;但是被面试官给Diss…

《计算机组成原理》(第3版)第3章 系统总线 复习笔记

第3章 系统总线 一、总线的基本概念 总线是连接多个部件的信息传输线&#xff0c;是各部件共享的传输介质&#xff0c;如图3-1所示。 图3-1 面向CPU的双总线结构框图 倘若将CPU、主存和I/O设备都挂到一组总线上&#xff0c;便形成单总线结构的计算机&#xff0c;如图3-2所示…

【Linux 驱动】IMX6ULL input驱动

1. input子系统介绍 input 子系统分为 input 驱动层、input 核心层、input 事件处理层&#xff0c;最终给用户空间提供可访问的设备节点。 驱动层&#xff1a;输入设备的具体驱动程序&#xff0c;比如按键驱动程序&#xff0c;向内核层报告输入内容核心层&#xff1a;承上启下…

OpenCV图像滤波(5)二维卷积滤波函数filter2D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::filter2D() 函数用于对图像应用二维卷积滤波器。这个函数可以用来实现多种图像处理操作&#xff0c;如模糊、锐化、边缘检测等。它通过将一个…

stm32应用、项目、调试

主要记录实际使用中的一些注意点。 1.LCD1602 电路图&#xff1a; 看手册&#xff1a;电源和背光可以使用5v或者3.3v&#xff0c;数据和控制引脚直接和单片机引脚连接即可。 单片机型号&#xff1a;stm32c031c6t6 可以直接使用推完输出连接D0--D7,RS,EN,RW引脚&#xff0c;3…

Linux--网络层IP

IP协议 IP协议&#xff0c;全称Internet Protocol&#xff08;互联网协议&#xff09;&#xff0c;是TCP/IP协议族中的核心协议之一&#xff0c;用于在互联网络上进行数据的传输。IP协议的主要功能是确保数据从一个网络节点&#xff08;如计算机、服务器、路由器等&#xff09…