兼容FF&IE的滚动代码

[不指定 2007/01/04 23:27 | by ipaddr ]
[code]
<table width=250 border=0 bgcolor=F6F6F6 style="margin-top:15;border:1px solid #F2F2F2" height="150">
<tr>
<td height="100px">

<div id="scrollcont" style="overflow:hidden;height:100px;" onmouseover="scrolling=1" onmouseout="scrolling=0">
<div id="scrollcont1">
My Name is tomzhou! <br>
Hello,ipaddr<br>
Hello,bcomcn <br>
My Name is tomzhou2! <br>
Hello,ipaddr2<br>
Hello,bcomcn2<br>
</div>
<div id="scrollcont2"></div>
</div>

</td>
</tr>
</table>
<script>
var scrolling=0;
var t=scrollcont.scrollTop;
scrollcont2.innerHTML=scrollcont1.innerHTML;
function scrollShow()
{
   if (scrolling==1)  return;
   if (scrollcont2.offsetTop-scrollcont.scrollTop<=0)
    scrollcont.scrollTop-=scrollcont1.offsetHeight;
   else
     scrollcont.scrollTop++;
}
setInterval(scrollShow,50);
</script>

[/code]

其中,100px是滚动区域的高度,宽度由scrollcont的外面容器决定,setInterval里面的50决定滚动的速度。

Cyrus SASL Libary学习

[不指定 2007/01/02 14:52 | by ipaddr ]
(1) 什么是SASL和Cyrus SASL

SASL (Simple Authentication Security Layer) is an Internet standards-track method for remote computers to authenticate. The Cyrus SASL library makes supporting various SASL mechanisms easy for both client and server writers.

The Cyrus project is the implementation of an enterprise mail system by the Carnegie Mellon University Computing Services Department. We are interested in scalable, easy to administer systems.

(2) Cyrus SASL组成部分

SASL是一个胶合(glue)库,通过这个库把应用层  与 形式多样的认证系统整合在一起。这有点类似于 PAM,但是后者是认证方式,决定什么人可以访问什么服务,而SASL是认证过程,侧重于信任建立过程,这个过程可以调用PAM来建立信任关系。

应用层

应用层是SASL库的使用者,既可以是客户应用程序,也可以是服务应用程序,或者两者都是(在代理的情况下)。应用层负责SASL认证协商的连线和传达,具体的认证交给SASL库。应用层的例子有Cyrus IMAPd,OpenLDAP,Sendmail,Mutt,sieveshell,cyradm等。

SASL胶合层(Glue Layer)

负责如下的工作:
加载插件;
从应用层获取必要的认证属性,以选择适当的认证机制(或者限制可用的认证机制);
给应用层列出可用的插件;
为特定的认证请求选择最好的认证机制;
在应用层和被选的认证机制间路由认证数据;
为应用层提供SASL协商信息,比如认证的用户,请求的认证ID,安全层的强度等。

SASL还提供一些别的服务给应用层和插件,一些是常用的工具,比如MIME Base64编码解码,随机数生成;还有一些是和认证相关的,比如口令验证服务。

最后,SASL还允许应用层和认证机制层访问两种特殊类型的插件:Auxiliary Property或者 auxprop插件,它提供了简单的数据库接口,可返回用户属性,比如口令,home目录,邮件地址等;Username Canoicalization,提供了一个站点相关的用户正名服务(使用户名称规范化),或者其他的任务.

SASL认证机制(SASL Mechanisms)

有三种类型的机制:
Password Verification Mechanisms - 接收远程的口令,传递给SASL胶合层,由口令验证器验证,这种机制的例子有PLAIN;
Shared Secret Mechanisms - 不是直接传递口令明文,而是服务方发起一个认证,客户证明自己知道这个口令,这需要服务方和客户方都保存有口令.这种机制的例子有CRAM-MD5,DIGEST-MD5以及SRP;
Kerberos Mechanisms - 使用信任的第三方来验证客户。

Auxiliary Property(auxprop)

为胶合层提供数据库服务,Cyrus SASL支持两种auxprop插件:SASLdb和SQL。auxprop通常用于共享密码机制。

Username Canonicalization

不是很常用,一般用于为应用层提供用户的规范名称。

口令验证服务

