认证与访问控制(08-01-08)

<script language="JavaScript" type="text/javascript"> </script> href="/ftai/css/item/1ecbfbfa004c91deb48f319f.css" type="text/css" rel="stylesheet" /> href="/space.css" type="text/css" rel="stylesheet" />
<script type="text/javascript"> var myref = encodeURI("http://hi.baidu.com/ftai/blog/category/%D2%BB%2C%B7%C3%CE%CA%BF%D8%D6%C6%D3%EB%C8%CF%D6%A4%2Cids%2C%CB%B6%CA%BF%BF%CE%CC%E2");</script> ftai08 | 我的消息(0/28)  <script type="text/javascript">var spaceurl="/ftai";if(spaceurl!="//index.html"){document.write("| 我的空间")}</script> | 我的空间 | 百度首页 | 百度空间 <script language="JavaScript" type="text/javascript"> document.write(" | 退出"); </script> | 退出
<script type="text/javascript"> var objmain = document.getElementById("main"); function updatesize(){ var bodyw = window.document.body.offsetWidth; if(bodyw <= 790) objmain.style.width="772px"; else if(bodyw >= 1016) objmain.style.width="996px"; else objmain.style.width="100%"; } updatesize(); window.onresize = updatesize; </script>
 
文章列表
 
您正在查看 "一,访问控制与认证,ids,硕士课题" 分类下的文章

2008-01-09 05:39

一、IDS的仔细划分

二、即使是基于规则的,也可划分出许多种种类,许多种子类

三、为什么要划分出许多种子类?现在的IDS还不够复杂吗?

四、如何在硕士课题中把基于产生式规则的认证、访问控制、IDS结合起来?

五、三者之间的关系

六、《基于层次产生式规则提取的访问控制和IDS系统研究》?

七、

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="5215a186c2a64e3a66096ef6"+"_"; </script> | 评论(0) | 浏览(1) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2008-01-06 21:02

http://hi.baidu.com/ftai/blog/item/2b0efb1fd7d30808314e15a3.html

一、按道理,是应该采用DDK技术。直接在PC机上对网卡进行TCP/IP的编程。

或者,也可设计嵌入式系统,其中有如8139的网络接口芯片,协议编程。但仿真工具要到实验室去弄,跑ARM程序的仿真器价格似乎不贵。电路,包括模拟和数字电路,要自己设计。

嵌入式CPU考虑ARM7/9系列。

另外,TCP/IP协议资料要完备。

这样,对网络编程,有从硬件层到应用层的处理过程。

怎样才算基本调通?是在PC机的WINDOWS上看到数据吗?如调试串口时,以前使用超级终端。串口相对简单:可在COM口上自环,用VC编程来读。

可用VC编程,直接读到IP包吗?VC的网络通信类CLASS似乎是不行的。

 

二、IDS

  基于异常检测、基于误用检测、基于规范。

1、基于异常检测的方法,常见有7种:

统计、模式、规则、贝叶斯网络|推理|聚类分析、神经网络、机器学习、数据挖掘。

每种方法,或者其混合方法,都有许多内容可供研究。原则上,是对异常数据的分析,和对正常数据的对比。

(1)采集异常数据的格式,(2)格式所表示的访问内容,(3)新的异常能否检测,(4)异常能否立即检测,(5)与访问主体和客体有关,(6)与访问参数有关,(7)并与认证所采用的各种技术有关,(8)与时间有关,(9)与采样问题有关,

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="0ecd07e9e8b00d3bb90e2df7"+"_"; </script> | 评论(0) | 浏览(1) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2008-01-06 04:18

一、关键词:

1、机密性,完整性,可用性。入侵的最终结果会影响安全性的这些因素。

2、事后审计。人工吗?

3、行为分析,结果分析。

4、根据策略进行分析。

5、从一个或多个端口进行入侵。如果要攻击的话,我想最佳途径是同时从尽可能多的端口进行同时攻击。

6、入侵分析时时不能离开模拟的攻击行为。

7、入侵协议数据包的设计。如假冒的IP地址,结果到真实的攻击者IP地址。如通过对硬件编程实现。

8、入侵的目的,是执行某种或某些协议,非法获取资源,修改服务端数据。

9、入侵者可能是正确地使用某种协议P1,但却用于非法的用途。

10、端口有服务进程。

11、端口有数据结构,如BUFFER缓冲队列。

12、不同的端口的数据包处理可能有差别。如访问量大的。

13、服务端的端口功能实现,可由网络设计师完成。

14、对攻击者的防守的机制的实现,可由网络设计师完成。

15、在初始的设计阶段,要对端口的安全机制多加考虑。

16、入侵检测到后的防护,要求准确、快速。

17、误测的问题。

18、日志信息的概率统计。

19、对网络攻击的定性和定量分析。

20、针对已知的攻击。

21、针对未知的攻击。

22、入侵的信息量通常很大。

23、入侵信息的采样。

24、入侵的信息论模型。

25、入侵信息的时间序列模型。

26、入侵的IP地址范围如何处理。

27、入侵者是“请求-—-—应答”模式进行攻击的。

28、目前的IDS似乎都是通过“事后弥补”的。

29、如果入侵是利用合法的访问,那么似乎就不是攻击。

30、如果入侵是非法访问,为什么不能在一开始,就拒绝?

31、还是要从“安全性”的根本因素:机密性,完整性,可用性,进行分析。

32、入侵的危害程度分级。

33、入侵发生后的处理,最简单的是关闭端口,禁止访问。

34、如HTTP协议,从0~65535个端口吧,是有不同的安全性级别的吧。有些端口是不能使用的,有些端口是保留以后用的,用户不能访问其中任意的端口。

35、端口“系统”要如何设计才好?OOA-D-P-T-M吗?

36、端口“系统”在网络和WEB服务器软件系统NSS体系结构中的位置和作用。

37、如何在线改进端口“系统”。

38、通常的、最简单的网络服务器软件系统NSS,就是侦听和服务。

39、为什么不在一开始就把“入侵检测”的“侦听”机制和作为NSS设计目标的“侦听”一同设计和实现。

40、如果是“打补丁”呢?

41、在NSS上打补丁,有一系列问题可以加以考虑。

42、如果考虑开源的NSS,和商品化的NSS,对于入侵发生后,网络管理员或网络设计师会如何处理。

43、从人的角度来考虑,如网络管理员,网络设计师,攻击者。

44、分析对于NSS和其控制的资源,以及NSS所处网络环境的资源,分层次地研究,攻与防双方,会有什么指导思想、动作。

45、在入侵之前,攻击者会收集和试探。

46、如何发现攻击者在试探,区别于正常的访问。

47、访问行为的正常和异常有什么区别。

48、HONEY NET密罐在这里能发挥什么作用。

49、针对具体的网络和协议及服务程序,如何进行试探。

50、试探的原则,有哪些?第一,是不被发现。第二,可能是时间相关的,需要多次试探。第三,可能是从难以被发现的多次试探结果中,进行分析。

51、从试探得到的数据,进行分析,迅速得到结果。如何保证迅速和及时?在对方没有进行有效的防备之前?

52、试探系统设计及性能评价。

53、不打无准备之战。如果不进行充分的前期准备,就进行网络攻击,是冒险的行为。可能的入侵机会也会丧失。

54、网络攻防变得复杂的趋势,如何把握。既不能把网络防守的一方想象进行弱智,也不能把网络攻击的一方想象成白痴。

关键是不打无准备之战。

55、上面提到的是原则性的问题的一小点。但具体某个NSS是如何实现某个协议P1的,如何裁剪,则有许多可能性。

一般来说,需求是受许多限制条件约束的,不可能没有漏洞。

对于明显的漏洞,NSS的设计者会想办法弥补。但是由于所处的“心情”,例如上级的压力,即使是修补,尤其是在线修补,拆东墙补西墙的话,说不定会按下葫芦起了瓢。

56、说到底,入侵检测系统是针对“端口”的,即是网络的入口,如:

http://hi.baidu.com/ftai/blog/item/4a3713ce191b7e38b700c8c3.html我的一篇博文,虽然是泛泛而谈。

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="fce36109dcf65acb3ac763c8"+"_"; </script> | 评论(0) | 浏览(1) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-28 09:56

 

 


               IP协议

                     作者:李侃

 


                   一九九八年十二月
目 录

Internet 的互连网协议IP 1
IP地址及其转换 1
IP数据报的格式 1
路由段与路由表 1
Internet控制报文协议ICMP 1
IP 协议的实现 1
设计需求分析 1
接口公共数据结构 1
接口部分各模块之间的关系。 1
IP层各模块之间的关系 1
IP输入函数 ipintr 1
IP转发函数ip_forward 1
IP输出函数ip_output 1
Radix 树结构路由表 1

Internet 的互连网协议IP
全球INTERNET网的广泛应用使IP协议深入人心。IP协议以其简单、有效、开放性成为事实上的工业标准。IP协议使异种网互联方便可行,尤其值得一提的是它对下层通信技术的巨大包容性。
IP协议作为通信子网的最高层,提供无连接的数据报传输机制。IP协议是点到点的,核心问题是寻径。它向上层提供统一的IP数据报,使得各种物理帧的差异性对上层协议不复存在。
  
互连网协议IP是TCP/IP体系中两个最重要的协议之一。与IP协议配套使用的还有三个协议:
 地址转换协议ARP(Address Resolution Protocol)
 反向地址转换协议RARP(Reverse Address Resolution Protocol)
 Internet控制报文协议ICMP(Internet Control Message Protcol)
图1画出了这三个协议和IP协议的关系。在这一层中,ARP和RARP画在最下面,因为IP经常要使用着两个协议。ICMP画在这一层的上部,因为它要使用IP协议。这三个协议将在后面陆续介绍。
顺便指出,有时会听到一种不准确的说法:“我们用
TCP/IP协议进行网络互连”。我们要请读者注意,TCP是
与互连网协议IP配套使用的一个运输协议。TCP相当与
OSI 的运输层协议而不是一个互连网协议。因此TCP和
网络互连并没有直接的关系,只不过是TCP与IP经常配
合起来使用而已。
IP地址及其转换
在TCP/IP体系中,IP地址是一个很重要的概念。一定要把它弄清楚。
     1.IP地址的表示方法
我们把Internet看成为一个网络。所谓IP地址就是给每一个连接在Internet上的主机分配一个唯一的32bit 地址。IP地址的结构使我们可以Internet上很方便地进行寻址,这就是:先按IP地址中的网络号码net-id把网络找到,再按主机号码host-id把主机找到。所以IP地址并不只是一个计算机的号码,而是指出了连接到某个网络上的某个计算机。IP地址有美国国防数据网DDN的 网络信息中心NIC进行分配。
为了便于对IP地址进行管理,同时还考虑到网络的差异很大,有的网络拥有很多的主机,而有的网络上的主机则很少。因此Internet 的IP地址就分成为五类,即A类到E类。这样,IP地址(图2)由三个字段组成,即:
 类别字段(又称为类别比特),用来区分IP地址的类型;A、B、C类分别是0,10,110。D类为1110,E类为11110。
 网络号码字段net-id;
 主机号码字段host-id。
D类地址是一种组播地址,主要是留给Internet体系结构委员会IAB(Internet Architecture Board)使用。E类地址保留在今后使用。目前大量IP地址仅A至C类三种。

A类IP地址的网络号码数不多。目前几乎没有多余的可供分配。现在能够申请到的IP地址只有B类和C类两种。当某个单位向IAB申请到IP地址时,实际上只是拿到了一个网络号码net-id。具体的各个主机号码host-id则由该单位自行分配,只要做到在该单位管辖的范围内无重复的主机号码即可。
为方便起见,一般将32bit的IP地址中的每8个比特用它的等效十进制数字表示,并且在这些数字之间加上一个点。例如,有下面这样的IP地址:
10000000 00001011 00000011 00011111
这是一个B类IP地址,可记为128.11.3.31,这显然更方便得多。
在使用IP地址时,还要知道下列地址是保留作为特殊用途的,一般不使用。
 全0的网络号码,这表示“本网络”或“我不知道号码的这个网络”。
 全1的网络号码。
 全0的主机号码,这表示该IP地址就是网络的地址。
 全1的主机号码,表示广播地址,即对该网络上所有的主机进行广播。
 全0的IP地址,即0.0.0.0。
 网络号码为127.X.X.X.,这里X.X.X为任何数。这样的网络号码用作本地软件回送测试(Loopback test)之用。
 全1地址255.255.255.255,这表示“向我的网络上的所有主机广播”。原先是使用0.0.0.0。
这样,我们就可得出表1所示的IP地址的使用范围。
表1                    IP地址的使用范围
网络
类别 最大
网络数 第一个可用的
网络号码 最后一个可用的
网络号码 每个网络中的
最大主机数
A 126 1 126 16.777.214
B 16.382 128.1 191.254 65.534
C 2.097.150 12.0.1 223.255.254 254
IP地址有一些重要的特点。
(1) IP地址有一些是一种非等级的地址结构。这就是说,和电话号码的结构不一样,IP地址不能反映任何有关主机位置的地理信息。
(2) 当一个主机同时连接到两个网络上时(作路由器用的主机即为这种情况),该主机就必须同时具有两个相应的IP地址,其网络号码net-id是不同的,这种主机成为多地址主机(multihomed host).
(3) 按照Internet的观点,用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号码net-id.
(4) 在IP地址中,所有分配到网络号码net-id的网络(不管是小的局域网还是很大的广域网)都是平等的。
图2画出了用路由器(用有R字的圆圈符号表示)和网桥(用有B字方框符号表示)连接起来的一个互连网。图中的小圆圈表示需要有一个不同的IP地址。可以看出,一个计算机若要和网络号码不同的计算机通信,就必须经过路由器。
2.子网的划分
IP地址的设计有不够合理的地方。例如,IP地址中的A至C类地址,可供分配的网络号码超过211万个,而这些网络上的主机号码的总数则超过37.2亿个,初看起来,似乎IP地址足够全世界来使用,(在70年代初期设计IP地址是就是这样认为的)。其实不然。第一,当初没有预计到微机会普及得如此之快。各种局域网和局域网上的主机数目急剧增长。第二,IP地址在使用时有很大的浪费。例如:某个单位申请到了一个B类地址。但该单位只有1万台主机。于是,在一个B类地址中的其余5万5千多个主机号码就白白地浪费了。因为其他单位的主机无法使用这些号码。

因此,目前正在研究如何将IP地址加以扩展[NETW93],但这非常复杂。因为IP地址一旦改变,在各种主机上运行的大量软件就必须修改。这是一件耗费大量人力和财力的工作。有人也提出采用OSI的20个字节的网络层地址方案。读者应注意这一问题。
从1985年起,为了使IP地址的使用更加灵活,在IP地址的网络号码net-id,而后面的主机号码host-id则是受本单位控制,由本单位进行分配。本单位所有的主机都使用同一个网络号码。当一个单位的主机很多而且分布在很大的地理范围是,往往需要用一些网桥(而不是路由器,因为路由器连接的主机具有不同的网络号码)将这些主机互连起来。网桥的缺点较多。例如容易引起广播风暴,同时当网络出现故障时也不太容易隔离和管理。为了使本单位的各子网之间使用路由器来互连,因而便于管理。需要注意的是,子网的划分纯属本单位内部的是,在本单位以外是看不见这样的划分。从外部看,这个单位只有一个网络号码。只有当外面的分组进入到本单位范围后,本单位的路由器在根据子网号码进行选路,最后找到目的主机。若本单位按照主机所在的地理位置划分子网,那么在管理方面就会方便得多。
这里应注意,TCP/IP体系的“子网”(subnet)是本单位网络内的一个更小些的网络,和前面讲的OSI体系中的子网(subnetwork)不同。它们的英文名字不同,但中文译名都是一样的。
图4说明是在划分子网时要用到的子网掩码(subnet mask)的意义。图4(a)举了一个B类IP地址作为例子。图4(b)表示将本地控制部分再增加一个子网字段,子网号字段究竟选为多长,由本单位根据情况确定。TCP/IP体系规定用一个32bit的子网掩码来表示子网号字段的长度。具体的做法是:子网掩码由一连串的“1”和一连串的“0”组成。“1”对应于网络号码和子网号码字段,而“0”对应于主机号码字段(图4(c))
多划分出一个子网号码字段是要付出代价的。例如,对于图4的例子,本来一个B类IP地址可以容纳65534个主机号码。但划分出6bit长的子网字段后,最多可有62个子网(去掉全1和全0的子网号码)。每个子网有10bit的主机号码,即每个子网最多可有1022个主机号码。因此主机号码的总数是62*1022=63364个。比不划分子网时要少了一些。
若一个单位不进行子网的划分,则其子网掩码即为默认值,此时子网掩码中“1”的长度就是网络号码的长度。因此,对于A,B和C类IP地址,其对应的子网掩码默认值分别为255.0.0.0,255.255.0.0和255.255.255.0。
3.地址的转换
上面讲的IP地址还不能直接用来进行通信。这是因为:
 IP地址中的主机地址只是主机在网络层中的地址,相当与前面讲过的NSAP。若要将网络层中传送的数据报交给目的主机,必须知道该主机的物理地址。因此必须在IP地址和主机的物理地址之间进行转换。
 用户平时不愿意使用难于记忆的主机号码,而是愿意使用易于记忆的 主机名字。因此也需要在主机名字和IP地址之间进行转换。
    在TCP/IP体系中都有这两种转换的机制。
