网络编程
文章平均质量分 81
weijinqian0
这个作者很懒,什么都没留下…
展开
-
HTTP断点续传
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段。HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下: 1.客户端下载一个1024K的文件,已经下载了其中512K 2. 网络中断,客户端请求续传,因此需要在HTTP头中转载 2017-08-17 19:56:04 · 391 阅读 · 0 评论 -
linux 系统 ko模块编译
今天整理以前笔记,发现曾经里面有一个Makefile文件。 仔细一看是以前实习做linux内核程序设计时候写的模块makefile。刚好我电脑也有linux系统,就拿来回顾一下。写个my.c和一个Makefile文件,然后make编译一下,就成功了,生成my.ko 再加载一下insmod my.ko dmesg|grep module 看到模块初始化时候的打印卸载模转载 2016-05-23 16:35:30 · 1557 阅读 · 0 评论 -
.c文件如何编译为ko的MAKEFILE文件编写
首先需要知道:obj-m = *.oobj-y = *.o上面两者的区别在于,前者才会生成ko文件,后者只是代码编译进内核,并不生成ko文件。生成KO文件,分两种情况:单个.c文件和多个.c文件【以展讯7730 ANDROID4.4为例】1.单个.c文件kernel配置文件中定义CONFIG_RUNYEE_CAMVIB=m注意上面的m,表示作为一个模块进行编译,转载 2016-05-23 16:34:31 · 1414 阅读 · 0 评论 -
在hosted中添加代码用进程的方式获得终端的MAC地址
可以在accounting.c的文件中添加如下代码,实现管道void pipe1(u8 *addr){ //printf("weijinqian11111\n"); const char* pathname = "/home/weijinqian/hostapd-2.5/m_fifo"; int pipe_fd = -1; int i=0;原创 2016-05-23 15:00:19 · 320 阅读 · 0 评论 -
(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
转自http://blog.chinaunix.net/uid-23069658-id-3160506.html本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 能在CU上混的人绝非等闲之辈。因此,小弟这里说明一下:转载 2016-05-23 14:55:18 · 278 阅读 · 0 评论 -
Linux内核编程 <1> -- Hello Mod
1. hello mod#include #include #include static int __init hello_start(void){ printk("hello,this moudle start work!\n"); return 0; } static void __exit hello_exit(void){ print转载 2016-06-26 10:47:41 · 416 阅读 · 0 评论 -
(四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter
今天我们讨论一下防火墙的数据包过滤模块iptable_filter的设计原理及其实现方式。 内核中将filter模块被组织成了一个独立的模块,每个这样独立的模块中都有个类似的init()初始化函数。编写完该函数后,用module_init()宏调用初始化函数;同样当模块被卸载时调用module_exit()宏将该模块卸载掉,该宏主要调用模块的“析构”函数。这当中就牵扯到内核ko模块的一些转载 2016-05-22 21:22:08 · 396 阅读 · 0 评论 -
(三)洞悉linux下的Netfilter&iptables:内核中的rule,match和target
作为ipchains的后继者,iptables具有更加优越的特性,良好的可扩展功能、更高的安全性以及更加紧凑、工整、规范的代码风格。 在2.6的内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了):filter过滤表,nat地址转换表和mangle数据包修改表,每张表各司其职。我们对这三张表做一下简要说明: 1)、filt转载 2016-05-22 20:26:33 · 373 阅读 · 0 评论 -
netlink socket编程实例
关于Netlink IPC方式的介绍,请参见http://blog.chinaunix.net/space.php?uid=14753126&do=blog&id=2978566本文通过一个编程实例来更深入地了解netlink。功能描述:1. 本实例包含2个部分:内核模块和用户程序2.用户程序通过netlink socket建立与kernel module连接,并向kernel m转载 2016-06-04 16:40:32 · 3697 阅读 · 0 评论 -
(十五)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(上)
向Netfilter中注册自己的hook函数 数据包在协议栈中传递时会经过不同的HOOK点,而每个HOOK点上又被Netfilter预先注册了一系列hook回调函数,当每个清纯的数据包到达这些点后会被这些可恶hook函数轮番调戏一番。有时候我们就在想,只让系统自带的这些恶棍来快活,我自己能不能也make一个hook出来和它们同流合污呢?答案是肯定的。 我们来回顾一转载 2016-05-23 16:36:26 · 606 阅读 · 0 评论 -
(十六)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(下)
文章来源:http://blog.chinaunix.net/uid-23069658-id-3245853.html写文章的这个真大神,完美解决了我的所有问题。从用户空间来操作内核中Netfilter框架里自定义的HOOK函数 本文承上一篇博客。主要是和大家探讨一下如何从用户空间操作我已经注册到Netfilter中的自定义hook函数。有些童鞋可能就纳闷,难道ipta转载 2016-05-23 17:04:48 · 328 阅读 · 0 评论 -
教你修改以及重构skb
测试环境: CentOS5.3 2.6.18工具: sendip和wireshark sendip可以发送各种数据包,确实方便.wireshark图形化的显示对于分析整个数据包还是相当不错的...一:内核态基于Netfilter构造数据包主要有两种方式:1. alloc_skb申请一个skb结构体,然后根据实际的应用填充不同的成员,或者基转载 2016-06-05 15:36:51 · 4854 阅读 · 1 评论 -
Linux系统下配置双网卡路由表的配置
如果eth0为192.168.10.123/255.255.255.0,eth1为192.168.20.231/255.255.255.0,则命令格式如下:#route add -net 192.168.10.0 netmask 255.255.255.0 dev eth0#route add -net 192.168.20.0 netmask 255.255.255.0 dev转载 2016-11-10 12:47:42 · 1993 阅读 · 0 评论 -
Ubuntu14.04系统hostapd编译及使用
本文主要介绍在Ubuntu14.04系统环境中编译hostapd,以及其使用。我的需求是在linux上创建WIFI热点,最早接触的是ap-hostapd这个脚本,然后参考网络文章安装hostapd以及dnsmasq。对于ap-hostpad的使用,网络已经有大量文章,笔者也就不再写了。不过由于hostapd版本关系,有些功能可能不支持,或者某些功能没有被编译。于是就得自己手动编译hosta转载 2016-09-27 14:43:07 · 2089 阅读 · 0 评论 -
linux原始套接字(1)-arp请求与接收
以太网的arp数据包结构:arp结构op操作参数:1为请求,2为应答。常用的数据结构如下:1.物理地址结构位于netpacket/packet.hstruct sockaddr_ll{ unsigned short int sll_family; unsigned short int sll_protocol; int sl转载 2016-07-08 15:54:00 · 3052 阅读 · 0 评论 -
raw socket使用
转载地址:http://blog.163.com/tianle_han/blog/static/661782620094214229813/一、raw socket介绍 1、raw socket中文叫原始套接字,它和其他的套接字的不同之处在于它工作在网络层或数据链路层,而其他类型的套接字工作在传输层,只能进行传输层数据操作。 我们常使用rawsocket进行转载 2016-06-30 10:45:50 · 1555 阅读 · 1 评论 -
linux线程之间的通信
线程之间的通信:1、 互斥量用的api函数有:pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock、pthread_mutex_trylock示例://thread_mutex.cpp#include #include#include #include #include #includeu转载 2016-06-14 11:28:13 · 1569 阅读 · 0 评论 -
iovec结构体定义及使用
I/O向量(struct iovec)readv(2)与writev(2)函数都使用一个I/O向量的概念。这是由所包含的文件定义的:#include 头文件定义了struct iovc,其定义如下:struct iovec { ptr_t iov_base; /* Starting address */ size_t iov_len; /* Length i转载 2016-06-28 19:33:56 · 690 阅读 · 0 评论 -
Linux内核模块编译
Linux内核模块是一种可被动态加载和卸载的可执行程序。通过内核模块可以扩展内核功能,内核模块通常用于设备驱动、文件系统等。如果没有内核模块,需要向内核添加功能就需要自发代码、重新编译内核、安装新内核等步骤。内核空间中不止一个程序试图访问驱动程序模块,导致一个内核块在没有被调用完毕之前又被其他程序调用,这称之炒代码的重入。因此在设计驱动模块的数据结构时要考虑数据结构在多线程环境下不被其他线程破转载 2016-06-26 16:30:15 · 430 阅读 · 0 评论 -
关于NETLINK的变化在3.9版本以后
我用的版本号是 :3.13.0-24-generic在之前的版本中struct sock *netlink_kernel_create(struct net *net, int unit,unsigned int groups, void (*input)(struct sk_buff *s原创 2016-06-26 16:22:17 · 455 阅读 · 0 评论 -
netlink的使用
两年前看到这篇入门文章,这几天看书遇到netlink socket,就又读了一遍,顺便翻译了一篇放上来,对原文中例子代码的一些小问题进行了修改,如果译文有不清楚或者错误的地方,敬请指出!!顺带附上了原文地址,大家可以参考E文。另外,word文档打印成PDF也作为附件提供下载,方便大家离线阅读。===============================做了个简单的应用,整理成转载 2016-06-04 14:15:45 · 392 阅读 · 0 评论 -
C Language Examples of IPv4 and IPv6 Raw Sockets for Linux
C Language Examples of IPv4 and IPv6 Raw Sockets for LinuxI have recently been investigating raw socket programming in C for linux and I decided to provide a collection of routines I have prepared.转载 2016-06-25 16:12:35 · 729 阅读 · 0 评论 -
(二)洞悉linux下的Netfilter&iptables:内核中的ip_tables小觑
Netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块(ip_tables)正是通过把自己所编写的一些钩子函数注册到Netfilter所监控的五个关键点(NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP_LOCAL_OUT,NF_IP_POST_ROUTING)这种方式介入到对数据包的处理。这些钩子函数功能转载 2016-05-21 20:47:04 · 271 阅读 · 0 评论 -
Linux Netfilter实现机制和扩展技术
Linux Netfilter实现机制和扩展技术 杨沙洲 (pubb@163.net)国防科技大学计算机学院 简介: 本文从Linux网络协议栈中报文的流动过程分析开始,对Linux 2.4.x内核中最流行的防火墙构建平台Netfilter进行了深入分析,着重介绍了如何在Netfilter-iptables机制中进行应用扩展,并在文末给出了一个利用扩展Net转载 2016-05-24 16:41:30 · 2738 阅读 · 0 评论 -
iptables详解
一:前言防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。目前市面上比较常见的有3、4层的防火墙,叫网络层的防火墙,还有7层的防火墙,其实是代转载 2016-05-24 15:40:13 · 280 阅读 · 0 评论 -
Netfilter的使用和实现
本文主要内容:Netfilter的原理和实现浅析,以及示例模块。内核版本:2.6.37Author:zhangskd @ csdn blog 概述 Netfilter为多种网络协议(IPv4、IPv6、ARP等)各提供了一套钩子函数。在IPv4中定义了5个钩子函数,这些钩子函数在数据包流经协议栈的5个关键点被调用。这就像有5个钓鱼台,在每转载 2016-05-24 11:00:07 · 703 阅读 · 0 评论 -
树莓派设置静态IP地址遇到的问题
树莓派2B设置固定ipSSB4455 2016-02-20 12:41:57阅读数:153不要修改/etc/network/interfaces文件在/etc/dhcpcd.conf文件后面增加这里eth0代表板子上的RJ45口的地址这里要注意 ip地址要根据自己的子网掩码改 而且后面的"/24"也别落下(开始我觉得没用去转载 2016-04-10 14:54:11 · 15662 阅读 · 3 评论 -
IP地址的三种表示格式及在Socket编程中的应用
使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理。IP地址其实有三种不同的表示格式: 1)Ascii(网络点分字符串)- 2) 网络地址(32位无符号整形,网络字节序,大头) 3)主机地址 (主机字节序) IP地址是IP网络中数据传输的依据,它标识了IP网络中的一个连接,一台主机可以有多个IP地址,I转载 2016-03-24 10:11:54 · 458 阅读 · 0 评论 -
Linux下的进程间通信-详解
详细的讲述进程间通信在这里绝对是不可能的事情,而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步,所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品:《Advanced Programming in the UNIX Environment》,它的中文译本《UNIX环境高级编程》已有机械工业出版社出版,原文精彩,译文同样地道,如果你的确对在Linux下编转载 2016-02-23 14:29:07 · 331 阅读 · 0 评论 -
http和https的差别
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netsca转载 2016-03-15 21:43:20 · 347 阅读 · 0 评论 -
TCP和UDP的"保护消息边界" (经典)
在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。 对于UDP转载 2016-01-04 15:39:01 · 438 阅读 · 0 评论 -
dev_queue_xmi函数详解
不得不说,ChinaUnix里面的大神太多了。。。。。还没细看先记录下 前面在分析IPv6的数据流程时,当所有的信息都准备好了之后,例如,出口设备,下一跳的地址,以及链路层地址。就会调用dev.c文件中的dev_queue_xmin函数,该函数是设备驱动程序执行传输的接口。也就是所有的数据包在填充完成后,最终发送数据时,都会调用该函数。 Dev_queue_xmit函数转载 2016-05-24 20:26:48 · 3706 阅读 · 0 评论 -
使用dev_queue_xmit发送定制报文
使用dev_queue_xmit发送定制报文 本文档的Copyleft归necofang所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,严禁用于任何商业用途。msn : necofang@hotmail.com来源: necofang.cublog.cn 本文通过实例讲述如何使用dev_queue_xmit来直接发送udp和tcp报文。示例代码在l转载 2016-05-24 20:33:20 · 3041 阅读 · 0 评论 -
Linux内核态与用户态通信的常用方法
前言最近做的事情很多地方用到Linux驱动层与应用层的通信,在此总结下常见的并且在我工作中用到的通信方法。总结由于每种方法都可以找到大量的示例代码,同时还有详细的函数手册,我就不贴代码了。只列下相关的方法和一个链接。procfsnetlinksyscallIOCTLsyscall的范围就广了,通过注册字符设备可以使用mmap和ioctl等转载 2016-05-24 20:48:34 · 1728 阅读 · 0 评论 -
sk_buff结构
24.8 接收过程的实现接收函数一般由中断控制程序调用,负责把网络设备接收到的数据以一定格式提交给内核中的网络层模块。在具体介绍接收函数前先简单介绍一下sk_buff结构。24.8.1 sk_buff结构sk_buff是Linux网络协议栈中一个重要数据结构,网络协议栈中的各层协议都可以通过对它的操作实现本层协议数据的添加或者数据提取,这种机制避免了协议数据单元在不同的转载 2016-05-27 15:00:54 · 513 阅读 · 0 评论 -
协议的类型
#defineIPPROTO_IP0/*dummyforIP*/#defineIPPROTO_ICMP1/*controlmessageprotocol*/#defineIPPROTO_IGMP2/*internetgroupmanagementprotocol*/#defineIPPROTO_GGP3/*gateway^2(deprecated)*/#define原创 2016-05-26 21:26:43 · 349 阅读 · 0 评论 -
linux 消息队列实例
前言: 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg);参数: ke转载 2016-05-13 19:57:14 · 478 阅读 · 0 评论 -
sk_buff属性详解
第一部分:skb - Linux network buffersskb——Linux网络缓存Harald Welte laforge@gnumonks.org1.3, 2000/10/14 21:27:02 ---------------------------------------------------------------------Short descripti转载 2016-05-26 20:09:24 · 2975 阅读 · 0 评论 -
用户空间和内核空间通讯之【Netlink 中】
今天我们来动手演练一下Netlink的用法,看看它到底是如何实现用户-内核空间的数据通信的。我们依旧是在2.6.21的内核环境下进行开发。 在文件里包含了Netlink协议簇已经定义好的一些预定义协议:点击(此处)折叠或打开#define NETLINK_ROUTE 0 /* Routing/device hook转载 2016-05-25 16:20:10 · 237 阅读 · 0 评论 -
用户空间和内核空间通讯之【Netlink 上】
引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将其应用到高级路由子系统的基础框架里。自那时起,Netlink就成了Linux内核子系统和用户态的转载 2016-05-25 15:56:28 · 299 阅读 · 0 评论