根据用户名和口令的明文,判断是否验证正确。口令验证服务器通过SASL选项pwcheck_method来选择,有两类主要的口令验证器:
auxprop - 使用auxprop插件获取口令,比较和用户提供的口令是否相符;
saslauthd - 呼叫saslauthd服务进程,验证用户。saslauthd支持很多识别方式,比如PAM,LDAP,Kerberos数据库等。

(3) SASL 术语

认证ID(Authentication identifier)和授权ID(Authorization identifier)

userid(user id, authorization id) - 用户ID,授权ID,说明执行操作的授权个体。
authid(authentication id) - 认证ID,证明某人确系某人。

比如小王休假,小李暂时接替他的工作。那么为了有小王的权限,小李认证时使用自己的帐号,即authid,执行具体的操作时需要有小王的user id,这样才能做他的工作。

一般userid和authid是相同的。

Realms

A realm is an abstract set of users and certain mechanisms authenticate users in a certain realm.

最简单的情况是单服务单机器的情况,realm就是FQDN(Full-qualified domain name),如果应用层没有提供,则很多SASL机制采用默认的。

如果要多机共享口令,则通常选择域名,比如CMU.EDU。单个站点也可以支持多个不同的realms。为了把不同realm的用户加入sasldb,可以在saslpasswd2命令中用u选项,SQL插件通过宏'%r'在查询串中加入realm。

(4) SASL工作流程

PLAIN机制,sasl_checkpass(),以及明文口令

auxprop - 根据auxiliary property插件提供的userPassword属性验证用户,数据库通常保存在/etc/sasldb2;
saslauthd - 通过saslauthd验证用户,-a选项指示saslauthd的具体机制,-n指示saslauthd的线程数;
Courier-IMAP - 通过Courier-IMAP的authdaemond检查口令,类似于saslauthd;
pwcheck - 使用独立的辅助服务进程来验证;
write your own - 自己写一个验证方式。

共享密码机制

CRAM-MD5和DIGEST-MD5使用这种机制,注意,这些方式不能使用saslauthd。如果不想用这些方式,可从插件目录移走这些插件,或者用mech_list禁用它们。

为了简单起见,SASL库把口令的明文形式保存在/etc/sasldb2中。

Kerberos mechanisms

The Cyrus SASL library also comes with two mechanisms that make use of Kerberos: KERBEROS_V4, which should be able to use any Kerberos v4 implementation, and GSSAPI (tested against MIT Kerberos 5, Heimdal Kerberos 5 and CyberSafe Kerberos 5). These mechanisms make use of the kerberos infrastructure and thus have no password database.
Applications that wish to use a kerberos mechanism will need access to a service key, stored either in a "srvtab" file (Kerberos 4) or a "keytab" file (Kerberos 5). Currently, the keytab file location is not configurable and defaults to the system default (probably /etc/krb5.keytab).

The Kerberos 4 srvtab file location is configurable; by default it is /etc/srvtab, but this is modifiable by the "srvtab" option. Different SASL applications can use different srvtab files.

A SASL application must be able to read its srvtab or keytab file.

OTP机制和基于OPIE的OTP

The Cyrus SASL library also supports the One-Time-Password (OTP) mechanism. This mechanism is similar to CRAM-MD5 and DIGEST-MD5 in that is uses a shared secret and a challenge/response exchange. However, OTP is more secure than the other shared secret mechanisms in that the secret is used to generate a sequence of one-time (single use) passwords which prevents reply attacks, and that secret need not be stored on the system. These one-time passwords are stored in the /etc/sasldb2 database. See the Shared secrets mechanisms section for a discussion of the /etc/sasldb2 database.

For sites with an existing OTP infrastructure using OPIE, Cyrus SASL can be configured to use OPIE v2.4 instead of using its own database and server-side routines. OPIE should be configured with the --disable-user-locking option if the SASL server application will not be running as "root".
OPIE uses its own "opiekeys" database for storing the data necessary for generating the server challenges. The location of the opiekeys file is configurable in SASL; by default it is /etc/opiekeys, but this is modifiable by the "opiekeys" option.

A SASL server application must be able to read and write the opiekeys file.

(5) 如何配置选项

缺省配置文件保存在/usr/lib/sasl2/App.conf里,这里App.conf为应用层名字,比如Sendmail为/usr/lib/sasl2/Sendmail.conf。

标准的Cyrus SASL配置文件类似于:

srvtab: /var/app/srvtag
pwcheck_method: saslauthd

