红叶的技术日志

希望每天能努力多一点

IT博客 首页 新随笔 联系 聚合 管理
  184 Posts :: 9 Stories :: 22 Comments :: 0 Trackbacks

#

双机热备这一概念包括了广义与狭义两种意义。

 从广义上讲,就是对于重要的服务,使用两台服务器,互相备份,共同执行同一服务。当一台服务器出现故障时,可以由另一台服务器承担服务任务,从而在不需要人工干预的情况下,自动保证系统能持续提供服务。(相关文章:为什么需要双机热备? )

 双机热备由备用的服务器解决了在主服务器故障时服务不中断的问题。但在实际应用中,可能会出现多台服务器的情况,即服务器集群。(相关文章:双机软件与集群软件的异同)

 双机热备一般情况下需要有共享的存储设备。但某些情况下也可以使用两台独立的服务器。(相关文章:双机热备的实现模式)

 实现双机热备,需要通过专业的集群软件或双机软件。(相关文章:双机与集群软件的选择)

 从狭义上讲,双机热备特指基于active/standby方式的服务器热备。服务器数据包括数据库数据同时往两台或多台服务器写,或者使用一个共享的存储设备。在同一时间内只有一台服务器运行。当其中运行着的一台服务器出现故障无法启动时,另一台备份服务器会通过软件诊测(一般是通过心跳诊断)将standby机器激活,保证应用在短时间内完全恢复正常使用。(相关文章:双机热备、双机互备与双机双工的区别 )

 

  转载请注明出处:www.ha999.com 双机热备指南

posted @ 2007-11-21 15:53 applezk's IT blog 阅读(304) | 评论 (0)编辑 收藏

前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,尽管他们都为客户做过一些开发,但却对如何为数据库建立适当的索引所知较少,因此我起了写一篇相关文章的念头。

  最普通的情况,是为出现在where子句的字段建一个索引。为方便讲述,我们先建立一个如下的表。

  CREATE TABLE mytable (
     id serial primary key,
     category_id int not null default 0,
     user_id int not null default 0,
     adddate int not null default 0
  );

  很简单吧,不过对于要说明这个问题,已经足够了。如果你在查询时常用类似以下的语句:

   SELECT * FROM mytable WHERE category_id=1;

  最直接的应对之道,是为category_id建立一个简单的索引:

   CREATE INDEX mytable_categoryid
     ON mytable (category_id);

  OK,搞定?先别高兴,如果你有不止一个选择条件呢?例如:

   SELECT * FROM mytable WHERE category_id=1 AND user_id=2;

  你的第一反应可能是,再给user_id建立一个索引。不好,这不是一个最佳的方法。你可以建立多重的索引。

  CREATE INDEX mytable_categoryid_userid ON mytable (category_id,user_id);

  注意到我在命名时的习惯了吗?我使用"表名_字段1名_字段2名"的方式。你很快就会知道我为什么这样做了。

  现在你已经为适当的字段建立了索引,不过,还是有点不放心吧,你可能会问,数据库会真正用到这些索引吗?测试一下就OK,对于大多数的数据库来说,这是很容易的,只要使用EXPLAIN命令:

  EXPLAIN

   SELECT * FROM mytable
    WHERE category_id=1 AND user_id=2;

   This is what Postgres 7.1 returns (exactly as I expected)

   NOTICE: QUERY PLAN:

   Index Scan using mytable_categoryid_userid on
     mytable (cost=0.00..2.02 rows=1 width=16)

  EXPLAIN

以上是postgres的数据,可以看到该数据库在查询的时候使用了一个索引(一个好开始),而且它使用的是我创建的第二个索引。看到我上面命名的好处了吧,你马上知道它使用适当的索引了。


接着,来个稍微复杂一点的,如果有个ORDER BY字句呢?不管你信不信,大多数的数据库在使用order by的时候,都将会从索引中受益。

   SELECT * FROM mytable
    WHERE category_id=1 AND user_id=2
     ORDER BY adddate DESC;

有点迷惑了吧?很简单,就象为where字句中的字段建立一个索引一样,也为ORDER BY的字句中的字段建立一个索引:

   CREATE INDEX mytable_categoryid_userid_adddate
     ON mytable (category_id,user_id,adddate);

   注意: "mytable_categoryid_userid_adddate" 将会被截短为

   "mytable_categoryid_userid_addda"

   CREATE

   EXPLAIN SELECT * FROM mytable
    WHERE category_id=1 AND user_id=2
     ORDER BY adddate DESC;

   NOTICE: QUERY PLAN:

   Sort (cost=2.03..2.03 rows=1 width=16)
    -> Index Scan using mytable_categoryid_userid_addda
       on mytable (cost=0.00..2.02 rows=1 width=16)

   EXPLAIN

  看看EXPLAIN的输出,好象有点恐怖啊,数据库多做了一个我们没有要求的排序,这下知道性能如何受损了吧,看来我们对于数据库的自身运作是有点过于乐观了,那么,给数据库多一点提示吧。

  为了跳过排序这一步,我们并不需要其它另外的索引,只要将查询语句稍微改一下。这里用的是postgres,我们将给该数据库一个额外的提示--在ORDER BY语句中,加入where语句中的字段。这只是一个技术上的处理,并不是必须的,因为实际上在另外两个字段上,并不会有任何的排序操作,不过如果加入,postgres将会知道哪些是它应该做的。

   EXPLAIN SELECT * FROM mytable
    WHERE category_id=1 AND user_id=2
     ORDER BY category_id DESC,user_id DESC,adddate DESC;

   NOTICE: QUERY PLAN:

   Index Scan Backward using
    mytable_categoryid_userid_addda on mytable
     (cost=0.00..2.02 rows=1 width=16)

   EXPLAIN

现在使用我们料想的索引了,而且它还挺聪明,知道可以从索引后面开始读,从而避免了任何的排序。

以上说得细了一点,不过如果你的数据库非常巨大,并且每日的页面请求达上百万算,我想你会获益良多的。不过,如果你要做更为复杂的查询呢,例如将多张表结合起来查询,特别是where限制字句中的字段是来自不止一个表格时,应该怎样处理呢?我通常都尽量避免这种做法,因为这样数据库要将各个表中的东西都结合起来,然后再排除那些不合适的行,搞不好开销会很大。

  如果不能避免,你应该查看每张要结合起来的表,并且使用以上的策略来建立索引,然后再用EXPLAIN命令验证一下是否使用了你料想中的索引。如果是的话,就OK。不是的话,你可能要建立临时的表来将他们结合在一起,并且使用适当的索引。

  要注意的是,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。

  以上介绍的只是一些十分基本的东西,其实里面的学问也不少,单凭EXPLAIN我们是不能判定该方法是否就是最优化的,每个数据库都有自己的一些优化器,虽然可能还不太完善,但是它们都会在查询时对比过哪种方式较快,在某些情况下,建立索引的话也未必会快,例如索引放在一个不连续的存储空间时,这会增加读磁盘的负担,因此,哪个是最优,应该通过实际的使用环境来检验。

  在刚开始的时候,如果表不大,没有必要作索引,我的意见是在需要的时候才作索引,也可用一些命令来优化表,例如MySQL可用"OPTIMIZE TABLE"。

  综上所述,在如何为数据库建立恰当的索引方面,你应该有一些基本的概念了。


一、索引的概念

索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。

二、索引的特点

1.索引可以加快数据库的检索速度

2.索引降低了数据库插入、修改、删除等维护任务的速度

3.索引创建在表上,不能创建在视图上

4.索引既可以直接创建,也可以间接创建