对于较小的网络,可以使用TCP/IP体系提供的叫做hosts的文件来进行从主机名字到IP地址的转换。文件hosts上有许多主机名字到IP地址的映射,供主叫主机使用。


对于叫大的网络,则在网络中的几个地方放有域名系统DNS(Domain Name System)的名字服务器nameserver,上面分层次放有许多主机名字到IP地址转换的映射表。主叫主机中的名字转换软件resolver自动找到DNS的nameserver来完成这种转换。域名系统DNS属于应用层软件。
图5中设名字为host-a的主机要与名字为host-b的主机通信,通过DNS从目的主机host-b得出其IP地址为209.0.0.6。

IP地址到物理地址的转换由地址转换协议ARP来完成。图5还表示出从IP地址209.0.0.6通过ARP得出了目的主机48bit的物理地址 08002B00EE0A(现在假设此主机连接在某个局域网上。如网络是广域网,则转换出主机在广域网上的物理地址)。
由于IP地址有32bit,而局域网的物理地址(即MAC地址)是48bit,因此它们之间不是一个简单的转换关系。此外,在一个网络上可能经常会有新的计算机假如近来,或撤走一些计算机。更换计算机的网卡也会使其物理地址改变。可见在计算机中应当存放一个从IP地址到物理地址的转换表,并且能够经常动态更新。地址转换协议ARP很好地解决了这些问题。
每一个主机都有一个ARP高速缓存(ARP cache),里面有IP地址到物理地址的映射表,这些都是该主机目前知道的一些地址。当主机A欲向本局域网上的主机B发送一个IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址。如有,就可查出其对应的物理地址,然后将该数据报发往此物理地址。
也有可能查不到主机B的IP地址的项目。这可能是主机B才入网,也可能是主机A刚刚加电,其高速缓存还是空的。在这种情况下,主机A就自动运行ARP,按以下步骤找出主机B的物理地址。
① ARP进程在本局域网上广播发送一个ARP请求分组,上面有主机B的IP地址。
② 在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组。
③ 主机B在ARP请求分住中见到自己的IP地址,就向主机A发送一个ARP响应分组,上面写入自己的物理映射。
④ 主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到物理地址的映射。
在很多情况下,当主机A向主机B发送数据报时,很可能以后不久主机B还要向主机A发送数据报,因而主机B也可能要向主机A发送ARP请求分组。为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到物理地址的映射写入ARP请求分组。当主机B收到主机A的ARP请求分组时,主机B就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向主机A发送数据报时就更方便了。
在进行地址转换时,有时还要用到反向地址转换协议RARP。RARP使只知道自己物理地址的主机能够知道其IP地址。这种主机往往是无盘工作站。这种无盘工作站一般只要运行其ROM中的文件传送代码,就可用下行装载方法,从局域网上其他主机得到所需的操作系统和TCP/IP通信软件,但这些软件中并没有IP地址。无盘工作站要运行ROM中的RARP来获得其IP地址。
RARP的工作过程大致如下。
为了使RARP能工作,在局域网上至少有一个主机要充当RARP服务器,无盘工作站先向局域网发出RARP请求分组(在格式上与ARP请求分组相似),并在此分组中给出自己的物理地址。
RARP服务器有一个事先做好的从无盘工作站的物理地址到IP地址的映射表,当收到RARP请求分组后,RARP服务器就从这映射表查出该无盘工作站的IP地址。然后写入RARP响音分组,发回给无盘工作站。无盘工作站用这样的方法获得自己的IP地址。
IP数据报的格式
在TCP/IP的标准中,各种数据格式常常以32bit(即4字节)为单位来描述。图6是IP数据报的格式。

从图6可看出,一个IP数据报由首部和数据两部分组成。首部的前一部分长度是固定的20个字节,后面部分的长度则是可变长度。下面介绍首部各字段的意义。
1.IP数据报首部的固定部分
版本 版本字段站4 bit,指IP协议的版本。通信双方使用的IP协议的版本必须一致。目前使用的IP协议版本为4。
首部长度 首部长度字段占4bit,可表示的最大数值是15个单位(一个单位为4字节),因此IP的首部长度的最大值是60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后一个填充字段加以填充。这样,数据部分永远在4字节的整数倍时开始,这样在实现起来会比较方便。首部长度限制为60字节的缺点是有时(如采用源站选路时)不够用。但这样做的用意是要用户尽量减少额外的开销。
服务类型 服务类型字段共8bit长,用来获得更好的服务,其意义见图6的上面部分所示。
服务类型字段的前三个比特表示优先级,它可使数据报具有8个优先级中的一个。
第4个比特是D比特,表示要求有更低的时延。
第5个比特是T比特,表示要求有更高的吞吐量。
第6个比特是R比特,表示要求有更高的可靠性,即在数据报传的过程中,被结点交换机丢弃的概率要更小些。
第7个比特是C比特,是新增加的,表示要求选择价格更低廉的路由。
最后一个比特目前尚未使用。
总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16bit,因此数据报的最大长度为65535字节。这在当前是够用的。
当很长的数据报要分段进行传送时,“总长度”不是指未分段前的数据报长度,而是指分段后每个段的首部长度与数据长度的总和。
标识 标识字段的意义和OSI的IPDU中的数据单元标识符的意义一样,是为了使分段后的各数据报段最后能准确地重装成为原来的数据报。请注意:这里的“标识”并没有顺序号的意思,因为IP是无连接服务,数据报不存在按序接收的问题。
标志 标志字段占3bit。目前只有前两个比特有意义。
标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面还有分段的数据报。MF=0表示这已是若干数据报段中的最后一个。
标志字段中间的一位记为DF(Don’t Fragment)。只有当DF=0时才允许分段。
段偏移 段偏移字段的意义和OSI的IPDU中规定的相似,只是表示的单位不同。这里是以8个字节为偏移单位。可见IP数据报的段偏移字段(13bit长)和OSI的IPDU的段偏移字段(16bit长)是相当的。
寿命 寿命字段记为TTL(Time To Live),其单位为秒。寿命的建议值是32秒。但也可设定为3-4秒,或甚至255秒。
协议 协议字段占8bit,它指出此数据携带的运输层数据是使用何种协议,以便目的主机的IP层知道应将此数据报上交给哪个进程。常用的一些协议和响应的协议字段值(写在协议后面的括弧中)是:UDP(17),TCP(6),ICMP(1),GGP(3),EGP(8),IGP(9),OSPF(89),以及ISO的TP4(29)。
首部检验和 此字段只检验数据报的首部,不包括数据部分。不见眼数据部分是因为数据报每经过一个结点,结点处理机就要重新计算一下首部检验和(一些字段,如寿命、标志、段偏移等都可能发生变化)。如将数据部分一起检验,计算的工作量就太大了。
地址 源站IP地址字段和目的站IP地址字段都各占4字节。

2.IP首部的可变部分
IP首部的可变部分就是一个任选字段。任选字段用来支持排错、测量以及安全等措施,内容很丰富。此字段的长度可变,从一个字节到40个字节不等,取决于所选择的项目。某些任选项目只需要一个字节,它只包括一个字节的任选代码,图7画的是任选代码的格式。还有些任选项目需要多个字节,但其第一个字节的格式仍为图7所示的那样。这些任选项一个个拼接起来,中间不需要有分隔符,最后用全0的填充字段补齐成为4字节的整数倍。
可以看出,任选代码共有三个字段。
第一个字段是复制字段,占1bit,它的作用是控制网络中的路由器在将数据报进行分段时所作的选择。当复制字段为1时,必须将此任选字段复制到每一个数据报段。而当复制字段为0时,就只复制到第一个数据报段上。
第二个字段是任选类别字段,占2bit。但目前只有两种可供选用(图8):

第三个字段是任选编号,占5个字节,它指出任选是做什么用的。
属于任选类别0的有下列一些任选编号:
任选编号为0:指出这是任选项目中的最后一个。
任选编号为1:无操作,用于需要按每4个字节对齐之用。和填充字段的功能是一样的。
以上两种都是只使用一个字节的任选代码。下面的几种则要使用若干个字节。
任选编号为2:为安全用的。只用在美国国防系统来传送机密文件。路由器在检测到这一安全任选项目时,就要使该数据报不要离开安全的环境。在商业上尚无此应用。
任选编号为7:为记录路由用的,其长度是可变的。图9是记录路由的任选项目的格式。

这种数据报是用来监视和控制互连网中的路由器是如何转发数据报的。源站发出一个空白的表,让数据报所经过的个路由填上其IP地址,以获得路由信息。
前三个字节是:
① 任选代码字段——其中的三个字段分别填入0,0,和7。
② 长度字段——填入此任选项目的长度,包括这前三个字节。
③ 指针字段——指出下一个可填入IP地址的空白位置的偏移量。
在这之后,就是若干个4字节长的IP地址,让各个路由器填入。当一个路由器收到包含有记录路由任选项目的数据报时,先检查指针所指的位置是否超过了表的长度。如不超过,则填入自己的IP地址,并将指针值加4,然后转发出去。但如表已填满,则不填入自己的IP地址,而仅仅转发此数据报。
一般的计算机在受到这样的数据报是,并不会理睬该数据报中所记录的路由。因此,源站必须和有关的站主机在、协商好,请目的主机在收到记录的路由信息后,将路由信息提取出来,并发回源站。
下面两任选项目都是关于源站选路的。
.任选编号为3:不严格的源站选路(loose source routing),其长度是可变的。
.任选编号为9:严格的源站选路(strict source routing),其长度也是可变的。
源站选路本来是源站将数据报传送的路由事先规定好。严格的源站选路不允许改变源站规定好的路由。但不严格的源站选路允许在数据报传送的过程中,将路由表中源站已规定要经过的一些路由器,改换成别的路由器。
源站选路任选项目的格式与图记录路由的相似。前面也是三个固定的字节,但任选代码字节中的三个字段应分别填入1,0和3(不严格的源站选路)以及1,0和9(严格源站选路)。此外,这三个字节后的IP地址表不是空的,而是事先由源站写好的。数据报按源站指定的路由传送。当路由器收到此数据报后,若指针已超过表的范围,则转发此数据报,不写任何数据。若指针的指示是正确的,则填入自己的IP地址(覆盖掉原来的IP地址),并按照表中指出的一下一个地址转发出去。这里要注意:一个路由器有两个或两个以上IP地址。原来在这个任选项目路由表中写入的是路由器的入口IP地址,而路由器写的IP地址则是路由器的出口IP地址。
在数据报中加入源站选路任选项目,可以使网络的管理者了解沿网络中的某一条通路的通信状况是否正常。一般的用户并不使用这一功能。
最后一个任选项目是Internet的时间戳。
.任选编号为4:作时间戳用,其长度是可变的。格式和图类似,但一开始除了原来的任选代码字段(填入0,2和4)、长度字段和指针字段这三个字节外,再加上一个字节的溢出和标志两个字段。标志字段区分几种情况:(1)只写入时间戳;(2)写入IP地址和时间戳;(3)IP地址由源站规定好,路由器只写入时间戳。溢出字段写入一个数,此数值即数据报所经过的路由器的最大数目(考虑到太多的时间戳可能会写不下)。
时间戳记录了路由器收到数据报的日期和时间,占用了4个字节。时间的单位是毫秒,是从午夜算起的通用时间(Universal Timer),也就是以前的格林尼治时间。当网络中的主机的本地时间和时钟不一致时,记录的时间戳会有一些误差。时间戳可用来统计数据报经路由器产生的时延和时延的变化。

路由段与路由表
在互连网中进行路由选择要使用路由器,它平等地看待每一个网络。不论是较大的广域网还是较小的局域网,在路由器看来都只是一个网络。因此在图中将每一个网络画成为一片去,表示路由器产不知道在每一个网络中一个分组是如何选择具体的路由。路由器只是根据所收到的数据报上的目的主机地址选择一个合适的路由器(通过某一个网络),将数据报传送到下一个路由器。通路上最后的路由器负责将数据报送交目的主机。
路由器将分组在某一个网络中走过的通路(从进入网络算起到离开网络为止),人逻辑上看成是一个路由单位,并将此路由单位称为一个路由段(hop),或简称为段。例如,在图10中,主机A到主机C共经过了3个网络和2个路由器,因此共经过3个路由器,布从主机A到主机B则经过了5个网络和4个路由器,即经过5个路由段。由此可见,若一结点通过一个网络与另一结点相连接,则此二结点相隔一个路由段,因而在互连网中是相邻的。同理,相邻的路由器是指这两个路由器都连接在同一个网络上。一个路由器到本网络中的某个主机制路由段数算作零。在图中用粗的箭头表示这些路由段。至于每一具路由段又由哪几条链路构成,路由器并不关心。