应用层可重新定义SASL库的选项,这因应用层而异,比如Cyrus imapd保存配置文件为/etc/imapd.conf。

(6) Cyrus SASL 测试

Cyrus SASL库带了两个测试程序:sasl2-sample-server和sasl2-samle-client,分别对应着服务程序和客户程序,可对SASL的配置进行测试。两个程序都带了三个参数:

-p TCP监听或者连接的端口号,缺省为12345
-s 服务名称,缺省为rcmd
-m 认证的机制

此外sasl2-sample-client还要求有一个服务程序主机名称或者IP地址的参数。

首先我们给测试服务程序提供一个配置文件,sample.conf,保存在/usr/lib/sasl2目录下,内容如下:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: plain login ntlm cram-md5 digest-md5
然后我们给sasl2db(在/etc/sasldb2)添加测试帐号,比如marchday:

[root@research sasl2]# saslpasswd2 -c marchday
Password:
Again (for verification):
然后我们启动服务程序:

$ sasl2-sample-server -p 9000
打开另一个终端窗口,进行测试:

$ sasl2-sample-client -p 9000 -m PLAIN localhost
如果没别的问题,应该可以看到successful authentication。^_^

你还可以测试别的Mechanisms,这里就不再举例了。

参考资料:
http://www.sendmail.org/~ca/email/cyrus/sysadmin.html

http://asg.web.cmu.edu/sasl/
Cyrus SASL Library Documatation

以Sendmail为例:

应用程序------>SASL 为客户服务的配置/usr/lib/sasl2/Sendmail.conf
      pwcheck_method:pam
      pam---->/etc/pam.d/smtp.sendmail
                    ---->
                     #%PAM-1.0
          auth       required     pam_stack.so service=system-auth
          account    required     pam_stack.so service=system-auth
为APP提供选择具体的认证方法的机会,认证中介、认证代理....
把swf文件属性设置成透明,在flash参数里面加上,如果你用dreamweaver,选中那个swf文件,属性面板上会有一个“参数...”按钮(在面板的最下面),点一下,在弹出框里左边“参数”下面加上wmode,对应右边的值输入transparent,确定后就可以了

或者,直接在Flash的Object里面,加上:
<param name="wmode" value="transparent">

SpamAssassin的简单应用

[不指定 2006/12/26 23:18 | by ipaddr ]
这里我们只讲SpamAssassin的简单应用,就是利用SpamAssassin的规则集把垃圾邮件标注为垃圾邮件,然后在客户端outlook用策略把带有垃圾邮件字符的邮件自动转移到垃圾邮件目录。