5.可以在优化隐藏中,使用索引

6.使用查询处理器执行SQL语句,在一个表上,一次只能使用一个索引

7.其他

三、索引的优点

1.创建唯一性索引,保证数据库表中每一行数据的唯一性

2.大大加快数据的检索速度,这也是创建索引的最主要的原因

3.加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

4.在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

5.通过使用索引,可以在查询的过程中使用优化隐藏器,提高系统的性能。

四、索引的缺点

1.创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加

2.索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大

3.当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,降低了数据的维护速度

五、索引分类

1.直接创建索引和间接创建索引

直接创建索引: CREATE INDEX mycolumn_index ON mytable (myclumn)

间接创建索引:定义主键约束或者唯一性键约束,可以间接创建索引

2.普通索引和唯一性索引

普通索引:

CREATE INDEX mycolumn_index ON mytable (myclumn)

唯一性索引:保证在索引列中的全部数据是唯一的,对聚簇索引和非聚簇索引都可以使用

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

 


posted @ 2007-11-20 14:07 applezk's IT blog 阅读(416) | 评论 (0)编辑 收藏

5.       Can I have extra ketchup ? /extra packets of ketchup?/extra napkins? /two ketchups?/two more napkins ?/two packets of ketchup ? /join you ?/take your order ?服务员用语:我可以为您点餐吗  ?

6.       McDonald’s买当劳餐厅吃的东西 McChicken 麦香鸡Big Mac麦香堡 McNuggest 麦克鸡块Egg McMuffin满福堡加蛋 a large Coke =a large Coca-Cola 一大杯可口可乐

a milk shake 一杯奶昔strawberry milkshake /strawberry shake草莓奶昔 Vanilla shake   香草奶昔chocolate shake 巧克力奶昔Papayamilk shake木瓜奶昔 a large fries 一份大薯条 a medium fries 一份中薯条a small fries 一份小薯条two small fries 两份小薯条tomato sauce 番茄酱(存的)   two ketchups 两抱番茄酱ketchup =catsup =catchup  For here or to go

餐巾Napkin  Napkin =paper napkin餐巾纸  napkin   tissue paper 棉纸 toilet paper 卫生纸

What flavor would you like ?the flavor is awesome .

What kind of work are you doing ?what would you like ? what would you like to drink ?

posted @ 2007-11-08 16:09 applezk's IT blog 阅读(221) | 评论 (0)编辑 收藏

Step 1:
    使用命令crontab -e编辑一个定时执行的任务或在/var/spool/cron/crontabs目录下新建一个与自己用户名相同的任务.
    即:
    #每隔一分钟执行一次后台程序tmpmail
    * * * * * /home/milch/tmpmail

     顺便提一下crontab中的命令格式:
     第一个 * 表示分钟 (0-59),
     第二个 * 表示小时 (0-23),
     第三个 * 表示月份中的某一天 (1-31),
     第四个 * 表示一年中的某一月 (1-12),
     第五个 * 表示一周中的星期几 (0-6 with 0=Sunday).

Step 2:
     停止cron进程,并重启,
     命令:/etc/init.d/cron stop
     /etc/init.d/cron start

-------------------------------------------------------------------------
指令語法
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }

指令說明
crontab 提供我們在固定的間隔時間執行自訂的程式、系統指令或 shell secrip。時間間隔的單位可以是分鐘、小時、日、週、月及以上的任意組合。允許使用者離線執行,並且可以將執行結果以 email 通知使用者。因此,非常設合對週期性的管理分析或資料備份等工作。

基本上,crontab 的指令格式分為六個部分,前五個為時間間隔,最後則是執行的指令。每一個部分用空格來區隔。

分 -- 0-59
時 -- 0-23
日 -- 1-31
月 -- 1-12 或使用英文名稱
星期 -- 0-7 或使用英文名稱
工作命令 -- 指令,shell script,程式....(建議使用絕對路徑)
以上是 crontab 的基本格式。

選項說明

-u user
以指定的使用者身份,執行 crontab 工作。此選項僅供 root 使用。

-l
顯示使用者現行的 crontab 檔。

-r
移除現行的 crontab 檔。

-e
進入 vi 編輯 crontab 檔(如有設定 VISUAL 或 EDITOR 環境變數,怎使用該環境變數所設定的編輯器來編輯)。在使用者退出編輯器後,會自動將所編輯 crontab 檔,置入 crontab 執行。
相關檔案

/etc/cron.allow
/etc/cron.deny

實例說明
# crontab -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.3672 installed on Thu Jan 1 15:55:18 2004)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
0 0-23/6 * * * /usr/bin/webalizer
30 3 * * * /root/fbin/bak-web
#

先前曾提到,crontab 的格式分成六個部分,前五個是時間參數。在上例中你會發現除了數字與英文名稱,有使用到符號"*",這個符號代表每一單位的意思,譬如 30 3 * * * 既代表 30分 3點 每日 每月 星期的每天。

時間的指定,可以是單一的數字,或幾個數字用逗號來連接。看下例

30 3,12 * * * /root/fbin/bak-web
其中的第二項為 3,12,這代表 3 以及 12 小時的意思。再來看下例

30 */6 * * * /root/fbin/bak-web
我把第二項改成 */6 這代表每 6 小時,也相當於 6,12,18,24 的作用。此外還有一個區段的做法

30 8-18/2 * * * /root/fbin/bak-web
我把第二項改成 8-18/2 這代表在 8 小時到 18 小時之間每 2 小時,也相當於 8,10,12,14,16,18 的作用。
posted @ 2007-10-18 22:46 applezk's IT blog 阅读(10124) | 评论 (6)编辑 收藏

