- 论坛徽章:
- 3
|
原帖由 piaobo79 于 2008-7-3 17:10 发表 ![]()
请问conntrack 是按照什么来track的呢? 如果是的话就不管用了。因为saddr,sport和daddr都可能会变,只有dport,也就是本地的端口才不会变。可是fork出来的连接dport是一样的。
daddr也可能变?那ip都变了怎么能到达你的服务器(也就是你的机子)?saddr,sport变是可以理解的,netfilter在内核里面,确切的说是IP层,还没有到你考虑fork的时候。一条conntrack包含(saddr,sport,daddr,dport,protocol(TCP or UDP)),如果你的mobile device的数据报能到达你的服务端,而且服务不中断,那必须属于一条有效conntrack,必须由数据报内容来协商后续通信的ip地址及端口,建立一条expect 连接(期望的连接),这样,后续的通信才能通过netfilter到达你提供的服务。如果如你所说的,“saddr,sport和daddr都可能会变”,那没办法分辨连接了。
有些参数是变的,而有些是不会变的,通过不变的来处理变化的,这是ip conntrack及expect里面实现的功能,sip,h323的实现都是包括多条连接的,其中包括控制连接,数据连接等等,你这个也可以援引这种方式,当ip发生变化时,意味着上一条连接已经失效了,新的ip协商将建立一条新的连接,就保证了服务的连续性了。
[ 本帖最后由 dreamice 于 2008-7-3 20:48 编辑 ] |
|