参看文章
CCERT中文垃圾邮件过滤规则集
(http://www.ccert.edu.cn/spam/sa/Chinese_rules.htm)

试验环境:redhat9.0
前提条件:已经安装好qmail,本文已经搭建的环境是qmail+vpopmail+igeus

1:安装SpamAssassin
安装方法1:直接通过CPAN安装
perl -MCPAN -e shell
install Mail::SpamAssassin

2:自己编译安装
去http://spamassassin.apache.org下载最新版本的软件

解压后:# perl Makefile.PL
# make
# make install

# 进行一个spam和non-spam的测试
在spamassassin源文件目录:
spamassassin -t < sample-spam.txt > spamtest.txt
less spamtest.txt
spamassassin -t < sample-nonspam.txt > nospamtest.txt
less nospamtest.txt
spamtest.txt文件在主题一段中将包含"*****SPAM*****" 这一行, 而nospamtest.txt文件中则没有.
(默认读取/etc/mail/spamassassin/local.cf配置.)

如果make过程中报错,可以参看此文解决相关问题http://blog.5ilinux.com/archives/2005/07/spamassassin.html

3:配置local.cf文件
# vi /etc/mail/spamassassin/local.cf

# How many hits before a message is considered spam.
required_hits           9.5

# Text to prepend to subject if rewrite_subject is used
rewrite_header Subject  *****垃圾邮件*****

# Encapsulate spam in an attachment
report_safe             1

# Enable the Bayes system
use_bayes               1

# Enable Bayes auto-learning
bayes_auto_learn        1

# Enable or disable network checks
skip_rbl_checks         1
use_razor2              0
use_dcc                 0
use_pyzor               0

# Mail using languages used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_languages            all

# Mail using locales used in these country codes will not be marked
# as being possibly spam in a foreign language.
ok_locales              all

关于SpamAssassin的配置文件,可参考SpamAssassin 3.x 配置指南(中文版)
(http://anti-spam.org.cn/references/index.php?Action=Show&ID=9)

4:下载垃圾邮件中文规则集
wget -N -P /usr/share/spamassassin www.ccert.edu.cn/spam/sa/Chinese_rules.cf

5:qmail和SpamAssassin的结合

在SpamAssassin 3.x 的spamc 目录下编译qmail-spamc
# cc -O -o qmail-spamc qmail-spamc.c
# install -m 755 qmail-spamc /var/qmail/bin

# ln -s /var/qmail/bin/qmail-queue /usr/bin/qmail-queue

编辑 /etc/tcp.smtp 如下
127.:allow,RELAYCLIENT=""
:allow,QMAILQUEUE="/var/qmail/bin/qmail-spamc"

然后:
tcprules tcp.smtp.cdb tcp.smtp.tmp < tcp.smtp

在编译目录spamd目录下
mv  redhat-rc-script.sh /etc/rc.d/init.d/spamd

启动spamd
/etc/rc.d/init.d/spamd start

这样SpamAssassin会根据规则集自动判断垃圾邮件,把认为潜在可能的垃圾邮件打上****垃圾邮件****的标,一目了然,至于客户端outlook怎么设置策略自动转移垃圾邮件,就不用我说了吧。

Qmail的Maildir++补丁的小错误

[不指定 2006/12/25 22:18 | by ipaddr ]
好久没有用过qmail了,近日安装一台qmail邮件服务器,在一阵Patch,make setup check后出错,编译不通过!提示如下:

[code]
overmaildirquota.c:32: warning: data definition has no type or storage class
overmaildirquota.c:33: error: parse error before '}' token
overmaildirquota.c:36: error: redefinition of `ret_value'
overmaildirquota.c:32: error: `ret_value' previously defined here
overmaildirquota.c:36: warning: data definition has no type or storage class
overmaildirquota.c:37: error: parse error before '}' token
make: *** [overmaildirquota.o] Error 1
[/code]

语法错误,这问题有点奇怪,之前用Redhat9安装,没出现过此类问题.

网上搜了一下,发现原来是某些gcc加强了语法的检测,以前允许定义字符串常量跨行,现在跨行的话,必须使用\,

而在Maildir++的补丁的overmaildirquota.c里面,有这么一行:

[code]

static const char rcsid[]="$Id: overquota.c,v 1.0 2002/06/09 16:21:05 mr
sam Exp $";

[/code]

在mr后面就换行了,CentOS4.4的gcc 编译不通过,

你需要改成:

[code]

static const char rcsid[]="$Id: overquota.c,v 1.0 2002/06/09 16:21:05 mrsam_patchByIpaddr Exp $";

[/code]

(删除后面的回车,将字符串常量改成一行即可.)

再次编译通过.

Apache的Rewrite心得

[不指定 2006/12/20 18:43 | by ipaddr ]
Apache的Rewrite心得

最近公司要转移服务器,服务器上有几十个站点正在运行,希望转移的期间,服务不受影响,所以用Apache的mod_rewrite做了些处理.
大致环境是这样的,服务器有site[1-50].TA.com域名和site[1-50].TB.com域名,在开始转移服务器之前,先将site[1-50].TB.com指向新的服务器IP,同时,在新的IP上,运行Apache,将siteX.TB.com的访问Rewrite回TA.com,经过一天后,再将TB.com解析到新IP,同时,转移数据库和WEB服务到新IP,并将原来的服务器上的Apache Rewrite到SiteX.TB.com,访止部分用户缓存了DNS,导致仍然访问原服务器。

Rewrite写法大致如下:

[code]#加载mod_rewrite
LoadModule rewrite_module modules/mod_rewrite.so

#打开mod_rewrite
RewriteEngine On
#开启Log(用于调试)
RewriteLog "logs/rewrite.log"
RewriteLogLevel 9
#只将siteX,demo,support开头的域名做Rewrite
RewriteCond %{SERVER_NAME} ^(site|demo|support) [NC]
#在URI前面加上主机名
RewriteRule ^(.+) %{SERVER_NAME}$1 [C]
#将这台服务器的所有xxx.TA.com/*转到xxx.TB.com/*
RewriteRule  ^([a-z0-9]+)\.([0-9a-z\.]+)/(.*)  http://$1\.TB\.com/$3 [NC,R,L][/code]

如果Apache配置了虚拟主机的话,这个配置应写入默认虚拟主机的配置。

mod_gzip on Windows

[不指定 2006/12/20 18:33 | by ipaddr ]
This one was a difficult one to Google through (kept finding old 1.3 Apache stuff), even though the process itself is pretty quick, so I thought I'd record what I did to get mod_gzip running on Apache 2.0.48 for Windows.

1) Downloaded the zip file with the built DLL from Index of /development/apache/httpd-2.0/win32/modules
2) copied mod_gzip.so into my Apache modules directory
3) copied the settings from my_cfg.txt (contained in the zip file) into my httpd.conf
4) Got a copy of zlib.dll. Placed this in my apache bin directory.
5) Restarted the server