图10 路由段的概念
在互连网的情况下,只能计算各条通路所包含的路由段数。由于网络大小可能相差很大,而每个路由段的实际长度并不相同。因此对不同的网络,可以将其路由段乘以一个加权系数,用加权后的路由段数来衡量通路的长短。
因此,如果把互连网中的路由器看成是网络中的结点,把互连网中的一个路由段看成是网络中的一条链路,那么互连网中的路由选择就与简单网络中的路由选择相似了。
采用路由段数最小的路由有时也产不一定是理想的。例如,经过三个局域网路由段的路由可能比经过两个广域网络路由段的路由快得多。
IP地址与物理地址
下面通过一个最简单的例子IP地址和物理地址在选路过程中的作用。
设主机A要向主机B发送一个数据报。两个主机分别连接在两个网络上,这两个网络通过一个路由器相连。
主机A的IP层收到欲发送的数据报后,就比较目的主机的源主机的网络号码是否相同(这就是从数据报首部的IP地址中抽出网络号码net-id部分进行比较)。如相同,则表明这两个主机在同一个网络内,这样就只需要用目的主机的物理地址进行通信。如果不知道目的主机的物理地址,则可向ARP进行查询。但当主机A和B的网络号码不一样时,就表明它们连接在不同的网络上,因此必须将数据报发给路由器进行转发。
源主机从配置中读出路由器的IP地址。然后从ARP得到路由器的物理地址。随后将数据报发送给这个路由器。
这里要强调指出,在数据报的首部写上的源IP地址和目的IP地址是指正在通信的两个主机的IP地址。路由器的IP地址并没有出现在数据报的首部中。当然,路由器的IP地址是很有用的,但它是用来使源主机得知路由器的物理地址。总之,数据报在一个路由段上传送时,要用物理地址才能找到路由器。
图11是上述概念的示意图。这就是:MAC地址(设物理地址就是局域网的MAC地址)用于主机到路由器之间的通信(即在一个路由段上通信),而IP地址则用于两个主机之间的通信,并用来决定找哪一个路由器。符号(1)到(8)表示数据报传送的先后顺序。
图11 两个主机通过路由进行通信
我们应当注意到,路由器由于连接在两个网络上,因此具有两上IP地址和两个物理地址(MAC地址)。主机A发送的数据报经过路由器后,数据报中的两个IP地址都没有发生变化,但数据帧中的MAC地址(源地址和目的地址)却都改变了。
最后发回来的信息是主机B向主机A的应答((7)和(8))。
上面的简单例子只有一个路由器。在更加复杂的例子中,两个通信的主机要经过多个网络和路由器。这时,通信的通路上紧后的路由器负责将数据报交付给目的主机。
通过路由表进行选路
当源主机发送数据报时,IP层先检查目的主机IP地址中的网络号码。如发现与源主机处在同一个网络内,则不经过路由器,只要按照目的主机的物理地址传送即可。
如目的主机不是和源主机在同一个网络中,那么就查一下是否对此特定的目的主机规定了一个特定的路由。如有,则按此路由进行传送。这种情况有时很有用,因为在某些情况下,需要对到达某一个目的主机的特定路由进行性能测试。
如不属于以上情况,则应查找路由表。路由表中写明,找某某网络上的主机,应通过路由器的哪个物理端口,然后就可找到某某路由器(再查找这个路由器的路由表),或者不再经过别的路由器而只要在同一个网络中直接传送这个数据报。
为了不使路由表过于庞大,可以在网络中设置一个默认路由器(default router)。凡遇到在路由表中查不到要找的网络,就将此数据报交给网络中的默认路由器。默认路由器继续负责下一步的选路。这对只用一个路由器与Internet相连的的小网特别方便,因为只要不是发送给本网络的主机的数据报,统统送交给默认路由器。
图12的例子说明其中一个路由器(路由器80的路由表的主要内容。这里有7个网络通过8个路由器互连在一起。我们应注意到,每一个路由器具有不止一个IP地址。图中各网络中的数字是该网络的网络地址(前面讲过,主机号码为全零的IP地址就是网络地址)。路由器8由于与三个网络相连,因此有三个IP地址和三个物理端口。
图12 路由表举例
各路由表的数据可以是人工输入,也可能通过各种路由选择协议来生成。

Internet控制报文协议ICMP
IP数据报的传送不保证不丢失。但互连网层对数据报的传送还有一定的质量保证功能,这就是使用Internet控制报文协议ICMP(Internet Control Message Protocol)。ICMP允许主机或路由器报告差错情况和提供有关异常情况的报告。但ICMP不是高层协议,它仍是互连网层中的协议。ICMP报文作为互连网层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP报文的格式如图13所示。

图13 ICMP报文与IP数据报的关系


图14 ICMP报文的格式
ICMP报文的前四个字节是统一的格式,共有三个字段。但后面是和长度可变部分,其长度取决于ICMP的类型。
ICMP报文的类型字段占一个字节。类型字段的值与ICMP报文的类型关系如下:
类型字段的值     ICMP报文的类型
0       Ech0(回送)回答
3       目的站不可达
4       源站抑制(Source Quench)
5       改变路由(Redirect)
8       Echo请求
11       数据报的时间超过
12       数据报的参数有问题
13       时间戳(Timestamp)请求
14       时间戳回答
17       地址掩码(Address Mask)请求
18       地址掩码回答
ICMP报文的代码字段也战友一个字节。为的是进一步区分某种类型中的几种不同的情况。后面的检验和占两个字节,它检验整个ICMP报文。数据报首部的检验和不检验数据报的内容,因此不能保证ICMP报文是正确的。
ICMP报文的类型很多,但可分为两种类型,即ICMP差错报文和ICMP询问报文。
在ICMP差错报文中,改变路由报文用得最多。我们以图15为例来说明改变路由报文的用法。

图15 ICMP改变路由报文的使用举例
从图15可看出,主机A向主机B发送IP数据报应经过路由器R1,而向主机C发送数据报则应经过路由R2。现在假定主机A启动后,其路由表中只有一个默认路由器R1。当主机A向主机C发送数据报时,数据报就被送到路由器R1。从路由器R1的路由表可查出:发往主机C的数据报应经过路由器R2。于是数据报从路由器R1再转到路由器R2,最后传到主机C。显然,这个路由不好,应改变。于是,路由器R1向主机A发送一个ICMP改变路由报文,指出此数据报应经过的下一个路由器R2的IP地址。主机A根据收到的信息更新其路由表。以后主机A再向主 C发送数据报时,根据路由表就知道应将数据报传到路由器R2,而不再传到默认路由器R1了。
图16是ICMP改变路由报文的格式。在第5-8字节了写入数据报应经过的路由器的IP地址。再后面就是说明是哪一个数据报。数据报的首部都要写入,而数据部分则写入其前8个字节,这里面有运输层数据单元首部的一些数据(端口号),有时要用到。

图16 ICMP改变路由报文的格式
当某个速率较高的源主机向另一个速率较慢的目的主机(或路由器)发送一连串的数据报时,就有可能使速率较慢的目的主机产生拥塞,因而不得不丢弃一些数据报。通过高层协议,源主机得知丢失了一些数据报,就不断地重发这些数据报。这就使得本来就已经拥塞的目的主机更加拥塞。在这种情况下,目的主机就要向源主机发送ICMP源站抑制报文,使源站暂停发送数据报,过一段时间再逐渐恢复正常。
下面介绍几个常用的ICMP询问报文。
ICMP Echo请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的机器必须给主机发送ICMP Echo回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。在应用层有一个服务叫做PING(Packet InterNet Groper),用来测试两个主机之间的连通性。PING使用了ICMP Echo请求与Echo回答报文。
ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32bit的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用来进行时钟同步和测量时间。
ICMP地址掩码请求与回答可使主机向子网掩码服务器得到某个接口的地址掩码。

 



IP 协议的实现

设计需求分析
功能决定结构。分析IP层的功能与地位将有助于我们设计出合理,简洁,易于扩展的软件结构以实现IP协议。
IP层作为通信子网的最高层协议,提供无连接的数据报传输机制。IP协议是点到点的,其主要处理过程是寻径:根据信宿IP地址如何确定通信的下一点。这就决定了路由表的设计应是IP协议软件设计的焦点,以它为出发点,我们将逐步确定其它主要数据结构以及程序框架。再考虑到IP层与上下层的关系,即IP协议向上层提供统一的数据报,使得各种物理帧的差异对上层协议不复存在,因而设计好一个IP层与下层物理网络的统一接口亦是非常重要。下面先给出IP层的数据流图:
           IP层的数据流图

接口公共数据结构
对于每个接口,我们设置一数据结构ifnet{}来描述一些关于接口的公用信息。这些信息分为五类:
1. 一些实现信息。
2. 硬件信息。
3. 接口统计量。
4. 对接口进行操作的函数的指针。
5. 输出队列。
由于有些接口,比如说以太网接口,向上支持多种协议,因而每个接口都包含一条由ifaddr{}结构组成的链表,该结构主要包含不同上层协议赋给该接口的Socket地址。譬如说Internet协议使用in_ifaddr{}结构,OSI协议使用iso_ifaddr{}结构来保存关于该接口的特定信息。另外,核心也通过分配一个ifaddr{}结构,两个sockaddr_dl结构来保存该接口的链路层地址,一个是链路层地址本身,一个是链路层地址掩码。所谓链路层地址(针对以太网接口)参见下图示意:

     初始化后的以太网sockaddr_dl结构
Ifnet{}结构与ifaddr{}结构的关系如下图:

      ifnet{}结构与ifaddr{}结构的关系

事实上Ifnet{}结构主要反应接口的底层信息,而ifaddr{}结构反应接口的上层信息,两者之间用指针相互连接起来。
由于各个接口之间可能存在较大差异,因而在ifnet{}结构的基础上还可以定义各个接口的特有信息。系统初始化后,相应的ifnet{} 表如下:
针对ifnet{}结构,,有以下一些通用操作:
if_init :初使化接口。
if_output:将要发送的包放进对应于各接口的输出队列。
if_start:启动数据包的传输。
if_done:数据传输后一些必要的清理工作。
if_ioctl:处理I/O控制命令。
if_reset:重新设置接口。
if_watchdog:周期性的接口操作。
这些操作函数的指针放在各自的ifnet{}结构中。
其它比较重要的数据结构还有各类输入输出队列结构以及Socket{}结构,这里不在赘述。

接口部分各模块之间的关系。
下面以以太网接口为例,说明接口部分各模块之间的关系。参见下图:

      接口部分各模块之间的关系

我们从以太网帧的接收开始。假设硬件已经初始化,系统已经被设置。当数据帧到达,网卡产生中断,系统核心调用leintr. 它首先检查硬件。如果是数据帧(frame)到达,则调用leread将数据帧从接口传送到由若干内存快组成的数据链中。如果硬件报告数据帧传送结束或有错误被检测到,则leintr更新相关接口统计量,重设硬件,调用lestart试图发送例外的数据帧。
所有以太网接口把它们接收到的数据帧转化成数据链后将其作为参数传递给ether_input,它检查由leread提供的数据帧头,以判断接收的数据帧的类型,根据不同的类型将其转发到上层协议的输入队列以等待处理。这些上层协议可能是OSI上层协议,ARP协议,IP协议。
当网络层协议,譬如说IP协议,要输出包(packet),它将根据寻址结果调用相应接口的if_net结构中的if_output函数(对于以太网来说就是ether_output函数)。 该函数将对由ip_output提供的路由信息进行最后的确认(这种确认是必要的,因为网络运行状态时刻在变化)然后根据Socket地址形成以太网物理地址,将包封装成帧,放入接口输出队列。如果ifnet{}结构中的标志位指明设备闲,就调用if_net{}结构的if_start函数,该函数将调用lestart函数。该函数将要传输的帧从接口输出队列中取出。一般以太网卡硬件中有传输缓冲区,如果该传输缓冲区未满,则真正的物理传输开始。如果该传输缓冲区已满,则置ifnet{}结构中的相应标志位为忙。如果网卡忙,则当它传输完当前帧时,它就产生中断。网卡驱动程序将调用lestart。


IP层各模块之间的关系
下图简要描述了IP层各模块之间的关系。


IP输入函数 ipintr
IP层所有接口的输入,都是直接输入到IP输入队列,然后产生一个IP输入事件,使IP层的任务能够被调度。IP层处理这个输入队列的函数是ipintr()。该函数流程图如下:

IP转发函数ip_forward
首先判断是否进一步转发该数据包,接着修改包头中有关域,定位下一站地址,调用ip_output。.
IP输出函数ip_output
IP输出函数可能被ip_forward和传输层协议直接调用。

Radix 树结构路由表
路由表相当于一个关系数据库,表中每一项都可由一关键字唯一确定。在TCP/IP协议中,该关键字就是目标用户IP地址或网络地址。表中每一项给出了到达目的地的下一站路由器地址,相应的下层接口的ifnet{}结构以及一些统计信息。
Patricia 树结构非常适于实现路由表。树结构能提高查询效率,相应的代价是增加了添加和删除路由表项的开销。
为了理解树结构路由表的工作原理,我们先简单举一个例子。要说明一点的是IP层针对不同的协议套,定义了不同的树结构路由表。以下所举例子是Internet协议的树结构路由表。
考虑以下子网:


在bsdi上有路由表如下:
Destination Gateway Flags Refs Use Interface
default 140.252.13.33 ugs 0 3 le0
127 127.0.0.1 ugsr 0 2 lo0
127.0.0.1 127.0.0.1 uh 1 55 lo0
128.32.33.5 140.252.13.33 ughs 2 16 le0
140.252.13.32 link#1 uc 0 0 le0
140.252.13.33 8:0:20:3:f6:42 uhl 11 55146 le0
140.252.13.34 0:0:c0:6f:2d:40 uhl 0 3 le0
140.252.13.35 0:0:c0:c2:9b:26 uhl 1 12 le0
140:252:13:65 140.252:13.66 uh 0 41 sl0
224 link#1 uc 0 0 le0
224.0.0.1 link#1 uhl 0 5 le0

路由表所含各项内容解释如下:
目标地址:可能为用户地址或网络地址。
路由器地址:可能为IP地址或网卡物理地址。
标志位:U -该线路处于工作状态。
    G -该线路的目的地是路由器。
    H -该线路的目的地是一具体用户,而非一子网。
    S -该线路是静态的。
    C -该线路要复制以产生新路线。
    L -该路线含有链路层地址。
    R -回测接口拒绝使用该线路的所有数据包。
引用次数:该路由项当前正被引用的次数。
使用次数:该线路总共被引用的次数。
相应于上述路由表的树结构实现方式如下图所示:

这里我们有必要解释一下复本关键字和掩码表。对于同一目标地址,我们自然希望用最精确的掩码与待查关键字进行位与使之匹配该目标地址。即匹配的越多越好。同时对于同一目标地址(即同一关键字)在路由表树结构中可能会有多个节点,这些节点用指针相互连接起来构成复本关键字。每个复本关键字都对应着一个不同的掩码。在某节点处,在寻找到使之与待查关键字相匹配的最精确的掩码后,我们就会从复本关键字中选择那个其掩码与最精确掩码相同的复本关键字。该复本关键字将提供最佳的路由信息。
路由表的搜索是基于位测试的,即对要查找的地址关键字按位搜索。这样做使得同一搜索函数能够搜索不同协议套的路由表树结构,譬如说OSI协议的可变长度的地址。每个路由表项都有网络掩码,对于关键字是具体用户地址的路由表项其掩码是缺省值0x11111111。给定要查询的目标地址,搜索过程大致为:
从根节点开始按位测试,直至到达相应的叶节点t。再对叶节点t进行全面的测试。
If (测试成功)
{
If (匹配的节点t为路由树的最左叶节点)
Then t = t->rn_dupedkey /*将t设为缺省路由项。*/
返回该节点t。
}
else
{
do {
将叶节点的网络掩码与要查询的目标地址进行位与运算,以判断是否有网络匹配。
若匹配,则返回匹配节点
}
    while (t = t-> rn_dupedkey);
   }
/*向上回溯进行查找*/
do
{
向上回溯到父节点,
由于每个节点可能有多个网络掩码,因而对各个掩码有一个循环查找过程:
将各个掩码与待寻目标地址进行位与运算获得网络地址。以此网络地址为查询关键字,以当前节点为开始节点向下搜索。
若找到匹配叶节点。
则由于对叶节点可能有一个rn_dupedkey链,因而又有一个循环查找过程。
直至找到最佳路由路径。返回该路径。
}
while (还没有到最顶层父节点)

关于具体实现路由表树结构,确有很多微妙之处。仔细琢磨,大家定会收益非浅。下图给出实际的与路由表有关的数据结构,以便大家有一个感性认识。
基于上述路由树查找算法,我们进一步给出寻径过程的算法框架:
开始:
在Internet协议控制块中一般维护着一个路由缓冲区,里面存放着最近刚使用过的路由信息。在为某个目标地址寻径时,通常先看一下路由缓冲区里面是否有直接可用的路由信息以及该路由信息提供的路由是否还有效。若有效,则直接返回。
如果缓冲区中没有路由信息可直接利用,
则首先根据目标地址所属的协议族找出该协议族对应的路由树的根节点,然后调用路由树查找算法。
如果查找成功,
则根据匹配路由项的标志位的设置情况,可能要在路由树中克隆该路由项。同时将该路由项的当前引用计数增1。
返回匹配路由项。
    否则
     修改相关统计信息,
     向上报告相关信息,
     返回NULL。

衷心感谢吴文娣,郑瑜两位女士在录入方面提供的帮助。

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="a54a5fee9c2041ffb3fb954b"+"_"; </script> | 评论(0) | 浏览(37) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-28 06:52

       TCP、UDP、Socket

                     作者:方伟

                   一九九八年十二月

目 录


第一章 TCP/IP分层结构
第二章 路由器协议栈
第三章 Socket、TCP、UDP所能提供的服务
第四章 数据结构
第五章 TCP协议
第六章 UDP协议
第七章 进程间数据通信流程
第一章 TCP/IP分层结构

不同于OSI的七层模型,TCP/IP使用更为简单的五层模型,如图1-1:
注:图中实线表示物理连接,虚线表示逻辑连接
图1-1 TCP/IP分层模型

图1-1只是一个抽象的TCP/IP模型,实际情况要复杂得多,在下一章我们将会看到路由器的协议栈为五层,而不是三层。TCP和UDP属于分层模型中的传输层协议,而socket是传输层为应用层提供的编成接口,不是协议。

 

第二章 路由器协议栈

路由器通过转发网络层报文实现链路层不同的异种网络互联,如连接运行IEEE802.2的以太网和运行PPP的广域网等。路由器上有一些必备的功能,如配置、管理等功能,这些功能都工作于应用层上,所以路由器的协议栈是五层而不是三层。图2-1是一台简单路由器的协议栈。

SNMP    TELNET

SOCKET

UDP    TCP

IP

ETHERNET    PPP

ETH-PHY   WAN-PHY

注:socket不是协议,图中用斜体标出以示区别
图2-1 路由器协议栈

图2-1所示的路由器非常简单:SNMP通过UDP提供网管功能;Telnet通过TCP实现远程配置功能;只能互联运行TCP/IP的以太网与PPP网。通过这个简单的路由器协议栈,我们看到了TCP、UDP和socket在路由器中的位置。下面我们对这三个模块进行详细介绍。

 

第三章 socket、TCP、UDP所能提供的服务

IP所能提供的是一种无连接的服务。所谓无连接是指不保证顺序、正确、不丢失。

图3-1是无连接的数据传输中可能发生的几种情况。

图3-1 无连接数据传输

TCP(Transmission Control Protocol即传输控制协议)提供一种面向连接的流式服务。所谓面向连接是指保证数据传输的正确、顺序不变、不丢失。所谓流式服务是指用户的数据发送和接收都是字符流,而不是将用户每次请求发送的数据块整个封装在一个报文中发送。
UDP(User Datagram Protocol即用户报文协议)所能提供的是无连接的报文式服务。
Socket是传输层的编程接口。图3-2显示了socket向应用层提供的函数调用及调用流程。
Socket向应用程序提供client-server形式的面向连接的或无连接的通信服务。

对于面向连接的服务,一个公用的server长期监听client的连接请求,有请求时就创建新socket和新进程与client通信。通信结束后新socket和新进程都被关闭。无连接的server行为较简单:client不需要连接请求而直接向server发送数据,server在收到client数据后也是直接处理,不创建新socket及新进程。

图3-2的左侧为client端应用程序流程:
1、调用socket()创建socket,返回指向新建socket的柄——socket号。以后的socket调用都用socket号指称socket。从应用程序看来socket的主要成分是一个五元组(协议,本地地址,本地端口号,对端地址,对端端口号)。地址的作用是区别主机,使本地进程可以和多台远端主机通信。端口号的作用是区分同一台主机上的多个进程,使本地进程可以和同一台远端主机上的不同进程通信。协议的作用是指定传输层的服务类型,如指定面向连接的TCP服务或无连接的UDP服务,还可以请求使用RAW IP甚至非TCP/IP协议族的服务等。实际上,socket()调用确定了五元组中的协议项。
2、调用bind()指定本地地址和端口号,确定了五元组中的本地地址和本地端口号项;
3、调用connect()与指定对端相连,确定了五元组中的对端地址和对端端口号项,至此,一个通信连接建立起来;
4、向server发送数据;
5、调用shutdown关闭对socket的读、写或全部关闭。若关闭读,则socket接收缓冲区中的所有未读数据被丢弃,且之后再接收到的数据也将被丢弃。关闭写的情况与协议有关,对于TCP连接,所有发送缓冲区中的残留数据将被附以FIN(关于FIN请参见本文档第五章)全部发出。Shutdown调用并不能释放socket资源,要释放socket 还需要调用close;
6、调用close关闭并释放socket。

上述过程第2步、第5步为任选。若不用bind指定本地地址及端口,则传输层会自动分配端口号并使用报文发送端口地址作为socket本地地址,详细流程请参见本文档第五章和第六章。实际上对于无连接的UDP,应用程序一般也不使用connect,而是直接用sendto发送数据。

图3-2右侧为server端应用程序流程:
1、调用socket()创立主server;
2、调用bind()指定本地地址及端口号;
3、调用listen()准备接收连接请求;
4、调用accept()监听连接请求。收到连接请求后accept会返回一个新socket
号及client的地址及端口号。以后应用程序就使用新socket与client通信;
5、调用CopySocket()指定accept产生的新服务器socket由指定的任务处理。CopySocket为Quidway socket特有,图中以虚线及斜体标出以示区别。增加该调用的原因是psos的任务都是独立的,没有父子、继承等关系。实际上psos任务即便有继承关系,拿不到其TCB我们还是无能为力;
6、接收client数据;
7、调用shutdown()关闭读、写或都关闭
8、调用close()关闭并释放socket


图3-2 socket调用流程

socket是与任务相关的,一个任务不能操作其他任务的socket,原则上来说这已经足够了,但为了方便应用程序我们又添加了全局socket功能。全局socket是一种与任务无关的socket。任何任务都可以向全局socket发送数据,也可以从全局socket中接收数据,但全局socket所收到的数据被读取后立刻删除,其他任务再来读得到的将是新数据。
本文档并非编程手册,对socket调用不再作更详细的介绍,详细情况请参阅相关资料。

第四章 数据结构

socket、TCP、UDP三个模块所涉及的数据结构庞大且复杂,本文将其简化、抽象后得到图4-1所示结构,下面详细介绍。


图4-1所示数据结构用粗线分隔成三部分:最上边的部分为socket数据结构;中间的部分是传输层协议的协议控制块internet PCB(internet Protocol Control Block);最下面部分是连接状态控制块及其接收缓冲区中的数据。各传输协议(TCP、UDP、RAW IP等)都有Internet PCB,连接状态控制块是面向连接的TCP协议特有。
Socket保持一条TCB(Task Control Block —— 任务控制块)的单向链表。TCB的主要内容是task id和文件描述符表。每个使用socket的任务唯一对应一个TCB,task id是任务标识,文件描述符用于描述任务所打开的“文件”。这里所说的“文件”可以是普通意义上的磁盘文件,也可以是socket,但嵌入式系统中并不使用磁盘文件,为了描述方便我们将其抽象,认为只有socket。一个任务可以打开多个文件,也就有多个文件描述符,这些文件描述符组成线性表放在TCB中,就是图中TCB中的file[0]、file[1]…。文件描述符的主要成员是该文件的方法(如read、write等)和一个指向socket结构的指针。
Socket结构的主要成员包括一个指向PCB(Protocol Control Block传输协议控制块)的指针pcb、协议开关表指针proto_sw、任务号task id、发送队列send_q、接收队列rcv_q、接受中的socket队列。 所谓“接受中的socket队列仅用于TCP server socket,详情请参见本文档第七章。
每种传输协议保持一条PCB双向链表,每个PCB唯一对应一个socket。PCB的主要成员包括远端地址及端口号foreign、本地地址及端口号locol、socket指针、锁定路由route、协议相关控制块指针prorelated_pcb。锁定路由在协议第一次发送报文时由IP确定,它可以提高效率。TCP可以通过“发出的数据长时间得不到确认”而发现锁定的路由失效并强令IP重新锁定路由,但UDP则不能,所以使用UDP的应用程序应对此负责:或者通过设置socket选项禁用锁定路由,或者发现数据路由失败后命令以后每次发包都重新路由。
Tcp pcb是TCP特有的,用于描述连接的各种参数,主要成员包括接收数据队列、连接状态state、各定时器timers、PCB指针pcb、未被确认的数据起始指针send_unack、发送指针send_next、期望接收的数据指针rcv_next。关于接收数据队列请参见本文档第七章。关于state、timers、send_unack、send_next、rcv_next请参见本文档第五章。

图4-1 socket、TCP、UDP数据结构
第五章 TCP协议


图5-1 TCP报文格式

TCP利用无连接的IP服务向用户提供面向连接的服务,为此TCP需要有校验功能、确认——重传机制,还要有自己的接收队列。

TCP连接建立后收到数据序列1,2,4,5,其处理过程将是:1和2马上提交给用户并向发送方确认,4和5在接收队列中等待,直到3到达。在等待过程中不对4和5进行确认。发送端在一定时间内得不到对端的确认就重传。这就是TCP的确认——重传机制,也是TCP传输可靠性的保证。

TCP协议的主要组成有三部分:报文格式、状态机、定时器。图5-1是TCP的报文格式。TCP报文包括20字节的IP伪头(IP overlay)、TCP头(TCP header)、用户数据(data)三部分。
IP伪头共20个字节,有效部分包括协议号protocol、TCP长度TCP packet length、原地址、目的地址(伪头中的阴影部分)。这些成员都由IP上交报文时填写,他们都参与TCP校验和的计算。在计算校验和及进行校验时无效部分(伪头中的非阴影部分)都填0。无效部分中的前8个字节用于TCP接收队列双向链表的两个指针,第9个字节不用。
TCP头包括:
两个字节的源端口号source port number,报文发送者的端口。
两个字节的目的端口号destination port number,报文接收者的端口。端口号的作用在本文档第三章中已经介绍过。
4字节的数据序列号sequence number。TCP提供的是流式服务,sequence number所表示的不是报文号,而是本报文的第一个数据字节的序号。
4字节确认序列号acknowledge number。主机发送acknowledge number为ack的报文是确认序号为ack-1及之前的字节都已收到,希望对端发送序号为ack的数据。
4比特TCP头长,单位为4字节。注意TCP头包括选项。该字段仅4bit,可知TCP头最大长度为(2**4 – 1)* 4 = 60个字节。
FIN:声明以后不再发送数据。
SYN:同步请求,请求建立连接。
FIN和SYN都占用一个序号,因此都需要确认。
RST:复位。
PSH:推进数据。所谓推进是指不管对端接收窗口的情况,将发送缓冲区中的所有数据发出。我们socket没有给用户提供推进功能,PSH位是TCP在清空发送缓冲区时设置的,而收到的报文中的PSH则不起作用。
ACK:acknowledge number有效。实际上除了SYN报文中ACK不置位外其余报文一般都置位。
URG:报文携带了紧急数据,urgent offset有效。
2字节接收窗口尺寸window size,以字节为单位。Window size是指发送该报文时接收缓冲区的空闲空间大小,因此是动态的。
2字节校验和。TCP的校验方法与IP相同:算数和求补,不同的是TCP校验包括数据,IP则只校验报文头。
2字节紧急数据指针urgent offset。紧急数据的另一个名称是带外(out of band)数据。顾名思义,带外数据不参加排对,而是直接提交给用户。我们的TCP所实现的是单字节紧急数据,urgent offset是紧急数据字节后面一个字节在本报文数据中的相对位置。

RFC793规定了三种TCP的选项有三种:
      Kind     Length    Meaning
      ----     ------    -------
       0         -       End of option list.
       1         -       No-Operation.
       2         4       Maximum Segment Size.
其格式分别如下:

图5-2是TCP的状态转换图。图中粗实线是client端正常的状态迁移,粗虚线是server端正常的状态迁移。下面简单介绍各状态的意义。
CLOSED:初始状态。
LISTEN:server端特有的状态,监听client端的连接请求。
SYN_SENT:连接请求(SYN)已发出,等待对端的确认和SYN。
SYN_RCVD:收到对端的连接请求,本端也已经发出SYN,正在等待对端的确认。
ESTABLISHED:连接已建立,双方都已发出SYN且都得到了对端的确认。
CLOSE_WAIT:收到对端的FIN,已给出确认,等待本端用户关闭连接。
LAST_ACK:收到对端FIN后本端用户也关闭连接,FIN已发出,等待最后的确认。
FIN_WAIT_1:本端用户首先请求关闭连接,FIN已发出,等待对端的ACK和
FIN。
FIN_WAIT_2:本端首先发FIN,已得到了对端确认,但还未收到对端的FIN。
CLOSING:本端首先发FIN,已收到对端的FIN,但还未得到了对端确认。
TIME_WAIT:本端首先发FIN,已收到对端的FIN和确认,对对端的FIN已发出确认报文,等待2MSL(Maximum Segment Lifetime)时间,确保对端收到确认。TIME_WAIT状态又称2MSL状态,其目的实质上是在本端首先关闭连接,且对端也关闭了连接之后使该连接所使用的五元组空闲2MSL时间。

考虑如下序列:
1 client端用端口号1025请求建立连接端口号为23的server,server端应答,连接建立。
2 client端发送序号为2的数据。

3 数据由于路由不佳在网中徘徊。
4 client端由定时器超时,重发序号为2的数据。
5 server端首先收到重发的数据并确认。
6 client端收到确认,请求关闭连接,连接被关闭。
7 2MSL时间内client再次使用1025端口与server建立连接。
8 徘徊中的数据2到达server,server认为该数据属于新连接而接受。
增加TIME_WAIT状态可以部分解决类似问题:client第二次连接请求将被拒绝。但若第6步后client端主机重启,之后第7步、第8步,仍然有问题。要得到更完善的解决需要更多的工作,详情请参见《TCP/IP Illustrated, Volume 1》。

图5-2 TCP状态机
图5-3 TCP连接周期

 

图5-3是一次常见的TCP连接建立及拆除的过程。图中SYN和FIN后面的数字是该标志的序列号,ACK后的数字是acknowledge number,data后面的数字是报文中数据的长度。

TCP的定时器共有7个,下面对它们进行简单介绍。
1 连接建立定时器在SYN发送之后启动。如果75秒内得不到确认,连接
   将被关闭。
2 重传定时器在TCP发送数据之后启动。在重传定时器超时后没有得到确认的数据将会被重传,重传定时器被重启。重传定时器的取值根据报文往返时间及重传次数动态确定,在1到64秒之间变化。若重传定时器13次超时后仍得不到确认,连接将被终止。
3 延迟ACK定时器在TCP收到需要确认,但可以延迟确认的数据后启动,它的取值是200ms。如果在200ms内本端用户有数据要发送,则确认跟随数据一起发出,否则在200ms后单独发送确认。
4 坚持定时器在收到对端的0窗口消息后启动。0窗口消息可以阻止TCP发送数据,非0窗口则可以使TCP重新开始发送数据,但窗口消息可能不携带数据,因此得不到确认,也就不会重传。为闭免非0窗口消息丢失引起的麻烦TCP使用坚持定时器,并在坚持定时器超时后发送带一个字节数据的报文探测对端窗口是否已经打开。坚持定时器采用一种退避算法取值并在5秒至64秒之间变化。
5 保持激活定时器用于连接长间空闲时。保持激活定时器在连接空闲2小时后第一次超时,超时后发送探测报文,并重启,取值75秒。若探测数据得不到确认,则超时后重复。若重复8次后仍未得到确认,则连接被终止。
6 FIN_WAIT_2定时器在连接进入FIN_WAIT_2状态后启动,离开FIN_WAIT_2状态时停止。FIN_WAIT_2定时器第一次取值10分钟,超时后重启,取值75秒,再次超时后强行终止连接。
7 TIME_WAIT定时器在连接进入TIME_WAIT状态后启动,取值为2MSL。关于该定时器的作用前面已经做过介绍,不再重复。


第六章 UDP协议
UDP协议相对于TCP来说要简单得多,它没有状态机,也没有确认——重传机制,它提供和IP一样的不可靠的无连接数据报传输服务,但增加了对给定主机上的多个目标进行区别的能力。通常来说,UDP的传输效率较高。
UDP协议核心部分是报文格式。

 

图6-1 UDP报文

UDP报文包括以下成员:
两字节源端口号source port number
两字节目的端口号destination port number
两字节报文长度UDP length,单位是字节
两字节校验和UDP checksum。UDP对报文的校验是任选的,收到的报文中若校验和为0则不进行校验,否则校验。

第七章 进程间数据通信流程

本文档第三章介绍了socket使用流程,第五章介绍了TCP的连接建立及拆
除流程,本章以TCP服务为例介绍用户通过socket提出请求时socket和TCP的动作。我们的介绍将以图4-1为基础,以图5-2为例。
1 server端起监听socket
server端调用socket(),指定使用TCP/IP协议族的流式TCP服务。socket首先取得当前任务的task id,在tcb链表中查找匹配的tcb,若失败则创建新tcb并插入链表。在找到的(或新建的)tcb中查找空闲的文件描述符,比如结果为第0个。在协议开关表中查找TCP表项的入口,结果为图中的protocol switch table。创建socket结构(图4-1中的server socket),将protocol switch table填入server socket,并将server socket填入file[0]中,然后调用protocol switch table中的user_request(),向TCP发ATTACH命令。TCP为连接创建PCB和tcp pcb,连接进入CLOSED状态。
应用程序调用bind(),填写本地地址及端口号。socket通过当前任务号及socket号找到相应的socket结构,再取得该socket所使用的协议开关表protocol switch table。调用开关表中的user_request()方法,向TCP发BIND命令。TCP将本地地址及端口号填入pcb中。
应用程序调用listen()。socket通过user_request向TCP发LISTEN命令,连接进入LISTEN状态。
应用程序调用accept()设置可以接受的对端地址及端口号。对于一个通用的server,如telnet server,对端地址及端口号一般添0,表示可以为任何一个client提供服务。Socket通过user_request向TCP发ACCEPT命令,TCP将对端地址及端口号填入pcb。Server应用程序阻塞在server socket上等待client的连接请求。

2 client端请求连接server
client端应用程序调用socket()。过程与server端相同。
Client端应用程序调用bind()指定本地地址和端口号。应用程序可以不指定本地端口号,让TCP自动分配端口。TCP在执行BIND命令时若发现端口号为任意,就会搜索tcp_pcbs链,找一个与bind地址相关的空闲端口号填在相应的pcb中。若应用程序指定了地址和端口号,TCP会首先检查是否有与指定地址相匹配的interface,若没有则bind失败,若有TCP会进一步检查与指定地址相关的指定端口号是否已被占用,若已被占用则bind失败。应用程序还可以通过设置socket指明端口号可以复用,此时bind不会失败,理由是区分pcb的是五元组而不是三元组(TCP协议,本地地址,本地端口号)。
Client端应用程序调用connect()请求连接server。Socket通过user_request向TCP发CONNECT命令,TCP先将对端(server端)地址及端口号填入pcb,然后向server发送SYN报文,连接状态进入SYN_SENT,如图5-2active open。

3 server端TCP处理SYN报文
server端TCP收到SYN报文后搜索tcp_pcbs链表,找到响应的server pcb,调用socket函数创建新socket及pcb处理连接。新socket暂时挂在server socket的接受队列中,即图4-1中的accepting socket。之后TCP通过新连接向client回ACK+SYN报文,新连接进入SYN_RECVD状态。

4 client端TCP处理ACK+SYN报文
client端TCP收到server端的回文后发ACK报文进证实,连接进入ESTABLISHED状态。

5 server端应用程序处理连接请求
server端收到client的证实后连接进入ESTABLISHED状态并通知socket,socket唤醒调用accept的应用程序。应用程序创建新任务并调用CopySocket(),socket将accepting socket转移入新任务的tcb中,即图4-1中的detached socket。至此连接建立过程全部完成,连接进入数据传输阶段。

6 数据接收
图4-1底部画除了一个TCP连接接收数据的简单实例。Client端发送的2~99及500~1099数据丢失,100~599及1100~1599存在队列中,此时client重传的500~1199共700个字节到达。TCP收到该报文后试图将其插入接收队列中,由于数据重叠TCP需要从队列中或新到的报文中删掉重复部分。TCP的做法是删掉新到报文中的500~599和接收队列中的1100~1199数据。删除之后将新到报文插入队列中。插入后由于2~99数据仍未收到,所以数据还不能提交给socket。当收到2~99数据后TCP会将队列中从2开始的连续数据提交给socket,放在socket接收缓冲区rcv_q中,然后通过socket唤醒调用read()或select()的应用程序。

7 发送数据
应用程序调用send()发送数据,socket先将用户数据拷入socket的send_q中,再通过protocol switch table中的user_request向TCP发SEND命令。TCP收到SEND命令后酌情将socket send_q中的数据发出。

8 关闭连接
client端调用close()请求关闭连接。Socket通过user_request向TCP发DISCONNECT命令,TCP将发送缓冲区中的数据全部发送,并在最后一个报文中设置FIN标志,之后静等(最多是重传)对端的确认。以后的过程较为简单,图5-2已经足以说明。


参考文献:
(1) RFC文档
TCP协议:RFC793
UDP协议:RFC768
TCP/IP:RFC1122
Socket For IPV6:RFC2292
(2) 技术参考书
《TCP/IP Illustrated Volume 1 — 2》,Richard Stevens
《用TCP/IP进行网际互连 1、2、3 卷》,Douglas E. Comer,电子工业出版社
《TCP/IP网络原理与技术》,周明天,清华大学出版社
《WINDOWS SOCKET 编程》,蒋东兴,清华大学出版社

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="8afedb54466c865cd0090667"+"_"; </script> | 评论(1) | 浏览(50) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-27 18:04

1、在LAN中如何搭建FIREWALL和IDS。

2、可能仅是FW和IDS和IPS的模型。

3、具体要验证哪些访问控制技术。

4、可能是协议分析、AGENT和计算智能的。首先要明确是什么访问。协议虚拟机和访问控制系统、认证系统之间的关系。和FW和IDS、IPS之间的关系。

5、资源的模拟。

6、资源所处的环境的模拟。

7、问题求解:要用模型来解决哪些现实中的信息安全问题。如哪些攻击,哪些防守技术。

8、要突出结合于FW和IDS、IPS的访问控制和认证。强调认证和访问控制。相对于认证和访问控制系统而言,上述三者,只是一个运行环境。

 

9、协议执行的外在表现,是双方的行为。应用层和物理层两层中间的协议,主要是TCP/IP,变化较慢,是标准。

而新的需求,常催生新的应用,会有新的协议。

异常的行为和后果,才需要防护。检测出异常行为和后果,通常是人工的吧。

10、协议执行的行为常有相关性。

11、一个具体的信息安全模型,只解决有限的、典型的安全问题。提出问题,提出解决问题的思路。

12、访问资源,然后控制资源的获取。资源的例子,一般似乎都可用OS下的文件系统和存储系统来代表。

资源本身有合法的控制程序,但非法攻击者则试图越过这些控制程序。

合法的控制程序,有其典型的行为,有指导其行为的逻辑。

攻击者试图掌握合法的控制程序的行为规律,而防守者则保护秘密,防止泄漏。

攻或者防的行为,似乎都可用“如果……那么……”的产生式规则来表示。

攻击者都试图找到指导网络行为设计的更高级、更抽象的产生式规则集合,以及实现这种规则集的机制。

因为协议的设计实际上就是发送者S要接收者R“做什么”,R又反过来对S提出要求,S、R在协议规范下进行通信,处理资源问题。是对单机“指令系统”的扩展。

 

13、面向实际的IDS、IPS和FW环境,因为缺少被攻击的协议的RFC文本,和构造这种环境需要的资源紧缺,难以实现。

但网络攻击行为可被建模。也可被抽象。因为网络攻击行为的复杂性和针对防护易变,抽象出来的网络攻击行为,也有其指导意义,也有其被抽象的意义。

网络攻击行为的产生,多是由人工针对网络行为的漏洞来设计。

14、现有的网络攻击行为和基本原理,在INTERNET上很容易检索到。

15、应用层的应用,面向变化的环境,千差万别,对应的协议,也具有多样性。课题中应该选取典型的应用层协议,进行网络攻防的分析。如PPP。

从管理上来说,因为通信双方网络资源分布不对等,才需要网络通信和协同。也不可能双方拥有所有的资源,只拥有必备的资源吧。这里,不需考虑网络体系结构设计阶段的原因。

现有网络的性能,如可靠性,从某个方面来说,是由资源的分布性决定的。耦合度过高的系统,非彼不可,缺少不得,容易导致系统CRASH。

16、由于有网络控制系统NCS,控制资源的软件AGENT系统可以具有流动性。升级的AGENT,在网络CRASH时,可不可以根据网络体系结构的设计要求,流动到CRASH子网,对其拥有的关键资源CRITICAL RESOURCES进行管理。

 

17、设计协议P1来控制资源的分布,必然要权衡此P1协议的性能,而性能影响因素一般较多。

这样,在为设计目标的实现进行取舍时,就会留下“漏洞”。因为不可能考虑所有的影响性能的因素。

18、比较而言,紧密结合硬件,处理机资源充分时,任务比较单一时,如程控交换机的呼叫处理模块,

优点明显,但针对硬件,却容易被窃听和冒充。

19、针对应用层协议的攻击,需要分析一、两个典型的协议。或者多个吧。为什么针对应用层协议?因为在WINDOWS系统下容易模拟。而如果针对网络层和传输层,可能需要理解更多的硬件设备数据,和硬件支持,会难模拟些。

当然,不排除在拥有时间资源的情况下,逐步地向下层深入。

20、泛泛而谈:要在面向扩展的思路下进行。应用层的协议虚拟机,第一,要协同双方的动作。

21、对已有典型网络协议的理解、记忆和应用,从某个方面,如产品系统的设计来说,是基石。

那么,如何取舍这些协议呢?

_____________________________________________________________________________

             防火墙

                     作者:姚鑫

                   一九九八年十二月
目 录

1 防火墙的基本概念 2
1.1什么是防火墙 2
1.2网络的不安全因素 2
1.3防火墙的作用 2
2 防火墙的实现 2
2.1防火墙的分类 2
2.2包过滤 2
2.3访问列表 2
3 常用网络攻击方法 2

 

 

 

 

 

 

 


1 防火墙的基本概念
1.1什么是防火墙
在大厦构造中,防火墙被设计用来防止或从大厦的一部分传播到另一部分。我们所涉及的防火墙服务于类似的目的:防止因特网的危险传播到你的内部网络。实际上,因特网防火墙不像一座现代化大厦中的防火墙,它更像中世纪城堡的护城河。
防火墙一方面阻止来自因特网的对受保护网络的未授权或未验证的访问,另一方面允许内部网络的用户对因特网进行Web访问或收
         图1 防火墙通常使内部网络和因特网隔离
发E-mail等。防火墙也可以作为一个访问因特网的权限控制关口,如允许组织内的特定的人可以访问因特网。现在的许多防火墙同时还具有一些其他特点,如进行身份鉴别,对信息进行安全(加密)处理等等。如图1所示:
防火墙不单用于对因特网的连接,也可以用来在组织内部保护大型机和重要的资源(数据)。对受保护数据的访问都必须经过防火墙的过滤,即使该访问是来自组织内部。
当外部网络的用户访问网内资源时,要经过防火墙;而内部网络的用户访问网外资源时,也会经过防火墙。这样,防火墙起了一个“警卫”的作用,可以将需要禁止的数据包在这里给丢掉。
1.2网络的不安全因素
    一个网络系统的最主要的目的是实现“资源共享”,同时实现对数据的协作处理、信息的传递等等。网络自身的这种开放性是引发网络安全问题的最直接原因。
网络的不安全因素有以下几类:
1)环境:各类天灾及事故都会对网络造成损害,令网络完全瘫痪或不能正常工作。
2)资源共享:包括硬件共享、软件共享、数据共享。资源的相互共享为异地用户提供了方便,同时也给非法用户创造了条件。非法用户可以通过终端来窃取信息、破坏信息。共享资源与使用者之间有相当一段距离,这也为窃取信息在时间和空间上提供了便利条件。
3)数据传输:信息需要通过数据通信来传输。在传输过程中,信息容易被窃听、修改。
4)计算机病毒:借助网络,病毒可以在短时间内感染大量的计算机,使网络趋于瘫痪。如“蠕虫”病毒及电子邮件“炸弹”。
5)网络管理:对系统的管理措施不当,会造成设备的损坏、重要信息的人为泄露等等。
1.3防火墙的作用
    如图2所示:

图2 中世纪城堡的护城河
我们将防火墙比作中世纪城堡的护城河,并且像护城河一样,防火墙不是坚不可摧的。它不防备已经是里面的人;如果与内部的防御相配合,它工作的最好;同时,即使你把所有的船都收藏起来,人们有时仍然能设法横渡。构筑防火墙需要昂贵的花费和努力,而且它对内部人员的限制是令人厌烦的。
防火墙对网络威胁进行极好的防范,但是,它们不是安全解决方案的全部。某些威胁是防火墙力所不及的。
1) 防火墙不能防范恶意的知情者:防火墙可以禁止系统用户通过网络发送专有的信息。但是用户可以将数据复制到磁盘或者纸上,放在公文包里带出去。如果侵袭者已经在防火墙的内部,防火墙实际上无能为力。
2) 防火墙对不通过它的连接难有作为:防火墙能有效的控制穿过它的传输信息,但对于不穿过它的传输信息无能为力。
3) 防火墙不能防备所有新的威胁:一个好的设计能防备新的威胁,但没有防火墙能自动防御所有新的威胁。人们不断发现利用以前可信赖的服务的新的侵袭方法。
4) 防火墙不能防备病毒:有太多种的病毒和太多种的方法可以使得病毒隐藏在数据中。

2 防火墙的实现
2.1防火墙的分类
一般把防火墙分为两类:网络层防火墙、应用层防火墙。网络层的防火墙主要获取数据包的包头信息,如协议号、源地址、目的地址、目的端口等或者直接获取包头的一段数据。应用层的防火墙对于整个信息流进行分析。
实现防火墙时,共有以下几种:
① 应用网关(application gateway):检验通过此网关的所有数据包中的应用层的数据;经常是由经过修改的应用程序组成运行在防火墙上。如FTP应用网关,对于连接的client端来说是一个FTP server,对于server端来说是一个FTP client。连接中传输的所有ftp数据包都必须经过此FTP应用网关。
② 电路级网关(circuit-level gateway):此电路指虚电路。在TCP或UDP发起(open)一个连接或电路之前,验证该会话的可靠性。只有在握手被验证为合法且握手完成之后,才允许数据包的传输。一个会话建立后,此会话的信息被写入防火墙维护的有效连接表中。数据包只有在它所含的会话信息符合该有效连接表中的某一入口(entry)时,才被允许通过。会话结束时,该会话在表中的入口被删掉。电路级网关只对连接在会话层进行验证。一旦验证通过,在该连接上可以运行任何一个应用程序。以FTP为例,电路层网关只在一个FTP会话开始时,在tcp层对此会话进行验证。如果验证通过,则所有的数据都可以通过此连接进行传输,直至会话结束。
③ 包过滤(packet filter):对每个数据包按照用户所定义的进行过滤,如比较数据包的源地址、目的地址是否符合规则等。包过滤不管会话的状态,也不分析数据。如用户规定允许端口是21或者大于等于1024的数据包通过,则只要端口符合该条件,数据包便可以通过此防火墙。如果配置的规则比较符合实际应用的话,在这一层能够过滤掉很多有安全隐患的数据包。
④ 代理(proxy):通常情况下指的是地址代理,一般位于一台代理服务器或路由器上。它的机制是将网内主机的IP地址和端口替换为服务器或路由器的IP地址和端口。举例来说,一个公司内部网络的地址是129.0.0.0网段,而公司对外的正式IP地址是202.138.160.2~202.38.160.6,则内部的主机129.9.10.100以WWW方式访问网外的某一台服务器时,在通过代理服务器后,IP地址和端口可能为202.138.160.2:6080。在代理服务器中维护着一张地址对应表。当外部网络的WWW服务器返回结果时,代理服务器会将此IP地址及端口转化为内部网络的IP地址和端口80。使用代理服务器可以让所有的外部网络的主机与内部网络之间的访问都必须通过它来实现。这样可以控制对内部网络带有重要资源的机器的访问。
路由器中的防火墙主要是指包过滤加地址转换。
2.2包过滤
包过滤应用在路由器中,就为路由器增加了对数据包的过滤功能。一般情况下,指的是对IP数据包的过滤。对路由器需要转发的数据包,先获取包头信息,包括IP层所承载的上层协议的协议号,数据包的源地址、目的地址、源端口、目的端口等,然后和设定的规则进行比较,根据比较的结果对数据包进行转发或者丢弃。
包过滤在IP数据包中所取的用来判断的元素如图3所示(图中IP所承载的上层协议为TCP):
图3 包过滤元素
大多数数据包过滤系统在数据本身上不做任何事:它们不做基于内容的决定。有了数据包过滤,你可以说:
不让任何人从外界使用Telnet登录。
或者:
让每个人经由SMTP向我们发送电子邮件。
或者是:
那机器经由NNTP能把新闻发给我们,但是没有其他机器能这样做。
然而,你不可以这样说:
这个用户能从外部远程登录,但是其它用户不能这样做。
因为“用户” 不是数据包过滤系统所能辨认的。同时,你也不可以说:
你能发送这些文件而不是那些文件。
因为“文件”也不是数据包过滤系统所能辨认的。