1 tcpmux TCP Port Service Multiplexer  传输控制协议端口服务多路开关选择器
2 compressnet Management Utility     compressnet 管理实用程序
3 compressnet Compression Process    压缩进程
5 rje Remote Job Entry          远程作业登录
7 echo Echo               回显
9 discard Discard            丢弃
11 systat Active Users          在线用户
13 daytime Daytime            时间
17 qotd Quote of the Day         每日引用
18 msp Message Send Protocol       消息发送协议
19 chargen Character Generator      字符发生器
20 ftp-data File Transfer [Default Data] 文件传输协议(默认数据口) 
21 ftp File Transfer [Control]      文件传输协议(控制)
22 ssh SSH Remote Login Protocol     SSH远程登录协议
23 telnet Telnet             终端仿真协议
24 ? any private mail system       预留给个人用邮件系统
25 smtp Simple Mail Transfer       简单邮件发送协议
27 nsw-fe NSW User System FE       NSW 用户系统现场工程师
29 msg-icp MSG ICP            MSG ICP
31 msg-auth MSG Authentication      MSG验证
33 dsp Display Support Protocol     显示支持协议
35 ? any private printer server     预留给个人打印机服务
37 time Time               时间
38 rap Route Access Protocol       路由访问协议
39 rlp Resource Location Protocol    资源定位协议
41 graphics Graphics           图形
42 nameserver WINS Host Name Server   WINS 主机名服务
43 nicname Who Is            "绰号" who is服务
44 mpm-flags MPM FLAGS Protocol     MPM(消息处理模块)标志协议
45 mpm Message Processing Module [recv] 消息处理模块 
46 mpm-snd MPM [default send]      消息处理模块(默认发送口)
47 ni-ftp NI FTP             NI FTP
48 auditd Digital Audit Daemon      数码音频后台服务 
49 tacacs Login Host Protocol (TACACS)  TACACS登录主机协议
50 re-mail-ck Remote Mail Checking Protocol 远程邮件检查协议
51 la-maint IMP Logical Address Maintenance IMP(接口信息处理机)逻辑地址维护
52 xns-time XNS Time Protocol      施乐网络服务系统时间协议  
53 domain Domain Name Server       域名服务器
54 xns-ch XNS Clearinghouse       施乐网络服务系统票据交换
55 isi-gl ISI Graphics Language     ISI图形语言
56 xns-auth XNS Authentication      施乐网络服务系统验证
57 ? any private terminal access     预留个人用终端访问
58 xns-mail XNS Mail           施乐网络服务系统邮件
59 ? any private file service      预留个人文件服务
60 ? Unassigned             未定义
61 ni-mail NI MAIL            NI邮件?
62 acas ACA Services           异步通讯适配器服务
63 whois+ whois+              WHOIS+
64 covia Communications Integrator (CI) 通讯接口 
65 tacacs-ds TACACS-Database Service   TACACS数据库服务
66 sql*net Oracle SQL*NET        Oracle SQL*NET
67 bootps Bootstrap Protocol Server   引导程序协议服务端
68 bootpc Bootstrap Protocol Client   引导程序协议客户端
69 tftp Trivial File Transfer      小型文件传输协议
70 gopher Gopher             信息检索协议
71 netrjs-1 Remote Job Service      远程作业服务
72 netrjs-2 Remote Job Service      远程作业服务
73 netrjs-3 Remote Job Service      远程作业服务
74 netrjs-4 Remote Job Service      远程作业服务
75 ? any private dial out service    预留给个人拨出服务
76 deos Distributed External Object Store 分布式外部对象存储 
77 ? any private RJE service      预留给个人远程作业输入服务
78 vettcp vettcp             修正TCP?
79 finger Finger             FINGER(查询远程主机在线用户等信息)
80 http World Wide Web HTTP       全球信息网超文本传输协议
81 hosts2-ns HOSTS2 Name Server     HOST2名称服务
82 xfer XFER Utility           传输实用程序
83 mit-ml-dev MIT ML Device       模块化智能终端ML设备
84 ctf Common Trace Facility       公用追踪设备
85 mit-ml-dev MIT ML Device       模块化智能终端ML设备
86 mfcobol Micro Focus Cobol       Micro Focus Cobol编程语言
87 ? any private terminal link      预留给个人终端连接
88 kerberos Kerberos           Kerberros安全认证系统
89 su-mit-tg SU/MIT Telnet Gateway    SU/MIT终端仿真网关
90 dnsix DNSIX Securit Attribute Token Map DNSIX 安全属性标记图 
91 mit-dov MIT Dover Spooler       MIT Dover假脱机
92 npp Network Printing Protocol     网络打印协议
93 dcp Device Control Protocol      设备控制协议
94 objcall Tivoli Object Dispatcher   Tivoli对象调度
95 supdup SUPDUP            
96 dixie DIXIE Protocol Specification  DIXIE协议规范
97 swift-rvf Swift Remote Virtural File Protocol 快速远程虚拟文件协议 
98 tacnews TAC News           TAC(东京大学自动计算机?)新闻协议
99 <I>meta</I>gram <I>meta</I>gram Relay       
100 newacct [unauthorized use]


端口:109  
服务:Post Office Protocol -Version3  
说明:POP3服务器开放此端口,用于接收邮件,客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交 换缓冲区溢出的弱点至少有20个,这意味着入侵者可以在真正登陆前进入系统。成功登陆后还有其他缓冲区溢出错误。  

端口:110  
服务:SUN公司的RPC服务所有端口  
说明:常见RPC服务有rpc.mountd、NFS、rpc.statd、rpc.csmd、rpc.ttybd、amd等  

端口:113  
服务:Authentication Service  
说明:这是一个许多计算机上运行的协议,用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多计算机的信息。但是它可作为许多服务的记录器,尤其是FTP、POP、IMAP、SMTP和IRC等服务。通常如果有许多客户通过防火墙访问这些服务,将会看到许多这个端口的连接请求。记住,如果阻断这个端口客户端会感觉到在防火墙另一边与E-MAIL服务器的缓慢连接。许多防火墙支持TCP连接的阻断过程中发回RST。这将会停止缓慢的连接。  

端口:119  
服务:Network News Transfer Protocol  
说明:NEWS新闻组传输协议,承载USENET通信。这个端口的连接通常是人们在寻找USENET服务器。多数ISP限制,只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子,访问被限制的新闻组服务器,匿名发帖或发送SPAM。   

端口:135  
服务:Location Service  
说明:Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和RPC的服务利用计算机上的end-point mapper注册它们的位置。远端客户连接到计算机时,它们查找end-point mapper找到服务的位置。HACKER扫描计算机的这个端口是为了找到这个计算机上运行Exchange Server吗?什么版本?还有些DOS攻击直接针对这个端口。  

端口:137、138、139  
服务:NETBIOS Name Service  
说明:其中137、138是UDP端口,当通过网上邻居传输文件时用这个端口。而139端口:通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于windows文件和打印机共享和SAMBA。还有WINS Regisrtation也用它。  

端口:143  
服务:Interim Mail Access Protocol v2  
说明:和POP3的安全问题一样,许多IMAP服务器存在有缓冲区溢出漏洞。记住:一种LINUX蠕虫(admv0rm)会通过这个端口繁殖,因此许多这个端口的扫描来自不知情的已经被感染的用户。当REDHAT在他们的LINUX发布版本中默认允许IMAP后,这些漏洞变的很流行。这一端口还被用于IMAP2,但并不流行。  

端口:161  
服务:SNMP  
说明:SNMP允许远程管理设备。所有配置和运行信息的储存在数据库中,通过SNMP可获得这些信息。许多管理员的错误配置将被暴露在Internet。Cackers将试图使用默认的密码public、private访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向用户的网络。  

端口:177  
服务:X Display Manager Control Protocol  
说明:许多入侵者通过它访问X-windows操作台,它同时需要打开6000端口。  

端口:389  
服务:LDAP、ILS  
说明:轻型目录访问协议和NetMeeting Internet Locator Server共用这一端口。  

端口:443  
服务:Https  
说明:网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP。  

端口:456  
服务:[NULL]  
说明:木马HACKERS PARADISE开放此端口。  

端口:513  
服务:Login,remote login  
说明:是从使用cable modem或DSL登陆到子网中的UNIX计算机发出的广播。这些人为入侵者进入他们的系统提供了信息。  

端口:544  
服务:[NULL]  
说明:kerberos kshell  

端口:548  
服务:Macintosh,File Services(AFP/IP)  
说明:Macintosh,文件服务。  

端口:553  
服务:CORBA IIOP (UDP)  
说明:使用cable modem、DSL或VLAN将会看到这个端口的广播。CORBA是一种面向对象的RPC系统。入侵者可以利用这些信息进入系统。  

端口:555  
服务:DSF  
说明:木马PhAse1.0、Stealth Spy、IniKiller开放此端口。  

端口:568  
服务:Membership DPA  
说明:成员资格 DPA。  

端口:569  
服务:Membership MSN  
说明:成员资格 MSN。  

端口:635  
服务:mountd  
说明:Linux的mountd Bug。这是扫描的一个流行BUG。大多数对这个端口的扫描是基于UDP的,但是基于TCP的mountd有所增加(mountd同时运行于两个端口)。记住mountd可运行于任何端口(到底是哪个端口,需要在端口111做portmap查询),只是Linux默认端口是635,就像NFS通常运行于2049端口。  