Web Page Analyzer verified that gzip was working and also reports that I'm about 50K lighter on the HTML (20K versus 70K).

TaskKill&TaskList的使用

[不指定 2006/12/15 08:58 | by ipaddr ]
WindowsXP,Windows2003下面有两个命令行工具可以用来列出进程和杀死进程,他们是Taskkill,Tasklist,用法分别如下:

CVSNT在Linux下面的安装和配置

[不指定 2006/11/25 12:56 | by ipaddr ]
CVSNT在Linux下面的安装和配置

CVSNT是一个非常不错的CVS软件,通常是在Windows平台下使用,但Linux,Soliras等平台下也可以使用,并且有完全可替找Linux平台下的cvs软件,同时,还有些特殊的功能.
本文主要讲述如何在Linux下安装CVSNT
CVSNT的rpm的安装包,您可以在这里下载:
http://www.march-hare.com/cvspro/
源码可在这里下载:
http://www.cvsnt.org/wiki/Download
另外,官方的Linux安装文档,可参考:
http://www.cvsnt.org/wiki/InstallationLinux
(ipaddr原创,转载请注明)

以下是在RedHat上源码安装和配置CVSNT的过程
首先,需要删除当前系统中的cvs
rpm -e cvs

1.从网站下载源码并解压
2
../configure
make
make install

3
在源码目录有几个程序可以使用,拷到对应目录即可:

cp redhat/cvslockd /etc/init.d/cvslockd
cp redhat/cvsnt-xinetd /etc/xinetd.d/cvsnt
由于源码安装在/usr/local/bin下面,所以,需要修改以上两个文件中,将所有/usr/bin/cvsnt改成/usr/local/bin/cvsnt,

将/usr/bin/cvslockd改为/usr/local/bin/cvslockd
或者用ln -s /usr/local/bin/cvsnt /usr/bin/cvsnt创建软链接.

cp redhat/cvsnt-pam /etc/pam.d/cvsnt
(注意,cvsnt-pam一定要改成cvsnt)

4.
设置自启动
chkconfig --add cvslockd
chkconfig cvslockd on
ntsysv
将xinetd,cvsnt设置为自启动

5.
启动cvslockd
/etc/init.d/cvslockd start

6.
mkdir /var/cvs/
mkdir /var/cvs/iManage

cvs -d :local:/var/cvs/iManage init
(需要先启动cvslockd)

修改/etc/cvsnt/PServer,将Repository0Name=/var/cvs/iManage改为/iManage,另外,可参考PServer.example增加一些配置.

7.
增加一个cvs组,增加多个用户,并设置用户属于cvs组
groupadd cvs
useradd cvs -g cvs
useradd tomzhou -g cvs
useradd readonly -g cvs
useradd ipaddr -g cvs

passwd & chsh cvs users

8.
chown -R cvs.cvs /var/cvs
chmod -R g+w /var/cvs

重启后,用户即可使用tomzhou,ipaddr,readonly之类的用户登录系统.

9.
如果使用虚拟用户的话,需要如下设置:
groupadd cvs
useradd cvs -g cvs
useradd cvsadmin -g cvs
passwd cvsadmin

chown -R cvs.cvs /var/cvs
chmod -R g+w /var/cvs

将cvsadmin加入到/var/cvs/iManage/CVSROOT/admin中(这个文件默认没有)
(在admin文件里面的用户,被当做这个Repository的管理员)

export CVSROOT=:pserver:cvsadmin@localhost:/iManage
cvs login
cvs co CVSROOT

cvs passwd -r cvs -a vitualUserOne
cvs passwd -r cvs -a VirualUserTwo
cvs passwd -r cvs -a cvsadmin