2.3访问列表
为了过滤数据包,需要配置一些规则,规定什么样的数据包可以通过,什么样的不能通过。IP层所能获取的通用信息如上图。则配置的规则应该对这些参数作出规定。
一般采用称为访问列表的技术用来配置过滤规则。访问列表分为两类:标准访问列表、扩展访问列表。
2.3.1标准访问列表
标准访问列表的格式如下:
access-list listnumber permit|deny address [wildcard-mask]
此格式表示:允许或拒绝来自指定网络的数据包,该网络由IP地址(address)和地址通配比较位(wildcard-mask)指定。
通配比较位用法类似于子网掩码而写法不相同。IP地址与地址通配位的关系语法上规定如下:在通配位中相应位为1的地址中的位在比较中被忽略。地址与通配位都是32位的长整形数(unsigned long)。如通配位是0x00ffffff(0.255.255.255),则比较时,高8位需要比较,其他的都被忽略。又如IP地址是129.102.1.1,通配位是0.0.255.255,则地址与通配位合在一起表示129.102.0.0网段。若要表示202.38.160.0网段,地址位写成202.38.160.X(X是0~255之间的任意一个数字),通配位为0.0.0.255。在程序中,用异或等位操作高效率的实现这类比较。
标准访问列表的例子:
1) access-list 4 deny 202.38.160.0 0.0.255.255
表示该规则序号为4,禁止来自202.38.0.0网络的主机的访问。
2) access-list 4 permit 202.38.160.1 0.0.0.255
表示该规则序号为4,允许来自202.38.160.0网络的主机的访问。与2)规则一起表示禁止一个大网段上的主机但允许其中的一小部分主机的访问。

