12 2017 档案

摘要:进程间通信的方式: * 管道 * FIFO(命名管道) * 信号量 * 消息队列 * 共享内存 * socket 通常把一个进程的输出通过管道连接到另一个进程的输入。 Linux系统中的进程通信方式主要以下几种: 同一主机上的进程通信方式 * UNIX进程间通信方式: 包括管道(PIPE), 命名管 阅读全文
posted @ 2017-12-31 15:27 elewei 阅读(549) 评论(0) 推荐(0)
摘要:一、什么是线程? 线程是一个进程内部的一个控制序列。 当进程执行fork调用时,将创建出该进程的一份副本。这个新进程拥有自己的变量和自己的PID,它的时间调度也是独立的, 它的执行几乎完全独立于父进程。 当进程创建一个新线程时,新的执行线程将拥有自己的栈(因此也有自己的局部变量),便与它的创建者共享 阅读全文
posted @ 2017-12-30 23:11 elewei 阅读(588) 评论(0) 推荐(0)
摘要:carp 模块源代码文件 CARP包头结构 模块加载时执行 CARP 关键数据结构 CARP配置数据结构 CARP 模块操作IOCTL提供接口 函数主要流程: 第一步:copyin 函数将用户态配置数据复制到 carpr 中 [copyin(ifr->ifr_data, &carpr, sizeof 阅读全文
posted @ 2017-12-27 17:32 elewei
摘要:参考资料: http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/ rfc 826 ARP 分成三个部分: * 输出模块 * 输入模块 * 高速缓存管理程序: 轮循表项,删除已经过期的表项。 设计原则: * 单一的ARP高速缓存 阅读全文
posted @ 2017-12-26 16:45 elewei 阅读(646) 评论(0) 推荐(0)
摘要:makefile main函数流程 nsh.c commands.c 接口模块 ip 模块 阅读全文
posted @ 2017-12-26 12:26 elewei 阅读(430) 评论(0) 推荐(0)
摘要:一、总体流程与代码流程 总体流程如下 解释: 一、接收数据流程 使用中断网络唤醒网络设备 设备测试链路状态 收到链路包(Ethernet) 为数据包分配内存 将数据包载入已分配的内存空间 将数据包载入backlog队列 设置标志字段 释放当前进程的控制权 dev_queue_xmit() - net 阅读全文
posted @ 2017-12-26 11:12 elewei 阅读(588) 评论(0) 推荐(0)
摘要:一、路由表的数据结构 Linux 支持最多252张路由表。 255 表示 local 表, 254 表示 main 路由表。 以上代码表示使用一个数组来表示255个路由表,每个数组指针指向一个路由表。 二、路由表的查找 阅读全文
posted @ 2017-12-26 10:24 elewei 阅读(952) 评论(0) 推荐(0)
摘要:RFC 768 netinet/udp.h netinet/udp_var.h netinet/udp_usrreq.c UDP 报文首部 include/uapi/linux/udp.h 16位的长度表示 UDP 数据首部长度与UDP数据长度。 udp初始化函数 udp_init udp_usrr 阅读全文
posted @ 2017-12-25 23:18 elewei 阅读(578) 评论(0) 推荐(0)
摘要:TCP 定义在 RFC 793 , updat 1122, 3168, 6093, 6528 管理连接 && 收发数据 TCP 提供 可靠的、 流量控制的、 端到端 的数据流服务。 可靠的 实现方式: 1. TCP 将数据分成不同的segment 2. TCP 使用定时器来控制时间 3. TCP 始 阅读全文
posted @ 2017-12-25 15:43 elewei 阅读(1386) 评论(0) 推荐(0)
摘要:一、命令模式: ip [ OPTIONS ] OBJECT [ COMMAND [ ARGUMENTS ]] 选项不变 OBJECT 对象为 addr 缩写形式: address, addr, a 参数: add, delete, flush, show (list) 1. 查看当前IP地址 命令简 阅读全文
posted @ 2017-12-25 11:51 elewei 阅读(1143) 评论(0) 推荐(0)
摘要:参考文档: https://www.linuxjournal.com/article/7356 Linux Journey: Why and how to use Netlink socket https://www.linuxjournal.com/article/8498?page=0,1 用户 阅读全文
posted @ 2017-12-24 09:56 elewei 阅读(3963) 评论(0) 推荐(0)
摘要:参考文档 https://en.wikipedia.org/wiki/Iproute2 https://en.wikipedia.org/wiki/Netlink 查看Makefile make后输出 ip.c 文件主要流程 初始化函数 rtnl_open(&rth, 0) 第一个参数 rth 的地 阅读全文
posted @ 2017-12-23 20:41 elewei 阅读(4967) 评论(0) 推荐(0)
摘要:第一步:下载源码包 第二步:下载Berkly DB 第三步:安装libselinux 第四步:安装 libelf 第五步:安装libmnl 第六步:安装latex yum install texlive-latex-bin.noarch yum install linuxdoc-tools.x86_ 阅读全文
posted @ 2017-12-23 12:36 elewei 阅读(3471) 评论(0) 推荐(0)
摘要:一、基本概念 <include/linux/netdevice.h> net_device 数据结构存储着特定网络设备的所有信息。 网络设备驱动程序必须依靠这个数据结构。 该结构分成以下几段: * 配置( net_device_ops ) * 统计数据 () * 设备状态(flags) * 列表管理 阅读全文
posted @ 2017-12-22 16:07 elewei 阅读(1168) 评论(0) 推荐(0)
摘要:一、基本概念 <inlcude/linux/skbuff.h> sk_buff 是一个双向链表,还外加一个sk_buff_head 的数据结构 所有网络分层使用这个数据结构 <include/linux/skbuff.h> 头文件中 当一个数据包到达线路后,网络驱动程序会分配这个SKB,通过netd 阅读全文
posted @ 2017-12-22 15:33 elewei 阅读(757) 评论(0) 推荐(1)
摘要:1. TCP/IP基础 序号 说明 链接 1 ARP 实现 http://www.cnblogs.com/elewei/p/8118803.html 2 套接字地址结构 http://www.cnblogs.com/elewei/p/4765749.html 3 TCP 套接字接口 http://w 阅读全文
posted @ 2017-12-21 12:07 elewei
摘要:一、线性结构 1. 线性表(顺序实现)http://www.cnblogs.com/elewei/p/5621833.html 2. 线性表(链表实现)http://www.cnblogs.com/elewei/p/5621833.html 3. 栈(链式实现) http://www.cnblogs 阅读全文
posted @ 2017-12-21 12:06 elewei
摘要:第一步: 设计界面 第二步: 阅读全文
posted @ 2017-12-20 14:12 elewei 阅读(216) 评论(0) 推荐(0)
摘要:第一步:看编译源代码文件 Makefile 用户程序 ipsec-tools 阅读全文
posted @ 2017-12-20 12:16 elewei 阅读(206) 评论(0) 推荐(0)
摘要:<sys/net/if_var.h> struct ifnet {}; 这个结构包含所有接口的通用信息。 它是一个链表 FreeBSD 提供以下几个方法来管理 ifnet 结构 网络接口链路结构 <sys/net/if_media.h> struct ifmedia {}; 阅读全文
posted @ 2017-12-20 12:16 elewei
摘要:mbuf 主要用来保存 在进程和网络接口间互相传递的用户数据。 sys/mbuf.h mbuf 结构、mbuf 宏定义 kern/uipc_mbuf.c mbuf 函数 阅读全文
posted @ 2017-12-20 12:16 elewei
摘要:http://www.linuxjournal.com/article/7184 http://www.paulkiddie.com/2009/10/creating-a-simple-hello-world-netfilter-module/ http://www.cis.syr.edu/~wed 阅读全文
posted @ 2017-12-20 11:48 elewei
摘要:参考文档: GNU Make Manual https://www.gnu.org/software/make/manual/make.html 《跟我一起写makefile》 《GNU make》 GNU make 有哪些功能? GNU make 如何使用? 包括了make的规则、变量、函数以及脚 阅读全文
posted @ 2017-12-20 10:08 elewei 阅读(487) 评论(0) 推荐(0)
摘要:参考目录: Linux 内核设计与实现 第13章 虚拟文件系统 Linux 程序设计与实现 第3章 文件操作 内核文件系统主要数据结构: * 超级块对象 super_block,代表一个具体的已安装文件系统 * 索引结点对象 inode,代表一个具体文件 * 文件对象 file,代表由进程打开的文件 阅读全文
posted @ 2017-12-19 23:29 elewei