内核级——框架Netfilter基于网络层对数据包进行深度检查，允许或拒绝数据包通过用户态——规则iptables/nftables基于网络层和传输层（跟踪tcp连接状态），根据连接状态来允许或拒绝数据包iptables -L iptables -A INPUT -p tcp --dport [端口号] -j ACCEPT 前端——工具管理ufw/firewalld基于应用层工作，常用于http、ftp等代理服务ufw status ufw allow [端口号]/tcp
不同层面的编程1、裸机编程，如51、STM32单片机2、驱动程序开发，基于内核驱动框架针对底层硬件操作逻辑的驱动程序，如嵌入式开发3、应用编程，使用编程语言的标准函数库调用用户态的函数库间接调用内核态代码GNU/Linux1、用户态，glibc、Shell、gcc、gnome、核心工具2、内核态，进程管理、内存管理、文件系统、驱动、网络栈系统调用API：glibc库函数1、调用过程：编程语言接口➡库函数➡软中断内核程序如：创建进程fork()➡sys_fork()；打开文件fopen➡open()，读文件fread()➡read()；输出printf()➡write()2、也存在不参与系统调用的库函数，如strlen()、memset()3、编程语言接口功能上可以看成封装程度更高的系统调用API，它们之间不存在一一映射关系深入了解系统调用API：探索操作系统底层的关键接口 - 玩转Linux内核的文章 - 知乎