端口:636  
服务:LDAP  
说明:SSL(Secure Sockets layer)  

端口:666  
服务:Doom Id Software  
说明:木马Attack FTP、Satanz Backdoor开放此端口  

端口:993  
服务:IMAP  
说明:SSL(Secure Sockets layer)  

端口:1001、1011  
服务:[NULL]  
说明:木马Silencer、WebEx开放1001端口。木马Doly Trojan开放1011端口。  

端口:1024  
服务:Reserved  
说明:它是动态端口的开始,许多程序并不在乎用哪个端口连接网络,它们请求系统为它们分配下一个闲置端口。基于这一点分配从端口1024开始。这就是说第一个向系统发出请求的会分配到1024端口。你可以重启机器,打开Telnet,再打开一个窗口运行natstat -a 将会看到Telnet被分配1024端口。还有SQL session也用此端口和5000端口。  


端口:1025、1033  
服务:1025:network blackjack 1033:[NULL]  
说明:木马netspy开放这2个端口。  

端口:1080  
服务:SOCKS  
说明:这一协议以通道方式穿过防火墙,允许防火墙后面的人通过一个IP地址访问INTERNET。理论上它应该只允许内部的通信向外到达INTERNET。但是由于错误的配置,它会允许位于防火墙外部的攻击穿过防火墙。WinGate常会发生这种错误,在加入IRC聊天室时常会看到这种情况。

常用端口对照(二)  
端口:1170  
服务:[NULL]  
说明:木马Streaming Audio Trojan、Psyber Stream Server、Voice开放此端口。  

端口:1234、1243、6711、6776  
服务:[NULL]  
说明:木马SubSeven2.0、Ultors Trojan开放1234、6776端口。木马SubSeven1.0/1.9开放1243、6711、6776端口。  

端口:1245  
服务:[NULL]  
说明:木马Vodoo开放此端口。  

端口:1433  
服务:SQL  
说明:Microsoft的SQL服务开放的端口。  

端口:1492  
服务:stone-design-1  
说明:木马FTP99CMP开放此端口。  

端口:1500  
服务:RPC client fixed port session queries  
说明:RPC客户固定端口会话查询  

端口:1503  
服务:NetMeeting T.120  
说明:NetMeeting T.120  

端口:1524  
服务:ingress  
说明:许多攻击脚本将安装一个后门SHELL于这个端口,尤其是针对SUN系统中Sendmail和RPC服务漏洞的脚本。如果刚安装了防火墙就看到在这个端口上的连接企图,很可能是上述原因。可以试试Telnet到用户的计算机上的这个端口,看看它是否会给你一个SHELL。连接到600/pcserver也存在这个问题。  

端口:1600  
服务:issd  
说明:木马Shivka-Burka开放此端口。  

端口:1720  
服务:NetMeeting  
说明:NetMeeting H.233 call Setup。  

端口:1731  
服务:NetMeeting Audio Call Control  
说明:NetMeeting音频调用控制。  

端口:1807  
服务:[NULL]  
说明:木马SpySender开放此端口。  

端口:1981  
服务:[NULL]  
说明:木马ShockRave开放此端口。  

端口:1999  
服务:cisco identification port  
说明:木马BackDoor开放此端口。  

端口:2000  
服务:[NULL]  
说明:木马GirlFriend 1.3、Millenium 1.0开放此端口。  

端口:2001  
服务:[NULL]  
说明:木马Millenium 1.0、Trojan Cow开放此端口。  

端口:2023  
服务:xinuexpansion 4  
说明:木马Pass Ripper开放此端口。  

端口:2049  
服务:NFS  
说明:NFS程序常运行于这个端口。通常需要访问Portmapper查询这个服务运行于哪个端口。  

端口:2115  
服务:[NULL]  
说明:木马Bugs开放此端口。  

端口:2140、3150  
服务:[NULL]  
说明:木马Deep Throat 1.0/3.0开放此端口。  

端口:2500  
服务:RPC client using a fixed port session replication  
说明:应用固定端口会话复制的RPC客户  

端口:2583  
服务:[NULL]  
说明:木马Wincrash 2.0开放此端口。  

端口:2801  
服务:[NULL]  
说明:木马Phineas Phucker开放此端口。  

端口:3024、4092  
服务:[NULL]  
说明:木马WinCrash开放此端口。  

端口:3128  
服务:squid  
说明:这是squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。也会看到搜索其他代理服务器的端口8000、8001、8080、8888。扫描这个端口的另一个原因是用户正在进入聊天室。其他用户也会检验这个端口以确定用户的机器是否支持代理。  

端口:3129  
服务:[NULL]  
说明:木马Master Paradise开放此端口。

端口:3150  
服务:[NULL]  
说明:木马The Invasor开放此端口。  

端口:3210、4321  
服务:[NULL]  
说明:木马SchoolBus开放此端口  

端口:3333  
服务:dec-notes  

说明:木马Prosiak开放此端口  

端口:3389  
服务:超级终端  
说明:WINDOWS 2000终端开放此端口。  

端口:3700  
服务:[NULL]  
说明:木马Portal of Doom开放此端口  

端口:3996、4060  
服务:[NULL]  
说明:木马RemoteAnything开放此端口  

端口:4000  
服务:QQ客户端  
说明:腾讯QQ客户端开放此端口。  

端口:4092  
服务:[NULL]  
说明:木马WinCrash开放此端口。  

端口:4590  
服务:[NULL]  
说明:木马ICQTrojan开放此端口。  

端口:5000、5001、5321、50505  
服务:[NULL]  
说明:木马blazer5开放5000端口。木马Sockets de Troie开放5000、5001、5321、50505端口。  

端口:5400、5401、5402  
服务:[NULL]  
说明:木马Blade Runner开放此端口。  

端口:5550  
服务:[NULL]  
说明:木马xtcp开放此端口。  

端口:5569  
服务:[NULL]  
说明:木马Robo-Hack开放此端口。  

端口:5632  
服务:pcAnywere  
说明:有时会看到很多这个端口的扫描,这依赖于用户所在的位置。当用户打开pcAnywere时,它会自动扫描局域网C类网以寻找可能的代理(这里的代理是指agent而不是proxy)。入侵者也会寻找开放这种服务的计算机。,所以应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描包常含端口22的UDP数据包。  

端口:5742  
服务:[NULL]  
说明:木马WinCrash1.03开放此端口。  

端口:6267  
服务:[NULL]  
说明:木马广外女生开放此端口。  

端口:6400  
服务:[NULL]  
说明:木马The tHing开放此端口。  

端口:6670、6671  
服务:[NULL]  
说明:木马Deep Throat开放6670端口。而Deep Throat 3.0开放6671端口。  

端口:6883  
服务:[NULL]  
说明:木马DeltaSource开放此端口。  

端口:6969  
服务:[NULL]  
说明:木马Gatecrasher、Priority开放此端口。  

端口:6970  
服务:RealAudio  
说明:RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP-7070端口外向控制连接设置的。  

端口:7000  
服务:[NULL]  
说明:木马Remote Grab开放此端口。  

端口:7300、7301、7306、7307、7308  
服务:[NULL]  
说明:木马NetMonitor开放此端口。另外NetSpy1.0也开放7306端口。  

端口:7323  
服务:[NULL]  
说明:Sygate服务器端。  

端口:7626  
服务:[NULL]  
说明:木马Giscier开放此端口。  

端口:7789  
服务:[NULL]  
说明:木马ICKiller开放此端口。  

端口:8000  
服务:OICQ  
说明:腾讯QQ服务器端开放此端口。  