cd CVSROOT
将config中的UseSystemUser=no
提交修改到CVS
cvs ci

之后,只能用虚拟用户登录了,不可以用系统用户登录.虚拟用户使用系统用户cvs存取文件系统.

其它配置请参考CVSNT文档.

什么是 UpnP?

[不指定 2006/11/23 13:04 | by ipaddr ]
什么是 UpnP?
答:通用即插即用 (UPnP) 是一种用于 PC 机和智能设备(或仪器)的常见对等网络连接的体系结构,尤其是在家庭中。UPnP 以 Internet 标准和技术(例如TCP/IP、HTTP 和 XML)为基础,使这样的设备彼此可自动连接和协同工作,从而使网络(尤其是家庭网络)对更多的人成为可能。

UPnP 对消费者意味着什么?
答:简单、更多选择和更新颖的体验。包含通用即插即用技术的网络产品只需实际连到网络上,即可开始正常工作。实际上,UPnP 可以和任何网络媒体技术(有线或无线)协同使用。举例来说,这包括:Category 5 以太网电缆、Wi-Fi 或 802.11B 无线网络、IEEE 1394 ("Firewire")、电话线网络或电源线网络。当这些设备与 PC 互连时,用户即可充分利用各种具有创新性的服务和应用程序。

什么是 UPnP 论坛?
答:“通用即插即用论坛”是一个开放式业界协会,成立于 1999 年 6 月,旨在帮助定义 UPnP 标准以简化家庭(长远上讲则是企业)智能设备的联网。为实现上述目标,该论坛正在制定和公布 UPnP 设备控制协议及服务控制协议。截止到 2001 年 6 月初,已有 350 多家公司成为 UPnP 论坛的成员。UPnP 论坛受由 22 名成员组成的 UPnP Steering Committee(UPnP 指导委员会)的管理。此外还设立了技术委员会、市场推广委员会及各种工作委员会(分别面向某种特定的设备),旨在努力实现该机构的目标。有关论坛成员的列表及加入论坛的信息,请见论坛 Web 站点。

UPnP 的技术要素是什么?
答:UPnP 范围广泛,原因是它面向的是家庭网络、临近网络及小型企业和商住楼中的网络。在网络控制设备的管理下,它支持任何两个设备之间的数据通讯。UPnP 不依赖于特定的操作系统、编程语言或物理媒体。

UPnP 支持零配置网络及自动查找功能,这样以来,设备即可动态加入网络,获取 IP 地址,宣布自己的名称,根据需要提供功能,并了解其它设备的存在和功能。DHCP 和 DNS 服务器为可选项。只要在网络上可用,即可加以使用。此外,设备还可自动平稳地脱离网络,而不会遗留任何不必要的状态。

