如何往NS2中添加新的MAC协议.txt

如何往NS2中添加新的MAC协议.txt,第1张

如果我们要往NS2中添加自己的模块,那么我们至少要实现两个类:

一, 首先要有一个类继承自TclObject类或者其子类,例如这个Mac802_16类的继承关系为:TclObject/NsObject/Mac /Mac802_16.这个类里面实现了C++类里面的变量与Otcl类的变量的绑定关系,以及我们的模块要实现的一系列算法等等,这个类负责的就是协议 的实现。

这个类,一般需要有构造函数中执行变量的绑定,使用bind()函数,将Otcl变量与C++的成员变量绑定起来。

声 明为protected的command()函数:为Otcl类提供方法,对Otcl中的类的方法进行翻译并执行;对于没有考虑到的或者不能解析的命令, 调用该C++类的父类的command方法。当在Otcl类中调用某个方法时,首先去tcl类中查找并执行该方法;若查找失败,则在该Otcl类对应的 C++类的command方法中查找,若查找仍然失败,则沿着该类的父类一直往上找,尝试调用它们的command方法;若所有父类的command方法 都不能解析,则报告该命令无法执行。

其他的成员变量和成员函数,这是用于实现自己的算法模块的内容。

二,其次我们要定义一个声明为static的类,继承自TclClass类,这个类实现了C++环境里面的类与Otcl环境里面的类的关联,简单点来说,这个类负责与Otcl环境进行关联。取最开头的那段代码

static class Mac802_16Class : public TclClass

{

public:

Mac802_16Class() : TclClass("Mac/802_16") {}

TclObject* create(int, const char*const*)

{

return (new Mac802_16())

}

} class_mac802_16

这 一段代码里面,包含了一个将Otcl的类名作为参数传给其父类的构造函数;一个create方法:创建一个C++类的对象实例并返回;该方法的返回类定义 为TclObject*。C++类的类型包含在create方法中,Otcl类的类型包含在TclClass类的构造函数中,因此可以实现C++类和 Otcl类的连接。

接下来,如果我们要实现的类完成以后,将头文件和源文件放置于~ns目录下自己新建的一个子目录,然 后打开~ns/Makefile文件,将“类名.o”添加到该Makefile的OBJ_CC宏定义中,对ns进行编译的时候就能够能够找到该模块的源文 件并将其编译到ns中;如果类中定义了一些变量,打开~ns/tcl/lib/ns-default.tcl文件,为该类对应的Otcl类设置一些初始 值。最后,对Makefile执行指令:make clean,make,对整个ns重新编译,我们的模块就可以添加到ns2中了。

Berkeley Internert Name Domain(BIND)是我们所熟知的域名软件,它具有广泛的使用基础,Internet上的绝大多数 Py`<W

DNS服务器都是基于这个软件的。BIND目前由ISC(Internet Software Consortium)负责维护,具体的开发由 7! J"|RRH*

Nominum(www.nominum.com)公司来完成。下面编译的这个常见问题集就是由该公司所发布的(同时也见于 @W(6pyQd

http://www.isc.org/bind),可以说,它具有较强的针对性和实用性。 VgkSh*^i

1) 哪里可以找到BIND? j 9|KD

BIND以源码的格式发布。当前的版本为BIND 9,不过BIND 8.2.2-P5仍然是广泛发布的版本。考虑到早期版本的安全问 FGX G7vl

题,如果您还在运行比8.2.2-P5更早的版本,那么我们强烈推荐您升级软件。 RB2/TwDZ%

以下的URL包括了源码和其他相关资源的链接,你可能会觉得很有用处: &]L~(kL

http://www.isc.org/products/BIND/ I4o^<P+

源码也可以使用ftp从ftp://ftp.isc.org/isc/bind/src/8.2.2-P5/bind-src.tar.gz 获得。 'f Vw$0W

镜像BIND的ftp服务器列表和其它ISC维护的开发源码软件可以在ftp://ftp.isc.org/isc/MIRRORS上找到。 `1N.=W

2) 怎样安装BIND? l.%B,bUg