端口:8010  
服务:Wingate  
说明:Wingate代理开放此端口。  

端口:8080  
服务:代理端口  
说明:WWW代理开放此端口。  

端口:9400、9401、9402  
服务:[NULL]  
说明:木马Incommand 1.0开放此端口。  

端口:9872、9873、9874、9875、10067、10167  
服务:[NULL]  
说明:木马Portal of Doom开放此端口。  

端口:9989  
服务:[NULL]  
说明:木马iNi-Killer开放此端口。  

端口:11000  
服务:[NULL]  
说明:木马SennaSpy开放此端口。  

端口:11223  
服务:[NULL]  
说明:木马Progenic trojan开放此端口。  

端口:12076、61466  
服务:[NULL]  
说明:木马Telecommando开放此端口。  

端口:12223  
服务:[NULL]  
说明:木马Hack'99 KeyLogger开放此端口。  

端口:12345、12346  
服务:[NULL]  
说明:木马NetBus1.60/1.70、GabanBus开放此端口。  

端口:12361  
服务:[NULL]  
说明:木马Whack-a-mole开放此端口。  

端口:13223  
服务:PowWow  
说明:PowWow是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有攻击性。它会驻扎在这个TCP端口等回应。造成类似心跳间隔的连接请求。如果一个拨号用户从另一个聊天者手中继承了IP地址就会发生好象有很多不同的人在测试这个端口的情况。这一协议使用OPNG作为其连接请求的前4个字节。  
端口:16969  
服务:[NULL]  
说明:木马Priority开放此端口。  

端口:17027  
服务:Conducent  
说明:这是一个外向连接。这是由于公司内部有人安装了带有Conducent"adbot"的共享软件。Conducent"adbot"是为共享软件显示广告服务的。使用这种服务的一种流行的软件是Pkware。  

端口:19191  
服务:[NULL]  
说明:木马蓝色火焰开放此端口。  

端口:20000、20001  
服务:[NULL]  
说明:木马Millennium开放此端口。  

端口:20034  
服务:[NULL]  
说明:木马NetBus Pro开放此端口。  

端口:21554  
服务:[NULL]  
说明:木马GirlFriend开放此端口。  

端口:22222  
服务:[NULL]  
说明:木马Prosiak开放此端口。  

端口:23456  
服务:[NULL]  
说明:木马Evil FTP、Ugly FTP开放此端口。  

端口:26274、47262  
服务:[NULL]  
说明:木马Delta开放此端口。  

端口:27374  
服务:[NULL]  
说明:木马Subseven 2.1开放此端口。  

端口:30100  
服务:[NULL]  
说明:木马NetSphere开放此端口。  

端口:30303  
服务:[NULL]  
说明:木马Socket23开放此端口。  

端口:30999  
服务:[NULL]  
说明:木马Kuang开放此端口。  

端口:31337、31338  
服务:[NULL]  
说明:木马BO(Back Orifice)开放此端口。另外木马DeepBO也开放31338端口。  

端口:31339  
服务:[NULL]  
说明:木马NetSpy DK开放此端口。  

端口:31666  
服务:[NULL]  
说明:木马BOWhack开放此端口。  

端口:33333  
服务:[NULL]  
说明:木马Prosiak开放此端口。  

端口:34324  
服务:[NULL]  
说明:木马Tiny Telnet Server、BigGluck、TN开放此端口。  

端口:40412  
服务:[NULL]  
说明:木马The Spy开放此端口。  

端口:40421、40422、40423、40426、  
服务:[NULL]  
说明:木马Masters Paradise开放此端口。  

端口:43210、54321  
服务:[NULL]  
说明:木马SchoolBus 1.0/2.0开放此端口。  

端口:44445  
服务:[NULL]  
说明:木马Happypig开放此端口。  

端口:50766  
服务:[NULL]  
说明:木马Fore开放此端口。  

端口:53001  
服务:[NULL]  
说明:木马Remote Windows Shutdown开放此端口。  

端口:65000  
服务:[NULL]  
说明:木马Devil 1.03开放此端口。


如何关闭端口
默认情况下,Windows有很多端口是开放的,在你上网的时候,网络病毒和黑客可以通过这些端口连上你的电脑。为了让你的系统变为铜墙铁壁,应该封闭这些端口,主要有:TCP 135、139、445、593、1025 端口和 UDP 135、137、138、445 端口,一些流行病毒的后门端口(如 TCP 2745、3127、6129 端口),以及远程服务访问端口3389。下面介绍如何在WinXP/2000/2003下关闭这些网络端口:  

第一步,点击“开始”菜单/设置/控制面板/管理工具,双击打开“本地安全策略”,选中“IP 安全策略,在本地计算机”,在右边窗格的空白位置右击鼠标,弹出快捷菜单,选择“创建 IP 安全策略”(如右图),于是弹出一个向导。在向导中点击“下一步”按钮,为新的安全策略命名;再按“下一步”,则显示“安全通信请求”画面,在画面上把“激活默认相应规则”左边的钩去掉,点击“完成”按钮就创建了一个新的IP 安全策略。  

第二步,右击该IP安全策略,在“属性”对话框中,把“使用添加向导”左边的钩去掉,然后单击“添加”按钮添加新的规则,随后弹出“新规则属性”对话框,在画面上点击“添加”按钮,弹出IP筛选器列表窗口;在列表中,首先把“使用添加向导”左边的钩去掉,然后再点击右边的“添加”按钮添加新的筛选器。  

第三步,进入“筛选器属性”对话框,首先看到的是寻址,源地址选“任何 IP 地址”,目标地址选“我的 IP 地址”;点击“协议”选项卡,在“选择协议类型”的下拉列表中选择“TCP”,然后在“到此端口”下的文本框中输入“135”,点击“确定”按钮(如左图),这样就添加了一个屏蔽 TCP 135(RPC)端口的筛选器,它可以防止外界通过135端口连上你的电脑。  

点击“确定”后回到筛选器列表的对话框,可以看到已经添加了一条策略,重复以上步骤继续添加 TCP 137、139、445、593 端口和 UDP 135、139、445 端口,为它们建立相应的筛选器。  

重复以上步骤添加TCP 1025、2745、3127、6129、3389 端口的屏蔽策略,建立好上述端口的筛选器,最后点击“确定”按钮。  

第四步,在“新规则属性”对话框中,选择“新 IP 筛选器列表”,然后点击其左边的圆圈上加一个点,表示已经激活,最后点击“筛选器操作”选项卡。在“筛选器操作”选项卡中,把“使用添加向导”左边的钩去掉,点击“添加”按钮,添加“阻止”操作(右图):在“新筛选器操作属性”的“安全措施”选项卡中,选择“阻止”,然后点击“确定”按钮。  

第五步、进入“新规则属性”对话框,点击“新筛选器操作”,其左边的圆圈会加了一个点,表示已经激活,点击“关闭”按钮,关闭对话框;最后回到“新IP安全策略属性”对话框,在“新的IP筛选器列表”左边打钩,按“确定”按钮关闭对话框。在“本地安全策略”窗口,用鼠标右击新添加的 IP 安全策略,然后选择“指派”。  

于是重新启动后,电脑中上述网络端口就被关闭了,病毒和黑客再也不能连上这些端口,从而保护了你的电脑。  

1.关闭135端口

使用Windows 2000或者XP的用户今天都被那个利用RPC服务漏洞的蠕虫病毒折腾的够戗吧,该病毒主要攻击手段就是扫描计算机的135端口来进行攻击,现在教大家一种手动关闭135端口的方法,虽然不能完全解决问题,但也是能解一时的燃眉之急。更新微软的补丁还是必要的。