2.3.2扩展访问列表:
扩展访问列表的格式如下:
access-list listnumber permit|deny protocol source source-wildcard-mask destination destination-wildcard-mask [operator operand] [log]
此格式表示允许或拒绝满足如下条件的数据包:
 带有指定的协议(portocol),如tcp、udp等;
 数据包来自由source及source-wildcard-mask指定的网络;
 数据包去往由destination及destination-wildcard-mask指定的网络;
 [可选] 该数据包的目的端口在由operator operand规定的端口范围之内;
并按要求做或不做日志。
扩展访问列表的例子:
1) 100 deny tcp 129.9.0.0 0.0.255.255 202.38.160.0 0.0.0.255 eq www log
表示该规则序号为100,禁止129.9.0.0网段内的主机建立与202.38.160.0网段内的主机的www端口(80)的连接,并对违反此规则的事件作日志。
2) 100 permit tcp 129.9.8.0 0.0.0.255 202.38.160.0 0.0.0.255 eq www
表示该规则序号为100,允许129.9.8.0网段内的主机建立与202.38.160.0网段内的主机的WWW端口(80)的连接。
3) 101 deny tcp any 202.38.160.1 0.0.0.0 eq telnet
表示该规则序号为101,禁止一切主机建立与IP地址为202.38.160.1的主机的telnet(23)的连接。
4) 102 deny udp 129.9.8.0 0.0.0.255 202.38.160.0 0.0.0.255 gt 128
表示该规则序号为102,禁止129.9.8.0网段内的主机建立与202.38.160.0网段内的主机的端口号大于128的UDP(用户数据报协议)连接。

2.3.3删除访问列表:
no access-list listnumber [subitem]
表示删除指定的listnumber的访问列表,或者删除其中的一项。

2.3.4建立访问列表的索引
建立索引的目的是:进行快速定位;即对于需要过滤的数据包,快速的确定需要和哪些规则进行比较。
索引项根据网段的大小(unsigned long类型,带地址通配位如0.0.255.255)进行排列,比较时采用二分法进行比较。如图4所示:

             图4 索引及所指的值

索引项中的一个域指向一个指针链。如图中的10.0.0.0索引项指向规则2,规则2再指向规则102,表示一个源地址为10.0.0.0网段的数据包,需要和规则为2和102的进行比较。先比较规则为2的标准规则(标准规则判断的范围比较大)。
规定如下:
 比较的时候,先比较规则序号小的(在索引指向的域中可以做到这一点)。如先比较2,再比较4,再比较103,再比较104。倘若用户将要判定的源地址属于同一个网段的规则写成了好几个不同规则序号的规则,那么过滤的效率降低也是没有办法的。一般较正常的情况下,一个索引项后跟一个或两个规则序号。如图1中所示。如果在索引中,没有那个网段的话,需要与源地址为any的规则进行比较。


• 不同序号的规则没有时间上的先后顺序。例如:先配置103,再配102,如果这两个序号的规则序列中都有判断129.9.0.0网络的规则,则过来一个129.9.0.0网络的包,先和102的比较,再和103的比较。(和上面一点有些重合)

 同一序号的规则的配置也没有时间上的先后顺序。在排列时,
             图5 规则的组织
深度最大的那个排在前面。规则的组织图请看图5。
这一点需要加以特别说明,也是程序中应该注意的地方。例如:先配置 2 permit 129.102.1.1 0.0.0.0; 再配置一条同样序号的 2 deny 129.102.0.0 0.0.255.255;前一条直接指定了主机,它的深度最大,还是排在前面。比较时,129.102.0.0网络的数据包会在序号为4的规则中搜索。若是129.102.1.1,则被前一条满足,就不再往后比较了。这是因为规则是按照深度的大小来排的。
可以看出,深度是指通配位而言的。一般来说,深度越大,通配位越小。如
0.0.0. 0比较时的深度要比0.0.255.255的深度大。
此观点来自于:一个数据包只被一组规则中的某一个允许或拒绝,也就是最终起作用的是一条规则(该规则的深度最大)。

 如果通配位不规则(如0.0.123.234),规则的组织仍是按照通配位的大小。这是基于这样的考虑:
1) 这种写法非常的少;
2) 倘若真的写出了这样的规则,一般不太明白这样的通配位与地址相结合表示什么样的地址范围;
3) 可能运用的地方应该是属于圈定一小部分IP地址,如0.0.0.128,它的深度比较大,比0.0.0.255要大。满足0.0.0.255的不一定满足0.0.0.128所指的。
规定规则以通配位大小进行排列,通配位小的在前面,可以减少很多麻烦,也方便了程序的编写。
根据深度优先的排列后,在命令行上配置的规则就没有先后顺序之分了。

 如果源地址是any,则将此规则放在数组下标为199的那一项上。规则间也以序号大小排列。
      将源地址为any的规则组织在一起是基于如下考虑:
1) 索引的每一个值都属于any,没有必要将这些规则所在的access-list的序号加在每一个索引所指的内容中去;否则的话,每一个数据包都需要和该序号的所有规则进行比较;
2) any的情况容易引发安全漏洞。允许any代表允许来自世界各地的访问。一般不建议配置源地址是any的规则(deny any是个例外)。
3) 配置any的情况,大部分是因为需要配置一个对其他情况的一个缺省处理。如配置access-list 1 deny any表示其他规则不能判定的数据包都会被拒绝掉。
4) 一般源地址为any的规则数目比较少,可以组织在一起。

 用户配置的规则和现有的规则有冲突的情况,如用户已经配了一条1 deny any;现在又配了一条2 permit any;这两条命令的比较范围是重叠的,实际比较时序号为2的起作用(2把1的结论给推翻了)。序号为1的是无效的,降低了效率。如果和同样序号的规则发生冲突,如上面的2是1,则将后一条放在排在前一条的后面。
可以看出,不同深度的规则在配置时是没有冲突的。
      一个数据包的过滤经过如下,以图1中的索引为例,
1) 若过来一个129.9.0.0网络的数据包,在索引中找到第二个是匹配的,该数据包将和序号为103的规则以深度优先进行比较;如果被某一个规则拒绝或者允许,则返回该结果(不再比较源地址为any的规则);如果不在103的任何一条规则之内(103属于扩展规则,还需要比较其他项,可以有这种情况出现),则和源地址为any的规则进行比较;如果还是没有规则拒绝或者允许该数据包,则返回缺省过滤结果;
2) 若数据包来自129.8.0.0网络,在索引中找不到匹配的项,则直接和源地址为any的规则进行比较;如果没有规则拒绝或者允许该数据包,则返回缺省过滤结果;

2.3.5 包过滤在路由器中的实现
包过滤模块不是作为一个进程在系统中运行,而是向IP层提供了一个函数接口。该函数的参数是pMBuf及pIp等,也就是能提供数据包信息的一些参数,如源地址、目的地址、源端口、目的端口等。
那么什么时候调用该函数?当路由器的IP层收到一个数据包时,该数据包有两个去处:路由器本身或者由路由器转发到某一个地方。对数据包进行检查应该在这两个地方进行。
在程序中,对于到路由器本身的数据包,在交给上层协议处理之前调用包过滤提供的函数;对于路由器需要转发的数据包,在调用转发函数之前调用包过滤提供的函数。
模块实现时的重点在于:
 将用户在命令行上所敲的命令转换成自己的一个数据结构;
 为数据结构建立一个索引;
数据结构本身需要包括实现扩展访问列表的所有内容,如源、目的地址与端口,源、目的通配位等等。标准的访问列表可以采用和扩展访问列表一致的数据结构,其中某些域无意义。
访问列表数据结构:
typedef struct tagExtendAL
{
int    listnumber;          /* 访问列表序号(1-199) */
int    permission;          /* 禁止(0)或允许(1) */
UCHAR protocol;         /* 协议类型,如6代表tcp */
ULONG sourceaddr;       /* 源地址,如129.102.2.21 */
ULONG sourcemask;      /* 源地址通配位 */
ULONG destaddr;         /* 源地址,如129.9.181.1 */
ULONG destmask;        /* 目的地址通配位 */
struct PortRange portnum;    /* 端口范围,如ftp(21)—www(80) */
int    blog;               /* 是否做记录 */
struct tagExtendAL *pNextAL; /* 指向下一个ExtendAL 数据结构 */
} ExtendAL;     (Extended Access-List,扩展访问列表)

标准访问列表也采用此数据结构(listnumber[1-99])。其中的destaddr、destmask、portnum、blog域在此时无意义。ExtendAL数据结构中的portnum域的类型是struct PortRange,该结构定义如下:
struct PortRange
{
USHORT min;   /* 小的端口号 */
USHORT max; /* 大的端口号 */
};
在PortRange结构中,当min为最大值65535时,代表的是“neq”这种情况,neq的那个值在max中。这样就能表示不连续的范围。如neq www,则min为65535,max为80,相当于表示范围 [1,79]  [81,65535]。
3 常用网络攻击方法
1) IP地址伪装(IP Spoofing):攻击方发出的数据包中的源地址改成受攻击方的网络地址,向该网络发送数据包。
2) IP抢劫(IP Hijacking、IP Splicing):攻击者中途截取一个已经连接成功的会话。这种攻击通常发生在用户身份被验证后,这样攻击者看起来是一个合法用户。对于这种攻击的最主要的防范方法是对网络层或会话层的传输的数据进行加密。
3) Smurf:攻击方通过第三方网络介以一伪造的地址将数据包传入,大量的数据包使得网络速度迅速下降直至崩溃。这种攻击很难查出攻击者。
4) Dumpster diving:通过搜寻公司的垃圾文件以获得口令等敏感性数据。
5) War-dialing:通过不断快速的枚举法来获得用户帐号和口令。这是一非常古老的方法。但现在使用它的逐渐又多了起来。如对于采用密钥长度为56位的DES加密的数据,可以在一个月之内被破译(按照目前的计算速度),对于40位或48位的则只需几个小时或几天。DES是使用最广泛的加密技术。
6) 利用操作系统缺陷:利用系统中漏洞直接对系统进行攻击。如“蠕虫”病毒是利用finger命令中的bug,令缓冲区溢出,再将控制转移到自己的程序中。还可以利用系统缺陷,绕过防火墙的检验,直接获取数据。发现系统中的缺陷,应该立即采取对策,防止对系统的进一步危害。
7) 拒绝服务denial of service:特征是攻击者通过各种方法使合法的用户不能使用某种服务。例如:
 “淹没”一个网络,从而阻止合法的数据传输;
 破坏两台机器见间的连接,使用户不能访问该服务;
 阻止特定的个人访问某种资源;
 中断到某个特定系统或个人的服务;
一些拒绝服务攻击被称为“非对称攻击”,特点是攻击方利用有限的资源去攻击一个比较大的网络。如攻击者可能可以利用一个低速的modem,将一个大型的网络搞垮。
拒绝服务攻击的种类有多种,以下三种是比较基本的:
 消耗有限的、不可更新的资源;
 毁坏或者更改配置的信息;
 对于网络的物理组件的破坏或者更改;
这里就第一种即“消耗有限的资源”做一些说明。
计算机和网络需要有特定的资源来运行:网络带宽、内存和磁盘空间、cpu时间、数据结构、对其他网络和计算机的访问;并且还包括一些环境资源,如电、冷气甚至还有水。
有这样一种攻击方法:攻击者建立一个到目标机器的连接,但是用某种方法阻止将此连接的最终完成;这样,在目标机器上就预留了一些用来完成连接所需的数据结构。结果一些合法的连接被拒绝了,因为目标机器正在等待完成那些已经完成一半的连接。应该注意到,这种攻击并不消耗网络带宽,它只是消耗建立连接所需的核心的数据结构。这也意味着可以从利用拨号上网来攻击一个非常快速的网络。这是一个“非对称攻击”的好例子。
其他的方法有创建一个恶意的进程不断的生成新的进程,消耗系统资源。

_____________________________________________________________________________

 

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="f85498515baf1c2042a75b99"+"_"; </script> | 评论(0) | 浏览(12) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-25 19:52

1、AGENT被访问控制,由AGNET或MAS,或者MOGENT来访问客体。

2、客体,可否理解为资源,通常的资源,有单机版的OS下的几类资源。

3、客体,还可由网络资源表示。是网络OS控制下的资源。

4、层层控制,要实现控制机制,必须具有计算能力,或者,打个比方,是类似EXE、DLL的东东。

6、计算智能的进化计算和遗传计算,要重点考虑,是否可引入到工程硕士大课题中。

7、会涉及网络协议的理解和执行。

8、会涉及到语义的理解和执行。

9、会涉及到产生式规则的理解和执行。

10、以及规则的形式。“非教科书形式”。

11、4中提到要层层控制,原因如下:

(1)客体本身的层次感,通常很丰富。可能要排除急功近利出来的访问控制应用,如BAIDU可检索到的一些安全公司的白皮书。

