发布网友 发布时间:2024-10-23 23:01
共1个回答
热心网友 时间:2024-11-04 11:29
iptables的原理就是一个配置工具,将规则通过系统调用下发给内核。
我估计你想问内核里的netfilter的原理吧,netfilter的原理就是处理流经内核协议栈的报文,根据报文的ip头,tcp头或者协议头后的数据等信息和iptables下发到内核里的过滤规则进行匹配,匹配到了就执行规则的动作:丢包或通过。
内核的协议栈的功能就是将报文从链路层开始解析,直到应用层,将解析后的信息通过内核里的sk_buff这个结构体保存。解析报文的过程是不改变报文里的内容的,解析的过程就是按照协议格式,将各个协议头指针付给sk_buff定义的指针,所以不存在检查后再重新封装的问题。
string的实现原理我没具体看过,但我想原理就是这样:用指向报文内容的指针去和特定的字符串进行匹配,犹如strstr(string, packet_data)这个过程,在报文内容里匹配特定的字符串,找到了,就说明这个报文符合string定义的特征了,就可以执行对应规则的动作了。