用一款16为编辑软件(推荐UltraEdit)打开你系统x:winntsystem32或者x:windowssystem32下的rpcss.dll文件。

查找31 00 33 00 35替换为30 00 30 00 30

查找3100330035,将其替换为3000300030,意思就是将135端口改为000。

至此修改的任务已经完成,下面将面临一个保存的问题。因为该文件正在运行,在Windows环境下是不能覆盖的。如果你是FAT32文件系统,那么直接引导进DOS环境,将修改好的文件覆盖掉原来的文件。

如果是NTFS格式,相对就麻烦一些。进安全模式。然后启动pulist列出进程,然后用pskill这个程序(不少黑客网站有的下)杀掉svchost.exe程序。然后在COPY过去。

覆盖后重新启动,使用netstat -an命令,可以看到Windows 2000下已经没有135端口了。XP系统下还有TCP的135,但是UDP里面已经没有135端口了。

2.关闭445端口

 关闭445端口的方法有很多,但是我比较推荐以下这种方法:  

修改注册表,添加一个键值  

Hive: HKEY_LOCAL_MACHINE  

Key: System\CurrentControlSet\Services\NetBT\Parameters  

Name: SMBDeviceEnabled  

Type: REG_DWORD  

Value: 0  


修改完后重启机器,运行“netstat -an”,你将会发现你的445端口已经不再Listening了。
posted @ 2007-07-24 01:37 applezk's IT blog 阅读(1033) | 评论 (0)编辑 收藏

IPv4 Route Table
===========================================================================
Interface List
0x1 ........................... MS TCP Loopback interface
0x10003 ...00 14 c2 5d 91 4c ...... HP NC7782 Gigabit Server Adapter
0x10004 ...00 14 c2 5d 91 4d ...... HP NC7782 Gigabit Server Adapter #2
===========================================================================
===========================================================================
Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0   182.180.48.254    182.180.48.21     20
        127.0.0.0        255.0.0.0        127.0.0.1        127.0.0.1      1
     182.180.48.0    255.255.255.0    182.180.48.21    182.180.48.21     20
    182.180.48.21  255.255.255.255        127.0.0.1        127.0.0.1     20
  182.180.255.255  255.255.255.255    182.180.48.21    182.180.48.21     20
     210.113.43.0    255.255.255.0   182.180.48.250    182.180.48.21      1
    219.141.223.0    255.255.255.0   182.180.48.250    182.180.48.21      1
        224.0.0.0        240.0.0.0    182.180.48.21    182.180.48.21     20
  255.255.255.255  255.255.255.255    182.180.48.21    182.180.48.21      1
  255.255.255.255  255.255.255.255    182.180.48.21            10003      1
Default Gateway:    182.180.48.254
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
    219.141.223.0    255.255.255.0   182.180.48.250       1
     210.113.43.0    255.255.255.0   182.180.48.250       1

route add 182.180.16.11 MASK 255.255.255.255 182.180.48.250

route add 182.180.16.2 MASK 255.255.255.255 182.180.48.250

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0   182.180.48.254    182.180.48.21     20
        127.0.0.0        255.0.0.0        127.0.0.1        127.0.0.1      1
    172.30.19.201  255.255.255.255   182.180.48.250    182.180.48.21      1
     182.180.16.2  255.255.255.255   182.180.48.250    182.180.48.21      1
    182.180.16.11  255.255.255.255   182.180.48.250    182.180.48.21      1
     182.180.48.0    255.255.255.0    182.180.48.21    182.180.48.21     20
    182.180.48.21  255.255.255.255        127.0.0.1        127.0.0.1     20
  182.180.255.255  255.255.255.255    182.180.48.21    182.180.48.21     20
     210.113.43.0    255.255.255.0   182.180.48.250    182.180.48.21      1
    219.141.223.0    255.255.255.0   182.180.48.250    182.180.48.21      1
        224.0.0.0        240.0.0.0    182.180.48.21    182.180.48.21     20
  255.255.255.255  255.255.255.255    182.180.48.21    182.180.48.21      1
  255.255.255.255  255.255.255.255    182.180.48.21            10003      1
Default Gateway:    182.180.48.254
===========================================================================
Persistent Routes:
  Network Address          Netmask  Gateway Address  Metric
    219.141.223.0    255.255.255.0   182.180.48.250       1
     210.113.43.0    255.255.255.0   182.180.48.250       1

posted @ 2007-01-17 00:25 applezk's IT blog 阅读(549) | 评论 (0)编辑 收藏

ccafbackup.bat
@echo off

rem date format is "YYYY-MM-DD"
rem 格式化日期

set dt=%date:~0,10%

set dy=%dt:~0,4%
set dm=%dt:~5,2%
set dd=%dt:~8,2%

set dt=%dy%%dm%%dd%

mkdir k:\DAILYBACKUP\%dt%

isql -Usa -Psa -i d:\ccaf_backup.sql
move k:\CEFileStore.bak k:\DAILYBACKUP\%dt%\CEFileStore%dt%
move k:\CEFileStorelog.bak k:\DAILYBACKUP\%dt%\CEFileStore%dt%log
move k:\UAPSDB.bak k:\DAILYBACKUP\%dt%\UAPSDB%dt%
move k:\UAPSDBlog.bak k:\DAILYBACKUP\%dt%\UAPSDB%dt%log
move k:\VWdb.bak k:\DAILYBACKUP\%dt%\VWdb%dt%
move k:\VWdblog.bak k:\DAILYBACKUP\%dt%\VWdb%dt%log
move k:\master.bak k:\DAILYBACKUP\%dt%\master%dt%

ccaf_backup.sql
backup database CEFileStore to disk='k:\CEFileStore.bak' with name='CEFileStore 备份'
backup log CEFileStore to disk='k:\CEFileStorelog.bak' with name='CEFileStore 备份'
backup database UAPSDB to disk='k:\UAPSDB.bak' with name='UAPSDB 备份'
backup log UAPSDB to disk='k:\UAPSDBlog.bak' with name='UAPSDB 备份'
backup database VWdb to disk='k:\VWdb.bak' with name='VWdb 备份'
backup log VWdb to disk='k:\VWdblog.bak' with name='VWdb 备份'
backup database master to disk='k:\master.bak' with name='master 备份'

P8文件备份.bat
@echo off
REM last updated 10:00pm May 21,2001
cd d:\DAILYBACKUP
time /t >d:\DAILYBACKUP\x.tmp
for /f "tokens=1" %%a in (d:\DAILYBACKUP\x.tmp) do set t1=%%a
date /t >d:\DAILYBACKUP\x.tmp
for /f "tokens=1" %%a in (d:\DAILYBACKUP\x.tmp) do set d=%%a
rem for /f "tokens=2" %%a in (d:\DAILYBACKUP\x.tmp) do set d=%%a

echo ******************************************************************* >c:\p8%d%_backup.log
echo *              P8 文件系统每日备份 ON %d%            * >>c:\p8%d%_backup.log
echo ******************************************************************* >>c:\p8%d%_backup.log
echo 看完LOG文件后请退出Notepad. 谢谢. >>c:\p8%d%_backup.log
echo *******************************************************************
echo *              P8 文件系统每日备份 ON %d%            *
echo *******************************************************************
echo.
echo. >>c:\P8%d%_backup.log
echo.
echo.
echo. >>c:\P8%d%_backup.log

