首页 > 系统相关 >三、Linux系统收发网络包

三、Linux系统收发网络包

时间:2024-05-30 10:10:41浏览次数:25  
标签:中断 网络协议 网络 网卡 收发 Linux 网络接口

学习自[小林coding]学习自小林coding仅用来学习。

网络模型

OSI网络模型:开放式系统互联通信参考模型

使得多种设备能通过网络相互通信,和为了解决各种不同设备在网络互联中的兼容性问题。

TCP/IP模型更为常见。

image

  • 应用层:负责向用户提供一组应用程序,如HTTP\DNS\FTP
  • 传输层:负责端到端的通信,如TCP\UDP
  • 网络层:负责网络包的封装、分片、路由、转发,如IP\ICMP
  • 网络接口层:负责网络包在物理网络中的传输,如网络包的封帧、MAC寻址、差错检测、网卡传输网络帧

Linux网络协议栈

应用数据在每一层的封装格式:

image

Linux网络协议栈

image
image

  • 应用层需要通过系统调用来跟Socket层进行数据交互;
  • Socket层的下面分别是传输层、网络层、网络接口层
  • 随后是网卡驱动程序和硬件网卡设备

Linux接收网络包

image
1. 网卡:通过DMA 技术,将网络包写入指定的内存地址(Ring Buffer)
2.向CPU发起硬件中断:Linux系统中引入了NAPI机制,它是混合「中断和轮询」的方式来接收网络包,它的核心概念就是不采用中断的方式读取数据,而是首先采用中断唤醒数据接收的服务程序,然后 poll 的方法来轮询数据。
3.发起软中断:
内核中的 ksoftirqd 线程专门负责软中断的处理,当 ksoftirqd 内核线程收到软中断后,就会来轮询处理数据。

ksoftirqd 线程会从 Ring Buffer 中获取一个数据帧,用 sk_buff 表示,从而可以作为一个网络包交给网络协议栈进行逐层处理。
4.进入网络协议栈:网络接口层--网络层--传输层--应用层
image

Linux发送网络包

image

标签:中断,网络协议,网络,网卡,收发,Linux,网络接口
From: https://www.cnblogs.com/cassie-xiong/p/18221830

相关文章

  • Red Hat Enterprise Linux (RHEL) 8.10 发布 - 红帽企业 Linux 8 完美终结版
    RedHatEnterpriseLinux(RHEL)8.10(x86_64,aarch64)-红帽企业Linux红帽企业Linux8完美终结版请访问原文链接:RedHatEnterpriseLinux(RHEL)8.10(x86_64,aarch64)-红帽企业Linux,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org2024年5月......
  • Qt window和Linux通过进程名称判断是否有进程存在
    boolCommFunction::isProcessRunning(constQString&processName){QProcessprocess;#ifdefWIN32process.start("tasklist",QStringList()<<"/FI"<<"IMAGENAMEeq"+processName);process.waitForF......
  • 在联网linux中编译nginx源码迁移到离线linux使用指南
    nginx没有预先编译好的npm包,通常需要通过编译源代码得到执行文件,下面介绍如何操作:1.找一台联网的linux服务器,安装必要的编译工具和依赖项sudoyumgroupinstall"DevelopmentTools"sudoyuminstallpcre-develzlib-developenssl-devel2.下载nginx源代码包wgethttp:/......
  • 在Linux中,如何进行安全审计?
    在Linux中进行安全审计是一个涉及多个步骤和工具的过程,以下是一个详细的指导,按照不同方面进行了分点表示和归纳:1.强化系统配置关闭无关的服务和端口:通过禁用不必要的服务和端口来减少攻击面。禁止不必要的服务:确保只有需要的服务在运行,减少潜在的安全风险。限制用户权限:通过......
  • 在Linux中,如何进行Web服务器调优?
    在Linux中进行Web服务器调优主要涉及以下几个方面:选择合适的Web服务器软件、配置Web服务器设置、优化网络和硬件资源、以及确保安全性。以下是一些针对常见Web服务器软件(如Apache和Nginx)的调优步骤:1.对Apache进行调优安装Apache:sudoapt-getupdatesudoapt-getinstalla......
  • 在Linux中,如何进行数据库调优?
    在Linux中进行数据库调优是一个复杂但重要的过程,它涉及到硬件、数据库配置、查询优化等多个方面。以下是一个详细的指导,按照不同方面进行了分点表示和归纳:1.硬件优化磁盘:使用SSD(固态硬盘)替代HDD(机械硬盘),以提高I/O性能。将数据库文件和日志文件放置在不同的物理磁盘上,以避免......
  • vscode+gdb调试linux
    编译内核 makemeauconfig 后:Kernelhacking--->Compile-timechecksandcompileroptions--->[*]Compilethekernelwithdebuginfo[*]ProvideGDBscriptsforkerneldebugging [*]KerneldebuggingProcessortypeandfeature......
  • 在Linux中,如何进行性能审计?
    在Linux中进行性能审计主要涉及监控和分析系统的各项性能指标,以确保系统运行效率、识别瓶颈并进行必要的优化。这包括但不限于CPU使用率、内存使用情况、磁盘I/O、网络流量等关键性能指标。以下是一些基本步骤和工具,用于进行Linux系统的性能审计:1.使用内置命令进行快速检查top......
  • Linux顶层 Makefile 详解
    makefile分析:分析linuxmakefile文件时候我们需要在vscode下设置屏蔽下不用的文件夹。具体来说可以先建立一个.vscode文件夹和setting.json。具体内容为:{"search.exclude":{"**/node_modules":true,"**/bower_components":true,"**/*.o":true,"**/*......
  • 在Linux中,如何进行SSH服务配置?
    在Linux中配置SSH(SecureShell)服务,通常涉及安装SSH服务器软件(OpenSSH是最常见的选择)、修改配置文件以符合特定需求、管理密钥对以及确保服务的安全性。下面是详细的步骤指南:1.安装OpenSSH服务器大多数Linux发行版已经预装了OpenSSH服务器(sshd),但如果没有,可以通过包管理器安装。......