下载源码到一个空的目录。如果你需要的话,你也可以下载文档和捆绑的包。 OqOA*AnNK[

接下来,你需要解压(unzip)和解包(untar)发布的包。 <n1],wY

gunzip <bind-src.tar.gz | tar xf - w0_x\

然后,你需要编译和安装软件。常见src/INSTALL以获知指令。在安装之前请备份系统,因为安装可能会覆盖旧的二进制 a_$ Xi

代码;这是依赖于系统的。 W"$w57

如果你是从BIND 4转过来的,那么你需要将配置文件named.boot转成新的语法。这里包含了一个转换程序。 Q-! |C

named-bootconf }(y

</etc/named.boot w1'SM}J%

>/etc/named.conf 9JEC+]6

同时,如果你正从BIND 4转换而来,那么系统启动脚本需要进行修改,以使之查找/etc/named.conf,而不是 z$Tk?0*a

/etc/named.boot。 f o+-<s

接着,你需要终止老的named并启动新的。 TD:^&o+

kill -TERM tF /[A-

ndc start [#yE)| Q

检查系统日志(在大多数Unix系统上,错误都存放在/var/adm/messages中),因为当前的版本比先前的版本容错性会差 g^|3F2j

一些。 cw%V0r

3) 哪里有基于NT的BIND? {}x.lWT-

最新的基于NT的BIND可以从ftp://ftp.isc.org/isc/bind/src/8.2.2-P5/bind-src.tar.gz上的8.2.2p5源码中找 R zsW2.&

到。你应该能够使用WinZip来解压/解包8.2.2p5文件。一旦解压了源码,你会在src/port/winnt目录下找到NT的移植程 ]NcAW6"

序。你需要Visual C++ 6.0来编译它。 lyh=!F*X4

4) 哪里可以找到有关BIND的信息? l,wcUi

先从http://www.isc.org/products/BIND/开始。 DA #S

对于BIND用户,有一个可用的邮件列表。使用http://www.isc.org/services/public/lists/bind-lists.html上的表 sw*ryaPHw

单订阅。在你提交你的问题到邮件列表之前,请检查邮件列表的档案以查看是否你的问题已经回答过了。可搜索的 gPoZfV

bind-users邮件列表档案位于http://www.isc.org/ml-archives/bind-users/。 p6ba)>r

Bind-users邮件列表同时指向了中等的Usenet新闻组comp.protocols.dns.bin.你可以在http://www.deja.com/上搜 <SjBK\.>

索该新闻组。 )6=~|6c^

BIND的"圣经"是DNS and BIND,Third Edition,作者:Paul Albitz和Cricket Liu。 - ]*R[}a8p

5) 为什么我应该升级BIND到最新的版本? b>NV)

最新的BIND版本解决了在以前版本中发现的bug和/或安全漏洞。 V)]OHyC6{

6) 我现在使用的是BIND的什么版本? ohF8Rfr/2

有几种方法可用来确定你正在使用什么版本的BIND。请注意有一些是针对于特定 *** 作系统的,而其它一些不能在早于 b>\F K

4.9.5的BIND版本上工作。我们会在下面的描述中指明这些限制。 5pB5KCV

● 最简单的告知版本号的方法是查找named启动时写到系统日志文件中的消息。例如: #I Q1

Jul 14 12:54:21 ns named[15677]: starting. named 8.2.2-P5 !\cM,+6R

Jul 14 12:54:21 hostmaster@ns1.nominum.com:/usr/sbin/named C<ruBa9Z