ntbackup backup u:\ v:\ w:\ x:\ Z:\data Z:\fax Z:\pbc Z:\report Z:\scan /a  /d "Daily normal backup" /v:no /r:no /rs:no /hc:off /m normal /l:s /f "D:\DAILYBACKUP\%d%\Backup%d%.bkf"

echo -----------------------------------------------------
echo ----------------------------------------------------->>c:\p8%d%_backup.log








posted @ 2007-01-16 22:46 applezk's IT blog 阅读(398) | 评论 (1)编辑 收藏

导出ip配置命令
netsh -c interface dump>[path]     或netsh -c interface ip dump>[path]   (仅导出IP配置)

导入ip配置命令
netsh -f [path]

posted @ 2007-01-16 22:03 applezk's IT blog 阅读(1367) | 评论 (0)编辑 收藏

一、你是用Windows 帐号登录到本机的MS sql server,请用 isql -E
假设windows 帐号 ntuser1 要登录本机MS sql server,要这样做。
 1、以NT帐号ntuser1登陆到Windows2000 professional,不是 MS SQL Server。
 2、isql -S Server -E

二、Sql Server 帐号这样做:
1、将身份验证设为SQL Server 和 Windows。
2、isql -U login_id -P password -S server isql [-?] | [-L] | [
 { {-U login_id [-P password]} | -E }
 [-S server_name] [-H wksta_name] [-d db_name]
 [-l time_out] [-t time_out] [-h headers]
 [-s col_separator] [-w column_width] [-a packet_size]
 [-e] [-x max_text_size] [-c cmd_end] [-q "query"] [-Q "query"]
 [-n] [-m error_level] [-r {0 | 1}]
 [-i input_file] [-o output_file] [-p] [-b] [-O] ]-?