UPnP 汲取了 Internet 的成功之处并继承了它的组件,包括 IP、TCP、UDP、HTTP 及 XML。UPnP 中涉及了多供应商之间的协作,旨在建立标准的设备控制协议(DCP)。与 Internet 类似,这些协议以公告式线协议为基础,表示为 XML 形式,且通过 HTTP 进行通讯。
谈到Upnp在internet上的应用,也就产生下面的疑问??UPnP NAT Traversal (也就是路由器上的那个设置全称)
UPnP 支持零配置网络及自动查找功能,这样以来,设备即可动态加入网络,获取 IP 地址,宣布自己的名称,根据需要提供功能,并了解其它设备的存在和功能。DHCP 和 DNS 服务器为可选项。只要在网络上可用,即可加以使用。此外,设备还可自动平稳地脱离网络,而不会遗留任何不必要的状态。
UPnP 汲取了 Internet 的成功之处并继承了它的组件,包括 IP、TCP、UDP、HTTP 及 XML。UPnP 中涉及了多供应商之间的协作,旨在建立标准的设备控制协议 (DCP)。与 Internet 类似,这些协议以公告式线协议为基础,表示为 XML 形式,且通过 HTTP 进行通讯。
问:什么是 NAT?为什么使用它?
答:“网络地址转换”是一种 Internet Engineering Task Force (IETF) 标准,用于允许专用网络(使用专用地址范围,例如 10.0.x.x、192.168.x.x、172.x.x.x)上的多台 PC 机或设备共享单个、可全局路由的 IPv4 地址。经常使用 NAT 的一个主要原因就是 IPv4(最新一代 Internet)地址的资源日渐紧缺。
在构成公用 Internet 与专用局域网之间屏障的网关设备中,可以使用 NAT。当专用局域网的 IP 数据包经过网关时,NAT 将把专用 IP 地址和端口号转换为公用 IP 地址和端口号,从而跟踪这些转换以保持各个会话不变。Microsoft® Windows® XP 和 Windows Me 操作系统中的“Internet 连接共享”及许多 Internet 网关设备都使用 NAT,尤其是在通过 DSL 或电缆调制解调器连接宽带网的情况下。随着越来越多的家庭和小型企业将自己的 PC 机连接起来并共享 Internet 连接,NAT 的使用量正急剧增加。
问:NAT 的问题在哪?
答:简言之:NAT 会“瓦解”许多家庭或小型企业中日渐需要的最新型 PC 和家庭网络技术,例如多玩家游戏、实时通讯及其它对等服务。如果在公用 Internet 上使用专用地址或同时使用同一端口号,这些应用程序就会中止。应用程序必须使用公共地址,且每个会话都须使用唯一的端口号。大型机构有专门的 IT 人员来确保其公司应用程序在 NAT 上正常使用,但较小的机构和消费者却不具备这样奢侈的条件。UPnP NAT Traversal 可以自动解决 NAT 给应用程序带来的许多问题,使之成为小型企业和消费者理想的解决方案。
问:谁提出的 NAT Traversal 解决方案?
答:NAT Traversal 解决方案是 UPnP IGD Working Committee 为制定 Internet 网关设备 (IGD) 规范所从事工作的一部分。UPnP 的成员公司可以加入该委员会,也可以只选择跟踪其工作进展。委员会的主席是 Intel 公司的 Prakash Iyer (prakash.iyer@intel.com)。许多公司,包括 Microsoft,都在为此而努力。
问:是否有其它途径来解决 NAT Traversal 的问题?如果有,为什么将 UPnP 视为最佳选择?
答:是的,确实有其它途径来解决此问题,但目前还没有其它机制来作为解决该问题的业界标准,从而能对消费者自动实现,而对开发人员则普遍可行。其它方案或者要求用户进行人工干预,或者要求 Internet 网关设备制造商进行专门的开发,并要求软件开发人员处理 NAT Traversal 对特殊应用程序的需要。因此,只有 UPnP 能解决该重大问题。
用户的工作: NAT Traversal 的手工干预法要求用户使用浏览器(PC 机上一种基于图形用户界面的工具)或 PC 上的命令行界面工具来更改家中 Internet 网关设备上的某些设置。尽管有些热衷技术的用户不会有很大困难,但许多用户却感到困难重重。此外,许多用户甚至不知道 NAT Traversal 问题正对其 Internet 服务的使用造成干扰。用户可能想体验一种多玩家游戏或使用其它某些对等服务,却发现由于某种原因而无法连接。这会导致用户采取疑难解答步骤、寻求电话支持、感到不满,甚至以后不打算使用新的服务或不打算尝试新的技术感受。
开发人员的工作: 为避免要求用户手动解决此 NAT Traversal 问题,有些 Internet 网关设备制造商已编写出应用层网关支持,并将其包含到设备中。该应用层网关软件的设计思路是特殊的应用程序。换言之,设备制造商将编写和测试特殊的代码,自动使一个应用程序完成 NAT。如果该应用程序软件进行了更新,则设备制造商所编写的应用层代码将必须重新进行更新和测试。当只需要考虑几个对等或相关的应用程序时,这种一对一解决 NAT Traversal 问题的方式对于设备制造商而言是可管理的,但它无法对数百或数千个应用程序伸展自如,这时不仅开发成本高,并可能需要有关这些应用程序各自原理方面的知识。解决该问题较好的方法就是让设备制造商为设备添加能理解 UPnP 的软件或固件,然后让其它设备和软件能利用同一技术与 NAT 设备进行通讯。现在只有 UPnP 能够完成这种职责。
问:UPnP NAT Traversal 解决方案的作用是什么?
答:支持 UPnP 的 NAT Traversal 可确保下列情况的实现:
多玩家游戏
对等连接
实时通讯
远程协助(Windows XP 的功能之一)
对于 IHV 而言,该解决方案免去了编写和维护应用层网关 (ALG) 数据库以通过 NAT 的必要。它受 Windows XP 和 Direct Play(一种 Windows 编程资源)的支持,因此为 DPlay 编写的软件应用程序将能自动对 NAT Traversal 使用 UPnP 解决方案。
通过提供下列操作的方法,UPnP 论坛的 IGD 规范可进行自动 NAT Traversal:
了解公用 IP 地址
列举现有的端口映射
添加和删除端口映射
指定映射的租用期
问:哪些制造商在实施 UPnP NAT Traversal 解决方案?
答:目前,大多数大型网关(DSL/电缆路由器)制造商都宣布计划从 2001 年(不迟于 7 月份)在提供的产品中实施 UPnP NAT Traversal 解决方案。其中包括:Microsoft(WindowsXP 中)、Linksys、D-Link、Intel、Netgear and Buffalo Technology 及 Arescom。
其中的一些制造商已宣布将为已拥有其设备的用户提供固件或软件升级,从而为支持 UPnP 的 NAT Traversal 提供支持。
问:用户怎样才能知道哪些 Internet 网关设备支持 UPnP?
答:用户可以查阅 Internet 网关设备制造商的 Web 站点,或者阅读产品包装上的标签,以确定是否提供该功能。后面几个月内,有些零售商将会知道这个情况。在未来的几个月中,UPnP 论坛会提供一个 UPnP 徽标。制造商可以在自己的产品包装、营销资料或产品上包含该徽标,以表明该产品满足 UPnP 论坛的测试要求。
开启路由器的Upnp提高P2P速度的理论依据:
首先区别以下内网和外网。
什么是内网及外网呢?
区别方法很简单—使用56K、ISDN、ADSL等MODEM直接拨号上网的用户就是外网用户,其分配的IP地址就是ISP服务器分配的IP地址,这类用户目前很少存在ISP的限制,亦很少存在BT下载速度减慢的问题。而通过路由器(含ADSL路由器、宽带路由器、无线路由器等等)或交换机再接入宽带网络的用户就是内网(局域网内)用户,其单机分配的IP地址多为10.x.x.x、172.16.x.x至172.31.x.x、192.168.x.x。这类用户包含所有的通过宽带接入互联网络的有线局域网用户、无线网络用户,而如果您的无线网络又是通过FTTX+LAN将家用局域网再接入互联网络的话,那你就是内网中的内网用户。

   使用无线路由器后,由adsl接入,没有无线路由器之前,一直为外网,接了无线路由器建立家庭无线局域网以后,变为内网,内网的特点就是无法对外打开监听端口,因此会损失所有外部发起的连接。比如硬件路由器、Windows网络共享等等。外网用户和内网用户在使用BT下载时的区别是—外网用户的上网计算机得到的IP地址是Inetnet上的非保留地址,外网的计算机Internet上的其他计算机可随意互相访问;内网的计算机以NAT协议,通过一个公共的网关(就是上网计算机得到的Inetnet上的非保留地址)访问Internet,内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。这样内网用户在进行BT下载时便可能会出现无法下载或速度很慢的问题。