● named带"-v"开关会显示版本: 0Hq N[ @

# named -v ''dfa<5%I

named 8.2.2-P5 Thu Jul 20 17:19:57 PDT 2000 g-qJi ~6#

hostmaster@ns1.nominum.com:/usr/sbin/named lM _

● 当使用更新版本的BIND时,BIND的name后台守护程序的控制接口程序可以提供版本信息: *${\w`H

ndc status (+-S_A(o

● 源代码控制系统(SCSS)的"what"命令提供了文件的标示信息。 Bh(iA\/

what /named e5r8_50ut|

以下命令当在运行BIND 4.9.5及以上版本的服务器上检查时会起作用。这两个程序都包括在BIND的发布版本中。 "$CYOoa

●nslookup _|h1

# nslookup h*Hd>W>_

Default Server: ns.yourco.bogus (?j47Ts

Address: 333.333.333.333 _K)pf

>set class=chaos veqLn/o

>set type=txt ["?u S

>version.bind @c.rC090

Server: ns.yourco.bogus "^L%]

Address: 333.333.333.333 i3ovFUs(

VERSION.BIND text = "8.2.2-P5" x]OiQL%jz

〉 cf1V^v3

●dig :.hnR&>r

dig version.bind txt chaos @ server name z$X1,h.\U

或者 W*1?87<'r

dig @ server name txt chaos version.bind ^f$7t

7) 我得到一个错误提示:No default TTL set using SOA minimum instead.为什么会这样?怎么办? D3rJ0m7[

从BIND 8.2开始,你需要一条$TTL指示来设置域的默认TTL。可在域的SOA记录之前添加一条'$TTL XXXXXX'指示。 .X Xv2R

(XXXXXX表示计算到秒的默认TTL.) ..s6$i#@

8) 主机名可使用哪些有效字符? IG/*CJ}@

主机名可以包括字母,数字以及连字符,但不能以连字符开头。下划线(_)在主机名中不是有效的字符。尽管有一些DNS ^b{

服务软件包可以允许下划线在主机名中出现,但大多数是不行的。使用一个带有下划线的域或者主机名会导致大多数 @em=?gla

Internet上的名字服务器不能识别相关的主机/IP地址。 s5Av"Jy:k

9) 为什么当我在本域中的一台主机上使用nslookup时会得到non-authoritative的答复? Q*z"m |

这通常发生在域(zone)文件中有错误出现的时候。检查系统日志文件'messages'以查证错误。 GtZ(rVA0F/

10) 我已经修改了自己的域,但是在Internet上的其它地方看不到这种改变,为什么? nE8IaTpT

每当你修改了你的域文件,例如当你添加或者修改了主机记录的时候,你也必须更新域的SOA记录的文件版本,或者是 ]Bl.m:vMc

"serial number",因为名字服务器从你的服务器检索信息时需要知道发生了修改。如果从上次查询之后版本号没有修 q6BW*<

改,就不会执行更新。举例如下: Dl6]iB

foo.com. DuBX\E`{

$TTL 14400 |6p ^Gz.H,

@ IN SOA o.8J#XJP*

someplace.foo.com. admin.foo.com. ( K$i<D) c

1 this file's version -- change I2NfG ~9 J

43200 refresh twice a day yj~cD9:(e

1800 retry refresh every 15 minutes yj->X7}+'

604800 expire after 1000 hours (over week) Ve\2#Yh

259200 ) minimum TTL of 3 day t~?^o!Q

显而易见,带'file's version'的行是我们想要修改的。版本序号可以为任何数字;1,2,3,4或者2001,2002, ngx6}[tgV

2003,等等。唯一的限制是版本号不能多于10位。在这个示例中,如果你对域文件作了修改,你需要将版本序号改为 TSBSfc4zu

'2'。 $g_TCdN%

11) 为什么没有IP地址? ((${Ea1

在/etc/resolv.conf中没有名字服务器记录。 4o _G ,/G_

12) 在我的日志文件中出现的"lame server"错误是什么? Aa]0IY'7jp

"lame server"指的是不能确信其是否具有域的授权的服务器。如果你有lame server,或者是授权给了lame server的 I<zvq!Z)

域,那么"lame server"消息很有用。如果你宁愿不看到"lame server"消息,你可以使用logging语句丢弃它们: YbA ]9uB

logging { X TDb R]

category lame-servers{ null}$=?:-f5

}LOFv5H4I