显示 isql 开关的语法摘要。
 -L列出在本地配置的服务器和在网络上广播的服务器的名称。
 -U login_id用户登录 ID。登录 ID 区分大小写。
 -P password 是用户指定的密码。如果未使用
 -P 选项,isql 将提示输入密码。如果在命令提示的末尾使用 -P 选项而不带密码,isql 使用默认密码(NULL)。密码区分大小写。   ISQLPASSWORD 环境变量使您得以为当前会话设置默认密码。因此,不需要通过硬编码来在批处理文件中设置密码。如果没有   为 -P 选项指定密码,isql 首先检查 ISQLPASSWORD 变量。如果未设置值,isql使用默认密码 (NULL)。以下示例 在命令提   示处设置LPASSWORD 变量,然后访问 isql 实用工具:C:\>SET ISQLPASSWORD=abracadabraC:\>isql -E使用信任连接而不请   求密码。
 -S server_name
  指定要连接到的 SQL Server 默认实例。isql 不支持连接到 SQL Server 2000 命名实例。如果未指定服务器,isql 将连接   到本地计算机上的 SQL Server 默认实例。如果要在网络上从远程计算机执行 isql,则需要此选项。
 -H wksta_name 是工作站名称。
  工作站名称存储在 sysprocesses.hostname 中并由 sp_who 显示。如果未指定,则采用当前计算机名称。
 -d db_name 启动 isql 时发出一个 USE db_name 语句。
 -l time_out 指定 isql 登录超时之前的秒数。
  如果未指定 time_out 值,则命令无限期地运行。登录到 isql 的默认超时为 8 秒。
 -t time_out 指定命令超时之前的秒数。
  如果未指定 time_out 值,则命令会无限期地运行;登录到 isql 的默认超时为 8 秒。
 -h headers  指定要在列标题之间打印的行数。
  默认为每一查询结果集打印一次标题。使用 –1 指定不打印标题。如果使用 –1,则在参数和设置之间不能空格
  (可以是 -h-1,不能是 -h –1)。
 -s col_separator 指定列分隔符字符,其默认为空格。
  若要使用对操作系统有特殊含义的字符(例如 | ; & < >),请将该字符用双引号 (") 引起来。
 -w column_width 允许用户设置屏幕输出的宽度。默认为 80 个字符。当输出行达到其最大屏幕宽度时,会拆分为多个行。
 -a packet_size 使您得以请求不同大小的数据包。
  packet_size 的有效值介于 512 和 65535 之间。Microsoft Windows NT&reg; 版中的 isql 默认值为 8192  ;另  外,Microsoft MS-DOS&reg; 版中的 isql 默认值为 512,但在该版本中也可以请求更大的数据包。数据包大小的增加   可以提高较大脚本执行的性能,在这种执行中 GO 命令之间 SQL 语句的数量很重要。Microsoft 的测试表明 8192 是大容量   复制操作典型的最快设置。可以请求更大的数据包大小,但是如果请求不能得到批准,则 isql 默认为 512。
 -e 回显输入。
 -x max_text_size 指定返回文本数据的最大长度,以字节为单位。
  长于 max_text_size 的文本值将被截断。如果未指定 max_text_size,则文本数据在 4096 字节处截断。
 -c cmd_end 指定命令终止符。
  默认情况下,通过单独在一行中输入 GO 来终止命令并将其发送到 SQL Server 2000。在重置命令终止时,不要使用对操作   系统有特殊含义的 Transact-SQL 保留字或字符,无论其前面是否有反斜杠。
 -q "query" 启动 isql 时执行查询,但是在查询完成时不退出 isql。
  (注意查询语句不应包含 GO)。如果从批处理文件中发出查询,可使用 %variables。环境 %variables% 也可用。例如:
  SET table = sysobjectsisql /q "Select * from %table%" 将查询用双引号引起来,将查询中嵌入的任何内容用单引号引   起来。
 -Q "query" 执行查询,在查询完成时立即退出 isql。
  将查询用双引号引起来,将查询中嵌入的任何内容用单引号引起来。
 -n 从输入行中删除编号和提示符号 (>)。
 -m error_level 自定义错误信息的显示。
  显示指定的或更高严重级别错误的消息数、状态和错误级别。不显示严重级别低于指定级别的错误的任何信息。用 -1 指定   与消息一起返回所有标题,即使是信息类的消息。如果使用 –1,则在参数和设置之间不能有空格
  (可以是 -m-1,不能是 -m -1)。
 -r {0 | 1} 将消息输出重定向到屏幕 (stderr)。
  如果未指定参数,或指定参数为 0,那么仅重定向严重级别为 17 或更高的错误信息。
  如果指定参数为 1,则将重定向所有消息输出(包括 "print")。
 -i input_file标识包含一批 SQL 语句或存储过程的文件。小于 (<) 比较运算符可以用来代替 –i。
 -o output_file 标识从 isql 接收输出的文件。
  大于 (>) 比较运算符可以用来代替 –o。-p打印性能统计。
 -b 指定错误发生时 isql 退出并返回一个 DOS ERRORLEVEL 值。
  当 SQL Server 错误信息的严重级别为 10 或更高时,返回给 DOS ERRORLEVEL变量的值为 1;否则,返回值为 0。MS-DOS    批处理文件可以测试 DOS ERRORLEVEL 的值并适当处理错误。
 -O指定 isql 还原为早期版本的行为。下列功能停用: EOF 批处理控制台宽度自动调整宽信息
  该选项还将 DOS ERRORLEVEL 的默认值设置为 –1。
posted @ 2007-01-16 21:48 applezk's IT blog 阅读(2684) | 评论 (1)编辑 收藏

开场白

处理防火墙和其他网络连接问题时最常见的一个难题是主动FTP与被动FTP的区别以及如何完美地支持它们。幸运地是,本文能够帮助你清除在防火墙环境中如何支持FTP这个问题上的一些混乱。

本文也许不像题目声称的那样是一个权威解释,但我已经听到了很多好的反馈意见,也看到了本文在许多地方被引用,知道了很多人都认为它很有用。虽然我一直在找寻改进的方法,但如果你发现某个地方讲的不够清楚,需要更多的解释,请告诉我!最近的修改是增加了主动FTP和被动FTP会话中命令的例子。这些会话的例子应该对更好地理解问题有所帮助。例子中还提供了非常棒的图例来解释FTP会话过程的步骤。现在,正题开始了...

基础

FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21-命令端口和20-数据端口。但当我们发现根据(FTP工作)方式的不同数据端口并不总是20时,混乱产生了。

主动FTP

主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>;1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。

针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP

  1. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C)
  2. FTP服务器的21端口到大于1024的端口(服务器响应客户端的控制端口 S->C)
  3. FTP服务器的20端口到大于1024的端口(服务器端初始化数据连接到客户端的数据端口 S->C)
  4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C)


    画出来的话,连接过程大概是下图的样子:


    在第1步中,客户端的命令端口与FTP服务器的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,FTP服务器给客户端的命令端口返回一个"ACK"。在第3步中,FTP服务器发起一个从它自己的数据端口(20)到客户端先前指定的数据端口(1027)的连接,最后客户端在第4步中给服务器端返回一个"ACK"。

    主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己监听的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。

    主动FTP的例子

    下面是一个主动FTP会话的实际例子。当然服务器名、IP地址和用户名都做了改动。在这个例子中,FTP会话从 testbox1.slacksite.com (192.168.150.80),一个运行标准的FTP命令行客户端的Linux工作站,发起到testbox2.slacksite.com (192.168.150.90),一个运行ProFTPd 1.2.2RC2的Linux工作站。debugging(-d)选项用来在FTP客户端显示连接的详细过程。红色的文字是 debugging信息,显示的是发送到服务器的实际FTP命令和所产生的回应信息。服务器的输出信息用黑色字表示,用户的输入信息用粗体字表示。

    仔细考虑这个对话过程我们会发现一些有趣的事情。我们可以看到当 PORT 命令被提交时,它指定了客户端(192.168.150.80)上的一个端口而不是服务器的。当我们用被动FTP时我们会看到相反的现象。我们再来关注PORT命令的格式。就象你在下面的例子看到的一样,它是一个由六个被逗号隔开的数字组成的序列。前四个表示IP地址,后两个组成了用于数据连接的端口号。用第五个数乘以256再加上第六个数就得到了实际的端口号。下面例子中端口号就是( (14*256) + 17 = 3762。我们可以用netstat来验证这个端口信息。

    testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
    Connected to testbox2.slacksite.com.
    220 testbox2.slacksite.com FTP server ready.
    Name (testbox2:slacker): slacker
    ---> USER slacker
    331 Password required for slacker.
    Password: TmpPass
    ---> PASS XXXX
    230 User slacker logged in.
    ---> SYST
    215 UNIX Type: L8

    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    ftp: setsockopt (ignored): Permission denied
    ---> PORT 192,168,150,80,14,178

    200 PORT command successful.
    ---> LIST
    150 Opening ASCII mode data connection for file list.
    drwx------? ?3 slacker? ? users? ?? ?? ?104 Jul 27 01:45 public_html
    226 Transfer complete.
    ftp> quit
    ---> QUIT
    221 Goodbye.

    被动FTP

    为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。

    在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个FTP连接时,客户端打开两个任意的非特权本地端口(N >; 1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P >; 1024),并发送PORT P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。

    对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:

    1. 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C)
    2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接 S->C)
    3. 从任何端口到服务器的大于1024端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C)
    4. 服务器的大于1024端口到远程的大于1024的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C)

      画出来的话,被动方式的FTP连接过程大概是下图的样子:


      在第1步中,客户端的命令端口与服务器的命令端口建立连接,并发送命令“PASV”。然后在第2步中,服务器返回命令"ORT 2024",告诉客户端(服务器)用哪个端口侦听数据连接。在第3步中,客户端初始化一个从自己的数据端口到服务器端指定的数据端口的数据连接。最后服务器在第4 步中给客户端的数据端口返回一个"ACK"响应。

      被动方式的FTP解决了客户端的许多问题,但同时给服务器端带来了更多的问题。最大的问题是需要允许从任意远程终端到服务器高位端口的连接。幸运的是,许多FTP守护程序,包括流行的WU-FTPD允许管理员指定FTP服务器使用的端口范围。详细内容参看附录1。

      第二个问题是客户端有的支持被动模式,有的不支持被动模式,必须考虑如何能支持这些客户端,以及为他们提供解决办法。例如,Solaris提供的FTP命令行工具就不支持被动模式,需要第三方的FTP客户端,比如ncftp。

      随着WWW的广泛流行,许多人习惯用web浏览器作为FTP客户端。大多数浏览器只在访问ftp://这样的URL时才支持被动模式。这到底是好还是坏取决于服务器和防火墙的配置。

      被动FTP的例子

      下面是一个被动FTP会话的实际例子,只是服务器名、IP地址和用户名都做了改动。在这个例子中,FTP会话从 testbox1.slacksite.com (192.168.150.80),一个运行标准的FTP命令行客户端的Linux工作站,发起到testbox2.slacksite.com (192.168.150.90),一个运行ProFTPd 1.2.2RC2的Linux工作站。debugging(-d)选项用来在FTP客户端显示连接的详细过程。红色的文字是 debugging信息,显示的是发送到服务器的实际FTP命令和所产生的回应信息。服务器的输出信息用黑色字表示,用户的输入信息用粗体字表示。

      注意此例中的PORT命令与主动FTP例子的不同。这里,我们看到是服务器(192.168.150.90)而不是客户端的一个端口被打开了。可以跟上面的主动FTP例子中的PORT命令格式对比一下。

      testbox1: {/home/p-t/slacker/public_html} % ftp -d testbox2
      Connected to testbox2.slacksite.com.
      220 testbox2.slacksite.com FTP server ready.
      Name (testbox2:slacker): slacker
      ---> USER slacker
      331 Password required for slacker.
      Password: TmpPass
      ---> PASS XXXX
      230 User slacker logged in.
      ---> SYST
      215 UNIX Type: L8

      Remote system type is UNIX.
      Using binary mode to transfer files.
      ftp> passive
      Passive mode on.
      ftp> ls
      ftp: setsockopt (ignored): Permission denied
      ---> PASV
      227 Entering Passive Mode (192,168,150,90,195,149).
      ---> LIST
      150 Opening ASCII mode data connection for file list
      drwx------? ?3 slacker? ? users? ?? ?? ?104 Jul 27 01:45 public_html
      226 Transfer complete.
      ftp>; quit
      ---> QUIT
      221 Goodbye.

      总结

      下面的图表会帮助管理员们记住每种FTP方式是怎样工作的:

      主动FTP
      ? ?命令连接:客户端 >1024端口 -> 服务器 21端口
      ? ?数据连接:客户端 >1024端口 <- 服务器 20端口

      被动FTP
      ? ?命令连接:客户端 >1024端口 -> 服务器 21端口
      ? ?数据连接:客户端 >1024端口 -> 服务器 >;1024端口

      下面是主动与被动FTP优缺点的简要总结:

      主动FTPFTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。被动FTPFTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。

      幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。详细信息参看附录1。
      posted @ 2006-10-13 15:08 applezk's IT blog 阅读(274) | 评论 (0)编辑 收藏

      仅列出标题
      共19页: First 10 11 12 13 14 15 16 17 18 Last