Linux
文章平均质量分 69
divlee130
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
用户空间与内核空间通讯接口之sysctl
概述Sysctl是一种用户应用来设置和获得运行时内核的配置参数的一种有效方式,通过这种方式,用户应用可以在内核运行的任何时刻来改变内核的配置参数,也可以在任何时候获得内核的配置参数。通常,内核的这些配置参数也出现在proc文件系统的/proc/sys 目录下,用户应用可以直接通过这个目录下的文件来实现内核配置的读写操作。使用register_sysctl_table方式实现内核数据交互。数据结构/原创 2015-06-28 13:11:29 · 815 阅读 · 0 评论 -
接口层输出
概述每个CPU有一个单独的softnet_data实例,用来存储与网络中断处理相关的报文输出和输出队列。在输出过程中会用到softnet_data中的output_queue和completion_queue队列。/* * Incoming packets are placed on per-cpu queues so that * no locking is needed. */struc原创 2015-11-01 22:11:02 · 592 阅读 · 0 评论 -
接口层输入
NAPI和非NAPI的区别NAPI使用中断+轮询的方式,中断产生之后暂时关闭中断然后轮询接收完所有的数据包,接着再开中断。而非NAPI采用纯粹中断的方式,一个中断接收一个数据包NAPI都有自己的struct napi结构,非NAPI没有NAPI有自己的poll函数,而且接收数据都是在软中断调用poll函数时做的,而非NAPI使用公共的process_backlog函数作为其poll函数,接收数原创 2015-11-01 20:35:32 · 765 阅读 · 0 评论 -
linux 套接口缓存
概述Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。套接字缓存 skb由两部分组成: (1) 报文数据:它保存了实际在网络中传输的数据; (2) 管理数据:供内核处理报文的额外数据,这些数据构成了协议之间交换的控制信息。当应用程序向一个socket传输数据之后,该socket将创建相应的套接字缓存,原创 2015-11-01 19:04:50 · 653 阅读 · 0 评论 -
用户空间与内核空间通讯接口之procfs
概述procfs是比较老的一种用户态与内核态的数据交换方式,内核的很多数据都是通过这种方式出口给用户的,内核的很多参数也是通过这种方式来让用户方便设置的。除了sysctl出口到/proc下的参数,procfs提供的大部分内核参数是只读的。创建实例struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct原创 2015-11-01 13:45:08 · 840 阅读 · 0 评论 -
网络体系概述
协议栈模型链路层:设备驱动程序 物理层:网络介质,串口联路。 网络层:接受发送转发报文。 传输层:数据传输、数据控制、端端数据控制。 应用层:具体业务,如HTTP.SMTP协议栈层次结构系统调用接口 套接口 传输层 网络层 邻居子系统 网络设备接口 驱动套接口通过网络协议栈通信都需要通过套接口操作,套接口层是协议无关接口,他提供一些接口支持各种协议。Linux中用socket 结原创 2015-11-01 16:57:10 · 651 阅读 · 0 评论 -
一款简单易用的 DNS 发包工具
#include <stdio.h>#include <string.h>#include <netinet/in.h>#include <netdb.h>#include <sys/time.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>#include <signal.h>#include <pthr原创 2015-10-17 22:08:11 · 3962 阅读 · 0 评论 -
centeros 下安装crash kdump
linux内核发送崩溃时,kdump会生成一个内核转储文件vmcore。 可以通过分析vmcore分析出内核崩溃的原因。 crash是一个被广泛应用的内核奔溃转储文件分析工具。 使用crash调试内核转储文件,需要安装crash工具和内核调试工具kernel-debuginfo。安装、配置、启动kdump安装kdump: yum search kexec-tools yum i原创 2015-11-13 13:23:09 · 1756 阅读 · 0 评论 -
tcp 客户、服务器程序示例
1)client 从标准输入读入一行文本,并写给服务器。 2)服务器从网络输入读入这行文本,并回射给客户。 3)客户从网络输入读入这行回射的文本,显示在标准输出上标准输入—–fgets—-> tcp 客户—write——————-read–>tcp 服务器标准输出<—-fputs—–tcp 客户<—read——————-write—tcp 服务器client 代码#include <stdio.原创 2015-10-11 16:18:41 · 502 阅读 · 0 评论 -
预先创建线程池的服务器程序
1) 定义存放已连接套接字描述符共享数组 2)创建线程池 3)等待用户连接 4)等待为之服务的客户描述符#include <time.h>#include <sys/types.h> /* See NOTES */#include <sys/socket.h>#include <string.h>#include <unistd.h>#include <stdio.原创 2015-10-18 12:47:40 · 524 阅读 · 0 评论 -
利用crash 分析软死锁问题
软死锁问题定位分析。 现象:服务器软死锁,增量数据无法下发。一直报cpu soft lockup1.通过kxfr日志确认出问题出现的地方 通过对服务器分析可以看到出现问题的地方都是下发配置kxfr_id=2202438的地方由此大概定位出问题的域名。2.进一步分析机器内核信息可以看到如下kxfr_add_rdset流程出了问题。 按理说简单的遍历比较不会出问题。这里怎么会有问题呢。没有思路看原创 2015-08-20 13:30:06 · 2979 阅读 · 1 评论 -
linux 防火墙配置规则
基础知识Linux系统内核内建了netfilter防火墙机制。Netfilter(数据包过滤机制),所谓的数据包过滤,就是分析进入主机的网络数据包,将数据包的头部数据提取出来进行分析,以决该连接为放行或阻挡的机制。Netfilter提供了iptables这个程序来作为防火墙数据包过滤的命令。Netfilter是内建的,效率非常高。我们可以通过iptables命令来设置netfilter的过滤机制。i原创 2015-08-27 09:49:53 · 5994 阅读 · 0 评论 -
linux 内存管理基本框架
概述linux 内核机制采用3层映射机制,逻辑上把32位线性地址划分4个段,各段占有若干位,依次为PGD(全局页面目录),PMD(中间页面目录),PT(页表),以及物理页的偏移。基地址->PGD->PMD->PT->OFFSET->物理页面中相应的地址进程虚拟空间32位地址代表4G的地址空间,Linux将这4G地址空间划分为2个部分,最高的1G(0xC000000-0XFFFFFFFF)用于内核本身原创 2015-08-09 22:26:18 · 1065 阅读 · 0 评论 -
多线程多进程
多进程#include <stdio.h>#include <stdlib.h>#include <sys/types.h>#include <unistd.h>int main(){ pid_t child_pid; /* 创建一个子进程 */ child_pid = fork(); if(child_pid == 0) { sleep原创 2015-07-14 07:19:23 · 613 阅读 · 0 评论 -
setsockopt 总结
setsockopt设置socket状态 1.closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL));如果原创 2015-12-30 09:02:55 · 988 阅读 · 0 评论
分享