(2)客体的数量要求访问控制的层次感。

(3)成体系的访问控制系统,能否更优地保证访问控制系统本身的安全基本特性。

(4)或者说吧,访问控制系统本身可看作一个独立的“虚拟机”。

(5)访问控制似乎有模块化、可拆卸、可安装、可配置、有“配线架”(华为的配线架部门,在2000年时的产值,已经有2亿左右),同时要模块要标准化,有企业标准、行业标准、更高更宽泛的标准。

或者,是如1994年左右,在CAD中提到过的“框架”FRAMEWORK。

12、有限状态自动机的“控制机制”,软件中的算法,与POST产生式规则有紧密的联系。

POST波斯特于1943年证明了:“所有的数学定理和公理,可以表示成‘如果,那么’的形式”。

13、如果某计算机C1输入为I1,则输出O1。

14、是否允许主体(冯登国博士的《计算机网络通信安全》,表达为“发起者”,和这里的“主体”,是同一个意思),访问客体,其评价标准就是设计的访问控制算法,是否在限制条件下,完备、正确、一致地实现。

15、在做课题时,只能抽象出客体资源的主要特性,并不需要受具体的操作系统,如WINDOWS的限制。

也许只要实现对WINDOWS下数种常见资源,如文件,如内存,如编程资源(菜单项,对话框),的访问控制即可。

因为这种具体的资源形式在将来可能不通用,资源的形式也要面向扩展,而且对具体编程资源的理解和分析,需要花费不菲的时间。

由于对客体的操作编程,预估会有较大的变化范围,还要仔细考虑。

16、即是对“主体”和“客体”的内涵和外延,访问控制系统的设计,访问控制的体系结构,需要仔细研究研究,在分析和总体设计阶段多花些时间。

 

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="8f0a97234913af40ac34ded4"+"_"; </script> | 评论(0) | 浏览(3) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-25 05:27

一、

考虑修改硕士大课题的题目,原因主要有:

1、光是“基于产生式规则的认证”,还要向将来面向应用、工作考虑,因此引入访问控制。

2、产生式规则也和访问控制有紧密的结合的地方。

3、认证之后,马上需要进行访问控制。前期和后期的关系。课题也就更完备一些。

4、访问控制很重要,这样就会促使自己去研究。

5、入侵检测系统IDS和防火墙的内部实现,与访问控制有紧密的关系。而这两处,是面向实际应用的基石之一。

 

 

_________________________________________________________________________________

_________________________________________________________________________________

_________________________________________________________________________________

二、基于知识的认证的问题

1、“是什么,拥有什么,知道什么”,实际上,就是根据知识进行认证。

动物可能根据身体特征,如犬类通过气味,企鹅通过识别幼儿的“灵魂歌声”(见《快乐的大脚》动画片)。

人类则还要通过语言作为工具,检索大脑中的知识块和记忆景象。双方认证时,一般有语言和文字、图形、图像和声音等表达方式及其符合具有个体思维和情感、认知因素的综合。

思维、情感、认知等因素是附加在上述五种表达形式上的“权值”,这三种因素通过“权值”来影响识别。

个体每一种表达方式具有不同的特征值,千差万别。

并且每一种表达方式,是一大类,人脑可以通过快速的反应,划分出许多小类。

目标为认证的识别,是模糊识别,是含有概率因素的识别。

进行这些表达方式的识别时,包含独一无二的“秘密”信息,并有宽容度(暂用此词)。

2、人类的认证,是综合上述五种表达方式和三种因素,几乎同时进行的。

认证是以“猜测和证实”,即“试探”,分步骤进行的。

认证具有很强的主观的特性。所谓主观,是由个体知识的差异性决定的。

3、人类有能力通过某种方式,快速识别。在这过程中,涉及五种表达方式和三种因素。

各种属性赋值后的组合数,非常巨大(可能)。并可在主要因素和次要因素之间,快速转换、试探。

4、当类似人类认证、信息形式先假设固定、信息量用二进制来表示,是非常巨大时,人脑是如何快速计算的。

要进行模拟的话,其组织结构是怎样的。通常的体系结构,可能是不会具备这种计算能力的。如果通过软件虚拟机的话,有办法没有?

5、一定有自适应、方式和内容进化、优化等生物特性。

6、表达内容,如图形的某些部分,具有时间轴上的前相关和后相关特性,和同一时刻的空间坐标上的相关特性。

7、计算机分析连续的图像时,只有一帧一帧地等。

而人脑则象“过电影”,能通过直觉(这里的直觉的内涵和外延?)有所选择、根据某些帧图像的内在联系、快速找到、筛选某些片断,从而提高识别的效率。即所谓“念头”象天马行空,不着痕迹。

通过某些规则,这些有“语义”的片断,在记忆块中,打上了强化的标记,可能容易和较多的知识块产生的“产生式规则的条件部分”形成耦合和匹配,推理出一系列新的“语义”(但这些语义,具有主观色彩,不一定都有意义)。

8、CPU访存时,有80/20的空间“聚集”特性。人脑的回忆机制,似乎更特别。尤其是能够快速处理巨量信息(因为人脑的记忆量是巨量的,人在清醒时,无时无刻不在记忆一些东西)。

9、4中提到的计算机用二进制处理信息时,主要可能是没有象人脑一样进行“约束”,没有进行“归纳和分类”,或者,换种说法,没有赋予相应的“语义”。

对计算机来说,二进制数据就是二进制数据,等长的比特数处理,需要等量的时间和空间开销。这对于处理有意义数据来说,如果用这种方式去研究,似乎象下围棋:“第一手棋就下错了”。

当然,给数据赋予意义,谈何容易。

10、要在初始阶段采集图像时,就有一个高效的知识库,在这阶段,即赋予“片断”以“语义”,并以高效的方式存储。如警察系统识别罪犯活动的录像。

特定领域、有限制条件的知识库,还是容易建立的。

这样,在以后识别时,比较容易一些。

11、即是一种“预处理”。

12、由于这种图像的组成元素来自自然界、环境和人类社会,虽然数量巨大,但是是有限的。

如果是警察研究同城的犯罪,图像组成元素更是有限。

13、不停地进行该知识库的调整和优化,尤其是计算机根据规则集,自动地、迅速地优化。象FILTER过滤器。

14、该知识库中,既有通过遗传算法选择的(?)的图像,也有图像元素的“语义”,和图像之间、图像元素之间相关性的描述。

15、并有一个对该知识库进行控制、处理的POST产生式规则系统。

16、这样,对图像元素识别速度的比重、识别准确率的要求,就有所降低。

17、而在《模式识别》中,识别速度,通常是一个致命的问题。

 

 

_________________________________________________________________________________

_________________________________________________________________________________

_________________________________________________________________________________

_________________________________________________________________________________

三、文章的识别因素分析

上下文、词法、语法、识别结果必须是推出有意义的结论根据文章的主旨和段落的大意来控制识别过程、语料库、知识库、已有知识和已有模式的选择和采用都是基于经验和记忆来决定文章的解释和意义。

解释可以解释得很细,也可以只解释某级别读者感兴趣的知识块。

解释是具有非常大的自由度,只有知识库、经验库、记忆才能够限制它到一定的范围内。

认证双方如果具有同样的识别知识体系,则可以把同一篇文章翻译成大致相同的结果。这里的组合数非常巨大,根据知识体系而不同。

难以被攻击。

_________________________________________________________________________________

_________________________________________________________________________________

_________________________________________________________________________________

_________________________________________________________________________________

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="64cc96ef89faaaebcf1b3e7a"+"_"; </script> | 评论(0) | 浏览(7) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-13 05:34

 

一、原问题的产生

1、谁懂规则,谁就认证通过。

2、假设一个客户一次认证要消耗10条规则,那么大量并发认证时的消耗的规则数量将相当巨大。

3、客户端和服务端拥有相同的规则集,元规则集(如在冲突时选择规则的规则),推理集,冲突消解策略,工作存储器组织结构。

4、所以,必须是具有以下基础:客户端和服务端能自动生成同样的新规则。

5、生成新规则的原意是采用单向函数:A -> B,Hash(A), Hash(B)组成新的规则。

6、来源于“基于知识的认证”,客户端拥有和服务端同样的规则集、推理集等,就认证通过。

 

二、新方法

1、规则的左部和右部都是随机产生。是按照算法的规定产生。

在客户端和服务端同时通过检索INTERNET方式(见链接:

http://hi.baidu.com/ftai/blog/item/2299ab3450e054b4d1a2d327.html记录了生成随机数的方法。

还需要考虑在INTERNET或者LAN上,如何采集信号信息来生成随机数。)

计算生成新规则的左部和右部时,只会生成同样的随机数,换句话说,

客户端和服务端会各生成同样的一条规则RS1和RC1。两条规则的左部是同样的随机数,两条规则的右部是同样的随机数。

 

 

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="338cfe1919c5d879dbb4bddb"+"_"; </script> | 评论(0) | 浏览(4) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-10 21:00

一、访问控制客体类型可扩展性框架研究

二、访问控制规则集根据客体的自适应调整策略研究

三、基于固定访问控制规则的主体应用软件重用模型研究

四、基于通用实验目的的访问控制客体形式和内容研究

五、基于规则的典型访问控制模型的安全性研究

六、基于PKI的访问控制模型信任机制研究

七、在访问控制规则中对安全区域的描述形式的分析

八、基于PKI的访问控制分阶段模型研究

九、访问控制算法的可证明安全分析

十、一种访问控制的可信度模型的建立

十一、一种基于PKI的CA信任链查询方法

十二、访问控制规则的一种形式及其实现

十三、访问控制规则库的完整性研究

十四、一种基于PKI的软件防火墙模型

十五、基于PKI的数字证书认证通用过程研究

十六、一种数字证书的并发模型

十七、从数字证书中获取公钥的方法

十八、用VC++6设计基于服务器的公私密钥对管理系统

十九、一种访问控制规则的在线更改机制及安全性评价

二十、访问控制系统的快照问题

二十一、访问控制规则集的可移植性模型

二十二、访问控制系统的划分原则

二十三、访问控制系统的可靠性保证措施,如镜像,日志等

 

 

 

___________________________________________________________________________

______________________________________________________________________________________

______________________________________________________________________________________

下面谈谈主体和客体的概念。

这里谈的都是通用的访问控制模型。

客体可以是拥有或控制的“资源”的一个或一组程序。“资源”的内容一般包括《操作系统》教材中所列出的下列资源:处理机;存储器资源;外设;可运行程序等。

这些“资源”通常是分布式的,即可能分布在网络的各个客户机和各个服务器上。

主体了解和掌握访问客体及其资源的方法,并能在某种程度上

(这样说,一是因为和人的验证不同,二是主体并不了解关于客体资源信息的全部)

自动确认是否得到了资源。

同样,主体也是绑定了(用户信息,主体控制的、用来访问控制的程序)的混合体。主体一般是按照安全系统所设的“访问控制规则”来访问客体的。

______________________________________________________________________________________

一、访问控制类型可扩展性框架研究

解释:能访问哪些类型的资源,面向未来的资源,建立处理类型的框架。

二、访问控制规则集根据客体的自适应调整策略研究

解释:客体变化了,访问控制规则集如何跟着调整。

 

三、基于固定访问控制规则的主体应用软件重用模型研究

解释:规则固定,主体程序根据扩展的需求进行重新设计。

四、基于通用实验目的的访问控制客体形式和内容研究

解释:不针对特定目的和领域的访问控制,要做这样的实验和模型研究,需要设计怎样的客体。

 

______________________________________________________________________________________

五、基于规则的典型访问控制模型的安全性研究

解释:一般的访问控制模型是根据规则进行的,即有POST产生式形式:如果 条件C,那么 动作A。

安全性的一般内容有:机密性,完整性,可用性,拒否认性。这是冯登国博士介绍的吧。

访问控制的实现,本身与可用性有关。

如果再来谈访问控制系统本身的安全性,有类似于“嵌套安全”的意思。

六、基于PKI的访问控制模型信任机制研究

解释:有几重意思。一是基于PKI用于访问控制,二是CA的信任机制。

七、在访问控制规则中对安全区域的描述形式的分析

解释:如果涉及跨安全区域的访问,规则的左部和右部必须对安全区域进行描述。

八、基于PKI的访问控制分阶段模型研究

解释:强调PKI,强调将基于PKI的访问控制划分成阶段。虽然一般的访问控制操作用户是感觉不到时间开销的。

______________________________________________________________________________________

九、访问控制算法的可证明安全分析

解释:借鉴一下成型的例子,CPU的访存操作怎样保证其安全性。比如,为什么要设置TLB,为什么要设置CACHE,为什么要提命中率HIT RATE,为什么要有RAR,RAW,WAR,WAW,为什么要有透写,为什么有写直达等。

联想到,待访问命中的资源,有其“坐标系”,也有其作用的描述。

访问控制过程,也有记录。

十、一种访问控制的可信度模型的建立

解释:PKI有信任链机制。此题的访问控制系统,可嵌入PKI机制。

十一、一种基于PKI的CA信任链查询方法

解释:你说是PKI信任的,那么证明给我看:CA的信任链是怎样的?

十二、访问控制规则的一种形式及其实现

解释:对规则的左部和右部进行描述,也就是对触发规则的条件,和规则触发后所引起的动作,的描述。

______________________________________________________________________________________

十三、访问控制规则库的完整性研究

解释:一个语义是规则本身是否符合完整性的要求,二是,例如主体和客体发生了变化,涉及到的规则其内容是否要改变。

十四、一种基于PKI的软件防火墙模型

解释:一是基于PKI,二是隔绝外部对内部,内部对外部的某些访问。三是或者将访问引向安全的区域和安全控制的资源。

十五、基于PKI的数字证书认证通用过程研究

解释:见《十、网址》分类中,微软的一个网页。

十六、一种数字证书的并发访问模型研究

解释:100个用户同时访问张三的证书,准备同他通信。

十七、从数字证书中获取公钥的方法

解释:数字签名是用CA的私钥,希望通信的李四,用CA的公钥对证书解密,可验证是CA签发的,并获得张三的公钥。

话是简单,设计什么算法,使得对按数量级(如100个以下,10000个以下,10000个以上)

解密签名证书分别比较快。

或者,解密还设计成要额外信息,帮助快速、准确地解密。

十八、用VC++6设计基于服务器的公私密钥对管理系统

解释:WINDOWS SERVER服务器环境。密钥本身要保密。要按权限允许访问。要认证。

管理内容包括:生成,失效,验证,删除,延期……

十九、一种访问控制规则的在线更改机制

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="0499edf8fe5eb80cd9f9fd90"+"_"; </script> | 评论(0) | 浏览(3) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-12-02 18:55

毛博士语:“即使是该领域的专家,按照标准文档,遵循普遍认为很好的设计准则,甚至熟悉各种典型协议缺陷,认证协议的设计仍然是极容易出错的。”

在Dolev-Yao威胁模型中,主动攻击者有如下特征:

·他能获得经过网络的任何消息

·他是网络的一个合法使用者,因而能够发起与任何其他用户的对话

·他有机会成为任何主体发出信息的接收者

·他能够冒充任何别的主体给任意主体发消息

因此,在上述威胁模型中,发送到网中的任何消息都可看成是发送给主动攻击者处理的。

换句话说,可认为主动攻击者完全控制了网络。

主动攻击者做不了的事情:

·不能猜到从足够大空间中选出的随机数

·没有正确的密钥(或私钥),主动攻击者不能由给定的密文恢复出明文;对于完善的加密算法,主动攻击者也不能从给定的明文构造出正确的密文

·主动攻击者不能求出私有部分,比如,与给定的公钥相匹配的私钥

·主动攻击者虽然能够控制我们的计算和通信环境的大量公共部分,但一般他不能控制计算环境中的许多私有区域,如访问离线主体的存储器

 

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="2c8cf5de8be2585795ee372a"+"_"; </script> | 评论(0) | 浏览(11) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-11-10 09:52

POST规则的问题,是自1993年起,就有过接触的。

