我的学生问我的问题,向各位大侠求助。 (200分)

  • 主题发起人 主题发起人 ontheway
  • 开始时间 开始时间
O

ontheway

Unregistered / Unconfirmed
GUEST, unregistred user!

一个学生问我的问题,我无法解答,非常汗颜[:(!]。
当监测到一个网络连接的时候,
1)能不能判断这个连接是从本机连向外面的,还是从外面连向本机的?
2)能不能判断是哪个软件使用了这个连接
3)能不能禁止这个连接(或者说我能不能禁止某一个端口和某一个IP地址)
用Delphi来实现上面的功能是否非常复杂?
我学浅年高.向各位大侠求助。
 
我想,这个问题无法在WINDOWS下的应用程序层面找到答案。而是非要深入底层编程不可,也就是编写驱动程序。
在IP协议栈上,1、要判断一个连接来自何方(内/外)是非常容易的事情;2、通过WIN函数的调用,也可以知道
使用该连接的进程信息,如:进程名称等;3、当然,可以通过简单的丢弃,来禁止该连接;
其实,这些都是基于主机的防火墙软件的基本功能。
仅供参考。
 
问题的关键是:你是怎样“监测”到的?
 
呵呵
我不懂,我关注!
但是你所说的功能“天网防火墙”可以实现!
研究一下吧!
 
怎么解决呢?
 
写网络驱动程序。
 
解析这个数据包
察看报头看看他的起至ip
 
要做到你所说的,首先必需写个类似防火墙的底层程序。其实你所说的这些功能,防火墙都
能做到1和3,绿盟的GREEN GUARD防火墙还能区分连接在一个端口上的进程有哪些:)
个人的意见如下:
1、判断一个连接,如果这个连接是TCP/IP的话,可以通过IP头的SOURCE和DEST IP来判断;
3、通过禁止指定协议和端口是可以做到的(因为有些协议不是从端口进来的,比如IGMP、ICMP)
2就不清楚了。。。
 
如果只要(1)(2)的话,我想可能不用编写网络驱动。
 
第一个问题我知道原理,从ip头上看的出来,tcpip祥解一书里有讲到
 
理论上都是可以的,至少微软能做到。:)
但用Delphi实现,确实困难,如果你的学生想做,劝他不要浪费时间,因为太难。
 

Similar threads

后退
顶部