开启UPnP功能
 
什么是UPnP自动端口映射?
UPNP的全称是Universal Plug and Play。UPnP规范基于TCP/IP协议和针对设备彼此间通讯而制订的新的Internet协议。UPnP已经在WindowsXP中得到了支持(见微软文档),并在MSN Messenger中得到了应用。目前支持UPnP的操作系统是WindosXP,网关设备包括WindowsX的Internet连接共享和防火墙及支持UPnP的DSL和Cable路由器。
   事实上,UPnP的制定正是希望未来所有联入Internet中的设备能够不受网关阻碍的相互通信,对于所有的P2P软件而言运用好“UPnP”协议可以提高上网速度,BT下载亦是如此。哪些用户需要开启UPnP功能?首先,外网用户(直接拨号上网的用户)不需要,内网用户必需。其次,对于内网用户而言,已手动为P2P下载软件进行了端口映射(例如在使用比特精灵下载时在“用户列表”中有“远程”字样,或者使用eMule连接服务器成功后显示为高ID等,都表示已成功进行了端口映射),也可不需要,但如果你有多款P2P软件在同时使用,建议您还是首选UPnP来自动端口映射,使用更方便更彻底。
分页: 12/20 第一页 上页 7 8 9 10 11 12 13 14 15 16 下页 最后页 [ 显示模式: 摘要 | 列表 ]