一、规则的内容,很值得研究。

规则的实现,也值得考虑。

规则的形式,早晚会变得复杂.如嵌套规则。

现在的访问控制规则,主要的操作,就是屏蔽掉一些访问。

二、又和入侵检测有关联

1、但它和入侵检测有什么样的关联?

 

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="890c64d9f8c3ca2f11df9b95"+"_"; </script> | 评论(0) | 浏览(8) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-11-02 06:53

1,超链接,提供链接信息。认证通过,可访问

2,知道用户名和密码知识,便通过认证。知道更多一点知识呢?

3,X通过HASH函数得到Y,但求不出HASH函数。X不是数,是向量,图形,其它类型数据,或者是信号,是“信息”呢?有没有通用的图形比较认证程序的问题。比较快。如先压缩。这种压缩算法。

3、1、通过耳麦的认证。本地一定要先处理音频和视频,否则,如果是大批量认证,认证服务器的速度跟不上。

4,认证失败。

通常是给出一个网页。

需要一个一揽子解决方案。

5,口令试探,在有试探次数限制的条件下。

似乎有点傻:“我让你试三次”。

6,认证攻击。

7,口令强度的衡量。

与口令分析(即口令攻击)算法和方法有关。

8,人工登录和应用程序自动申请认证。

有存在这种需要的地方:某子程序AUSUB负责为总体程序申请认证、申请操作系统资源。总体程序运行到这一步,就调用AUSUB去认证。认证通过的话,总体程序可获得操作系统资源。

9,自动生成认证程序,与别的自动生成。

是特殊用途(认证)的自动程序生成系统。要有需求分析。希望有自适应性,来适应认证服务器端程序的改变。最好还有进化功能,适应环境,适者生存。可同时生成几个认证“人工生命”,进化。呵呵。

10,用户友好:根据什么确定认证的优先级。

 

11,认证进程的资源策略

12,在线认证服务器的添加

13,自动程序的多级认证

14,认证和AC的集成,如交叉,如资源共享(包括进程)

15,认证过程中的状态

16,并发认证的可串行化

17,认证协议,认证数据包 最好采取什么结构(通过路由器网络的)

18,保证认证持续进行的因素

19,认证的进度问题

20,客户CLIENT-1认证通过后,分配一个ID号,便于操作,识别

21,认证过程的可观察性,在需要人为介入时

22,认证过程的可控制性

23,认证过程的可测试性

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="d2e020977254b46e54fb96ff"+"_"; </script> | 评论(0) | 浏览(12) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-10-29 21:07

基于访问控制的问题
1、 现有的复杂访问:虽然可能不会亲历各种复杂访问,但可从对INTERNET的存取和被控制,引伸出一些复杂的访问模式。INTERNET就是为了方便人的操作,所以设计者自然而然会仿照人类一些复杂的访问操作。
2、 如何给访问的复杂性评价:有一个平台,有一些评价的指标,这对各种AC都不一样。如果给访问控制的复杂性进行标准化的评价,在用户使用、设计者设计时,有一个参考。
3、 将来的新增的访问:INTERNET的AC显然是复制了人类的一些活动,又不完全一样。有的INTERNET访问操作,完全是人操作的“极限运动”,并不依照通常人的操作实践。
4、 不同的访问之间:比如多个用户并发访问同一域名的多个网站的多个服务。


5、 访问序列之间:访问序列之间对记录或文件(这时暂提文件,实际上更广泛的是“编程的资源”)进行不同的RAR,RAW,WAR,WAW(读与写)。
6、 访问之后目标变更的记录:还有一个访问操作对多个目标进行访问,形成一个结果,可能是中间的结果。题所指,一是指修改了目标。
7、 访问目标与数据库访问的异同:数据库的访问存取已经非常标准化了,例如基于SQL语言的。那么具体的AC对具体的目标,也可以如DB那样进行理论分层、分视图等。
8、 访问目标的确定:服务器端如何根据访问语句确定目标。


9、 跨安全区访问进程:安全区设定也有好坏。设定安全区后,跨安全区的访问就有各种不同于通常AC的访问控制。
10、 访问进程的生成、就绪、挂起、退出:访问控制是发起者和目标方的共同计算能力作保障的,同时,显然有输入和输出。是一个自动机。或者说,是模拟自动机,或者说,可模拟和类比于自动机。有各种状态。这种状态的表示,是怎样的呢?
11、 访问进程和访问线程:生成线程,不一定是由程序生成。而是设计出类似于线程的、把访问控制细分的“线程”。目的是更好(这个“好”,有哪些指标?)地完成访问控制的目标。
12、 不同的软件工具对访问的实现在底层的区别

首先,“流行”的软件很“牛”,不存在“混合编程”的可能。

其次,有数据库的“查询优化”,也就会有通用信息目标的“访问优化”、“控制优化”。

又次,对访问时间和空间以及其它开销指标影响比较显著的地方,的代码,要专门衡量、专门比较。比如,比较VC和J2EE在协同设计的图形操作方面的功能。
13、 如何评价访问的有效性

一般现在的情况,都是由发起程序这方的用户(人)来衡量,是否达到了访问控制的目的。显然,有些关于是否达到了存取控制要求的信息,可以由用户编程来实现,即由程序“代理”来判断是否访问控制目的实现了。
14、 访问的中断和现场的恢复

访问操作经常是一个N维空间上的序列。被打断是很可能的。

在初初考虑这种技术时,应该可以从数据库上的LOG,ROLLBACK,COMMIT,ABORT借上劲。因为在DDB中,这些技术已经非常成熟,经过了时间和市场的考验。
15、 一揽子访问进程包包含几种几次的访问序列

可以说是前面某点关于“复杂访问控制”的另一种问法。

访问进程包:编程,由程序代理自动按照访问序列进行访问。想当然的是,一个两个访问,还好处理,如果是涉及到一个人要掌控成百上千的访问时,就不得不依靠程序代理来实现。

为什么称为程序代理呢?一是因为它有相当的智能,二是因为可能是分布的、并行的、如MOBILE AGENT的。
16、 访问策略制定者和访问控制进程本身的控制、监控、审计

策略的制定,是凭经验吗?还是有如软件工程般的规范,有流程,可操作性强。

进程问题,在大规模用户和广域网络上,不对访问控制项目相关因素本身进行监控,那么,所做的,就如空中楼阁,结果也很可能南辕北辙、沿木求鱼。
17、 现有几种资源系统中访问目标的分类

对待访问资源进行分类的必要性是显然的。象华为的矩阵管理,显然此分类越详细越好,可能是多维的,而不是直线思维地认为,要么黑,要么白。具体的资源很多,可能要CLASSIFIED,要抽象。可能要象面向对象一样,把成员函数和成员数据包含在一起。
18、 访问的冲突

争夺同一资源的同一“颗粒”(暂如此称呼,意指资源的更细微的划分,可能是每个指令访问的对象)。
19、 来自本地和异地的访问冲突的确定和控制

这种访问冲突,和CSMA/CD的,和电信号的冲突,都不一样。

在访问控制中,两个或多个不同的访问,是完全可能因多种原因引起冲突的,值得大书特书:-)。
20、 来自同一地的访问冲突的确定和控制
21、 来自不同或相同安全区访问冲突的确定和控制,及策略和算法、模型
22、 访问控制和多级门限

如如何确定访问没有越权。一般是ACL,但现实中的访问,会有多级门限。过了一道,访问资源A,再过一道,才能访问资源B。
23、 访问控制许可的阈值

允许访问程度和范围的量化,不可能凭经验。
24、 访问控制信息在网络安全传输的协议

(1)建立会话密钥。(2)(客体/地址/目录/文件/记录,操作)对。(3)考虑不安全通道。(4)逻辑通道的建立和拆除。(5)协议格式,数据格式,校验格式。(6)发起者发出,客体拥有者发出的。(7)机密性、完整性、真实性、拒否认性、可用性,这些目标能达到。(8)对协议的攻击。(9)对比已有类似协议,所作的改进。
25、 访问控制信息的安全特性保护

由发起端,到CHANNEL,到目标端,信息是PLAIN的,它不能自我保护。一定要设置保护机制,要有安全性评价。
26、 嵌套访问控制

简单的想法,是一段访问代码嵌入了另一段访问代码。还有,有些结果是可以在目标端计算后,只送给最终结果,而不是初始访问数据。
27、 并发访问控制的可串行化、原子性、ASID(I 独立性、D 持续性)

(1)来自于国防科技大学《分布式数据库DDB(影印版教材)》的“事务”的基本属性ASID。

(2)并行操作的效果,可用相应的串行操作实现。

(3)并行访问:多个发起人,多个客体,多个通道,多种AC协议,时间序列,空间阵列,类数据库属性,
28、 访问控制相关的大量的、复杂的时间特性
29、 访问控制相关的大量的、复杂的空间特性

(1)如何用单机模拟?(2)时间特性:访问起止时间,(发起者,客体,访问持续时间),分时间片,

30、访问控制系统的层次划分

31、访问控制系统放到周围环境中的问题(一系列)

32、访问ABORT(流产),COMMIT(提交)的标准及制定的原则

33、自动将访问流程细分成几个步骤,其原则

34、针对具体资源系统(WINDOWS,LINUX,UNIX,XENIX,SCO UNIX,SUN SOLARIS),采用同一访问控制策略,在实现过程中,会有怎样的不同

35、平行的访问控制过程之间的关系,对资源的交叉利用

36、访问控制过程的原语

37、访问控制的设计原则,及评价

38、对访问控制发起者和目标的控制

39、访问控制的基准测试程序BENCHMARK,以验证某个访问控制能否达到预期的结果

40、如何恢复被中断的访问控制过程

41、访问控制过程的状态图,如OS的 套刺 肌J巧婕暗蕉喾降淖刺 ?/p>

42、访问控制系统的可控性、可观察性、可测试性

43、访问控制系统需要用硬件来部分实现吗?什么情况下,需要使用硬件电路、板卡、ASIC CPU?

44、访问控制并行操作的可串行化,可验证

45、访问控制和其他类似的操作,如分布式存储管理系统、机群存储管理系统,之间的联系

46、使用访问控制系统RUN ANY TIME,ANY WHERE,需要什么保证。如果有非预期的关键操作不能实现,则对访问控制系统本身的价值,会打一个大大的问号。

47、访问控制系统可否实现自调整等计算智能的因素,例如根据需要调整对资源的控制

48、还是计算智能

49、访问控制算法

50、访问控制算法的正确性、完备性、一致性(同样的条件下的访问控制应该获得同样的目标中的资源)证明

51、访问控制用户的优先级划分

52、访问控制的博弈和均衡:对于多个发起者争夺目标方的“临界资源”(Critical resources,套用《操作系统》的术语),是某种博弈,不可能在“限制条件”下,每个参与者的要求都得到满足。虽然,和博弈(决策论)的称呼一样,但具体需要看访问控制系统的智能Intelligence的程度。

53、访问控制中AGENT的使用:有Belief,Desire,Intention信念这些比较玄乎的东西的AGENT可能比较难。

但MAS(Multiple Agent System)之间的协同、协调理论和技术,再加上协同学理论,还是有必要的。

54、访问控制与进化:不说进化吧,发起者和目标方的计算机智能环境在变化,资源方面的问题也在变化,需要自适应。

类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="52d4b5de3a28535bcdbf1aef"+"_"; </script> | 评论(0) | 浏览(5) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
2007-09-27 00:36
一、基于角色的访问控制PETRI网模型研究
二、RBAC访问控制模型的约束描述语言研究
三、面向工作流系统的统一访问控制模型
四、P2P网络自服务访问控制协议设计
五、基于角色的工作流多层访问控制安全模型
六、基于属性的WEB服务访问控制模型
七、基于策略的WEB服务访问控制研究
八、基于剩余容量估算的访问控制
九、WEB服务协同环境下个性化访问控制框架的实现
十、一种基于XML SCHEMA的安全访问控制策略
十一、
类别:一,访问控制与认证,ids,硕士课题 | 编辑 <script language="javascript" type="text/javascript"> </script> | 删除 <script language="javascript" type="text/javascript"> allkey +="2432c81b4742c8f9ae513351"+"_"; </script> | 评论(0) | 浏览(39) <script language="javascript" type="text/javascript">var tps = " ";x++;document.getElementById("fArea").id = "fArea" + x;document.getElementById("fArea"+x).innerHTML = tps;</script>
 
<script language="javascript" type="text/javascript"> function setpv(allnum) { var num = allnum.split('_'); var h=num.length-1; for(i=0;i [首页] 1 [2]  [下一页] 
   
 
 
文章存档
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
<script language="javascript" type="text/javascript"> document.write(' '); </script>
 
   
 
最新评论
  
<script type="text/javascript"> var x=0;var html=""; function writecmt(cmturl,cmtname){ if(cmturl==""){ html = " "+cmtname+""; }else{ html = " "+cmtname+""; } document.write(html); } </script>
 
<script type="text/javascript"> <!-- writecmt("http://hi.baidu.com/damaxiaoyi","大蚂小蚁"); //--> </script> 大蚂小蚁
Maximum Segment Size 的作用是什么啊
 
<script type="text/javascript"> <!-- writecmt("http://hi.baidu.com/nengke110","nengke110"); //--> </script> nengke110
能在自己的专业,拼搏,很是羡慕,预祝你成功!
 
<script type="text/javascript"> <!-- writecmt("http://hi.baidu.com/wenren12345","wenren12345"); //--> </script> wenren12345
高手啊!
崇拜得五体投地,
以后有问题还希望先生指点一二。
呵呵~虽然我是学文的。...
 
   
<script type="text/javascript"> var hstr="/ftai/brwstat?key1=15"; document.write("
参与评论 您还未登录,请先 登录 后发表或查看评论
安装.NET Framework失败后上网找的卸载工具,亲测卸载后可以完成安装.NET Framework。 一下位介绍: ====================== 分享可以完美卸载.NET Framework 1.0~4.5的framework卸载工具。.NET Framework几乎是系统比不可少的运行组件,特别是现在越来越多的软件都需要.NET Framework运行库的支持。例如本站给大家分享的coreldraw x6安装程序,就必须要.NET Framework 3.5、.NET Fra...... yinshu 分享可以完美卸载.NET Framework 1.0~4.5的framework卸载工具。.NET Framework几乎是系统比不可少的运行组件,特别是现在越来越多的软件都需要.NET Framework运行库的支持。例如本站给大家分享的coreldraw x6安装程序,就必须要.NET Framework 3.5、.NET Framework 4.0运行库的支持才可以安装及运行。 但最近有一台电脑,.NET Framework 4.0死活安装不上可能是以前不完整安装造成的,想把Framework卸载了重新安装,结果系统自带的卸载工具还卸载不了,甚是头疼,后来找到这款专业的.net framework卸载工具:cleanup_tool才终于把net framework请出电脑,然后再次安装.NET Framework 4.0成功。 NET Framework卸载工具 .NET Framework Cleanup Tool软件简介 .NET Framework Cleanup Tool是一个专用于卸载、清除掉计算机中不同版本.NET框架的免费小软件。支持所有语言的.NET。它能删除.NET相关的文件,并且还能自动将对应的文件夹、注册表项目和Windows Installer文件全部删除。 使用.NET Framework Cleanup Tool,基本可以将电脑还原到未安装.NET框架时的状态。因此,当你发现.NET不能正常更新,或是无法删除、甚至于重新安装不起作用时,试试这个小软件。 如何卸载framework cleanup_tool支持.NET Framework 1.0~4.5卸载,虽然是英文版的,不过使用简单,只要运行后选择你需要清除的.net framework版本或者选择卸载全部.NET Framework版本,然后点击“cleanup now”按钮即可开始执行清除作业,过程会持续一到两分钟即可完成framework卸载。 特别注意:net framework框架并不是无用的东西,现在很多程序都需要net framework环境才能运行,所以建议你只有当.NET Framework损坏或者安装不上新版本时才考虑卸载重装。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

ftai08

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值