13) Microsoft Windows 2000和BIND的关系怎样? MFY813 `

BIND默认会检查所有记录以确保只在需要主机名的地方使用了主机名,这能够防止意外的一致性问题。 <+\&u7x*

Microsoft Windows 2000使用一个称为"_msdcs"来存放动态目录数据。尽管这种子域不会与合法的主机名产生不一致, p\9x[9:iR1

但是也使得在子域中存放非法的主机名成为可能。这种主机名的使用默认是被BIND拒绝的。 @YS osEk}

动态目录希望在_msdcs中有"全局目录(global catalog)"(例如,gc._msdcs.example.com),这默认是拒绝的。为了解 Q/&"5rvC

决此问题,我们推荐动态目录设为独立的域(例如,"_msdcs.example.com")并配置成不检查非法的主机名。这应该是合理 -'Z ~(su

的,因为Window 2000服务器创建这些数据,而且不应该会与其它希望访问这些数据的Windows 2000机器产生不一致问 iIaj )ihQI

题。 })7p M`a

例如, WI:kRt1

zone "_msdcs.example.com" { >x=?UPe8

type master}26- @:

file "_msdcs.example.db"JCbt$6Tv

check-names ignore@eaD5'$bt)

allow-update { localnets}ec?mz?

}sU QfN{:

14) 什么是TSIG key? (+5m(CvN

TSIG key提供了一种鉴别和验证交换的DNS数据有效性的方法,它在解析器和服务器之间或者两台服务器之间使用一个密 cy_*

钥。 Z lY<!

15) 我怎样使用TSIG key来动态更新我的DNS? 1vB(T!9%

首先你需要使用以下命令生成一个TSIG密钥(我们将使用tsig-key作为密钥文件名): (+zhM'Z

dnskeygen -H 128 -h -n tsig-key。 Vh#X8 S 4

这会生成一对密钥文件: AvU =D$a

'Ktsig-key.+157+00000.key',这是一个ASCII文件,它包括以下行: YML|F

tsig-key. IN KEY 513 3 157 <$u32YI H.

awwLOtRfpGE+rRKF2+DEiw== t 9 O*rv

和 rmbW3!bh

'Kvip-key.+157+00000.private' ,这包括: N&-tX$iLa5

Private-key-format: v1.2 Algorithm: 157 (HMAC) .bkk{&*{

Key: awwLOtRfpGE+rRKF2+DEiw== i5:W'g1b?

你将需要获取base64编码的密钥awwLOtRfpGE+rRKF2+DEiw== 并在配置你的服务器命名设置中使用它。例如: J,6Ir/f"b

key tsig-key. { algorithm hmac-md5secret "awwLOtRfpGE+rRKF2+DEiw=="}rkn#b:Dxq

zone "ddns.dregis.com" { 3K|*Bd()t

... 0z]o0= {

... l40iikt

allow-update { key tsig-key. }ImBFtHXYo

} kJVcF)

记得在这之后重启named。 UEPu.#=Q

然后,你需要复制这两个密钥文件到客户系统的某个位置(例如使用/var/named/tsig)。最后,你需要运行以下命令: dC*\GwP

nsupdate -k /var/named/tsig:tsig-key。 FCr\

16) 在named.conf中的'forwarder'选项有何作用? EKH!_!

forwarder行告诉服务器转发所有查询,因为它对另一个域名服务器没有授权或缓冲的数据。

一、服务器不稳定。如果你的建站供应商服务器不稳定,也有可能会导致网站打不开。网站能够正常运行,一个是你要有服务器,另外还要有空间去建站。如果服务器不稳定,就会影响网站加载速度,甚至打不开,经常出现错误。我们现在常用的就是阿里云的服务器,在国内是用的比较多的,基本上不会出现太大的问题。

二、空间到期。因为有制作网站的需要时,注册空间的网站有可能比域名早几天,这个一般找注册的服务商咨询。空间到期网站也无法打开,正常续费就可以了。

三、域名解析不成功。域名注册后,客户只拥有了这个域名的使用权,但无法通过域名直接访问您的网站,这个时候就要做域名的解析,添加选择记录类型为A记录;主机记录为空,或填写www,完成解析,新增解析一般及时生效。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11473070.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存