2019-09-26 19:32
⁄ 工业·编程
⁄ 共 12722字
一 概述
iptables 其实不是真正的防火墙,我们可以把它理解为一个客户端代理,用户通过iptables 这个代理,将用户的安全设置执行到对应的“安全框架”中,这个安全框架才是真正的防火墙。这个框架的名称叫做netfilter 。
二 五链表(hook)
iptables 工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。而放入内核的地方必须要是特定的位置,...
iptables, netfilter, 防火墙阅读全文
2019-09-25 18:52
⁄ 工业·编程
⁄ 共 11203字
一 概述
前篇已经讲述了接收实现,而对于libpcap抓包的重要工具,本身其实也集成了packet_mmap抓包方式。那么既然可以用于捕获抓包。packet_mmap可以实现发送抓包吗?答案当然是肯定的。不过网上对于packet_mmap发送介绍少之又少。接下来会讲解packet_mmap发送数据包遇到的问题。
二 使用
packet_mmap原理跟接收原理一致,就不过重复讲述。唯一区别前篇原理中提到的状态标识,发送的状态标识跟接收的标识不一样。这后面会细说。...
Libpcap, tcpdump阅读全文
2019-09-24 18:42
⁄ 工业·编程
⁄ 共 8061字
一 概述
· 前篇了解了libpcap库如何实现抓包
· 中篇深入内核底层讲述了抓包的原理
· 后篇自己实现过抓包过程
上述篇章中讲述的只是原始的抓包流程。
原始的抓包流程?简单的说就是创建socket,设置bpf后,每次接收数据包都要调用recvfrom系统调用。而每次调用recvfrom内核底层抓到的数据包都需要用内核copy到用户。不管是系统调用,还是copy都是相当耗cpu性能的。而linux内核提供了一种更高效的抓包方式packet_mmap.
二 packet_m...
Libpcap, tcpdump阅读全文
2019-09-23 18:28
⁄ 工业·编程
⁄ 共 23021字
一 概述
在了解了tcpdump的原理后,你有没有想过自己去实现抓包过滤? 可能你脑子里有个大概的思路,但是知道了理论知识,其实并不能代表你完全的理解。只要运用后,你才知道哪些点需要注意,之前没有考虑到的。
二 如何实现抓包过滤
在写代码前,先捋下思路,和相应的理论知识。
libpcap 库中实现抓包关键代码
sock_fd = cooked ?
socket(PF_PACKET, SOCK_DGRAM, protocol) :
socket(PF_PACKET, SOCK_RAW, protocol);
libpcap...
Libpcap, tcpdump阅读全文
2019-09-22 18:22
⁄ 工业·编程
⁄ 共 8503字
一 概述
前篇通过libpcap分析,可以很清楚的发现其实用户层调用了三个系统调用,就实现了将内核网卡抓的包,返回给用户层。
· 1.创建一个socket ; sock_fd = cooked ?socket(PF_PACKET, SOCK_DGRAM, protocol) :socket(PF_PACKET, SOCK_RAW, protocol);
· 2 设置bpf 规则,使得规则在内核返回给用户的包就已经经过bpf过滤。
· 3 recvfrom 接收抓到的数据包
而对于内核做了那些呢?
· 链路层网口抓的包,是如何给到对应的socket...
Libpcap, tcpdump阅读全文
2019-09-21 18:13
⁄ 工业·编程
⁄ 共 14069字
一 概述
用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 至于tcpdump参数如何使用,这不是本章讨论的重点。
liunx系统抓包工具,毫无疑问就是tcpdump。而windows的抓包工具,wireshark也是一款主流的抓包工具。wireshark 使用了winpcap库。tcpdump 基于 libpcap库。而winpcap库是类似于linux下的libpcap。 因此本文着重探讨libpcap库的原理。
二 libp...
Libpcap, tcpdump阅读全文
2019-09-20 18:02
⁄ 工业·编程
⁄ 共 5214字
一 概述
传统的应用编写时,每添加一个模块,都需要在main中添加新模块的初始化。也就是说增加的一个不能算是真正的独立模块,得在main中修改代码才能集成这模块功能。有没有什么办法可以实现main跟其他模块之间隔离呢?main不再关心有什么模块,模块的删减也不需要修改main?
二 liunx内核模块初始化
如果你对liunx模块有一定了解,你应该知道liunx模块都是独立加载,加载模块,不需要修改main代码。甚至不需要重新编译代码。...
linux编程, 内核阅读全文
2019-09-18 17:40
⁄ 工业·编程
⁄ 共 2744字
一 iptables简介
iptables,可以将规则组成一个列表,实现绝对详细的访问控制功能工作在用户空间中,定义规则的工具,本身并不算是防火墙。它们定义的规则,可以让在内核空间当中的netfilter来读取,并且实现让防火墙工作。 而放入内核的地方必须要是特定的位置,必须是tcp/ip的协议栈经过的地方。而这个tcp/ip协议栈必须经过的地方,可以实现读取规则的地方就叫做 netfilter.(网络过滤器)
当主机收到一个数据包后,数据...
ipset, iptables, 防火墙阅读全文
2019-09-17 16:13
⁄ 工业·编程
⁄ 共 891字
Restbed 框架为 C++11 构建的程序带来了 restful 功能,它基于 boost.asio 创建。
Restbed 可用于需要通过 HTTP 无缝和安全通信构建应用程序的全面和一致的编程模型,能够对一系列业务流程进行建模,旨在针对移动,平板电脑,桌面和嵌入式生产环境。
它类似于将 NGINX 嵌入到您公司自己的产品线中。
restbed 实现http 客户端
#include <memory> #include <future> #include <cstdio> #in...
REST, Restbed, 开源阅读全文
2019-09-16 14:43
⁄ 工业·编程
⁄ 共 9333字
一个 RESTful API 框架需要什么?
从应用程序开发的角度来看,RESTful API 的本质是一个 Web Application,而 RESTful API 框架就是实现这个 Web Application 所封装的一些列工具库,使开发者可以忽略底层实现的复杂度,专注以自身 Application 的逻辑设计。
一个 RESTful API 框架应该具备以下几个元素:
· Resources:资源的定义,即 HTTP URI(或称之为 HTTP URL Path)的定义。RESTful API 的设计围绕着 Resource 进行建模...
go-restful, REST, 开源阅读全文