Thursday 28 August 2008

修炼成妖



女修,女修,不死不休,不成妖精不罢休。

嘻嘻~~

(就着意境补个图,图为峨眉山白蛇修炼的白蛇洞,据说这个洞是通杭州的西湖哦~,大的是白蛇洞,小的是青蛇洞)

IMG_0263

 


















FTP download 脚本

准备活动:
1.设置好文档结构
2.7zip folder准备就绪

步骤:
1. set 连接FTP参数。
2.连接&下载
3.unzip with 7 zip
4.改名(改名字的目的是为了方面倒数据)

@echo off
rem author
rem init variable

rem begin to init variables & create folder according to
rem System date.
echo begin to init variables.....
set user=******
set password=*******
rem input Parameter 1
set rootfolder=%1
rem input Parameter 2
set DateFolderName=%2

rem Generated date.
rem rem set day=%date:~7,2%
rem rem set month=%date:~4,2%
rem rem set year=%date:~10,4%

rem set FTP download mode and subfolder
set targetfolder=gets
set contype=binary
mkdir %rootfolder%\%DateFolderName%

rem begin to connect FTP
echo begin to connect FTP....
echo open ftp>z
echo %user%>>z
echo %password%>>z
echo %contype% >>z
echo lcd %rootfolder%\%DateFolderName%>>z
echo cd gets>>z
echo prompt>>z
rem get all files
echo mget *.zip>>z
echo bye>>z
ftp -s:z

rem begin upzip the file with 7zip
set zipRootFolder=e:
set zipFolder=%zipRootFolder%\schedule\software\7zip\
%zipRootFolder%
cd %zipFolder%
echo %zipFolder%
7za x %rootfolder%\%DateFolderName%\*.zip -o%rootfolder%\%DateFolderName% -p%password%

echo hello

rem change name into the order I want to generate.
cd %rootfolder%\%DateFolderName%
echo old new>>log
for %%a in (*.txt) do call:test "%%a"
goto:elf
:test
set /a b+=1
echo %1 %b%.txt>>log
ren %1 %b%.txt

:elf

Zip Tool Max Size

昨天碰到一个问题,有2个大的file不能用winrar打开,错误提示是“Unknown Method in” 后来发现是file Size 的问题,从winrar里面看是 4,294,967,295 bytes,而实际上是5,258,199,981 bytes。所以可能是winrar 有4 gb的限制,更换7zip以后可以了,说明的确是这个问题。

不过从http://www.ahasoft.com.tw/winrar/ziprar.htm
上看到的参数,却是这样的,winRar并没有提到,zip也是4G的限制。
+--------------------------+-----------------------+---------------------------+
| Criterion | WinRAR | WinZIP |
+--------------------------+-----------------------+---------------------------+

| Maximum archive size     | File sizes in         | Up to 4GB in ZIP format   |
| and file size for | RAR/Win32 limited by | |
| archiving | OS. Significantly | |
| | larger than 8Tb | |


在论坛上找到的参数
http://help.wugnet.com/winrar/FAQ-maximum-file-archive-Size-ftopict7.html

The size of a RAR archive, as well as the size of any single file within a RAR archive, is limited to 8,589,934,591 GB (9,223,372,036,854,775,807 bytes).
Note that to create archives larger than 4 GB, you need to use NTFS, as older file systems do not support such large files.
The size of a ZIP archive, as well as the size of any single file within a ZIP archive, is limited to 2 GB.

TCP协议的握手过程(ZZ)

TCP协议的握手过程
http://www.cnblogs.com/Winston/archive/2008/08/26/1276843.html
一、TCP三次握手

  传输控制协议(Transport Control Protocol)是一种面向连接的,可靠的传输层协议。面向连接是指一次正常的TCP传输需要通过在TCP客户端和TCP服务端建立特定的虚电路连接来完成,该过程通常被称为“三次握手”。可靠性可以通过很多种方法来提供保证,在这里我们关心的是数据序列和确认。TCP通过数据分段(Segment)中的序列号保证所有传输的数据可以在远端按照正常的次序进行重组,而且通过确认保证数据传输的完整性。要通过TCP传输数据,必须在两端主机之间建立连接。举例说明,TCP客户端需要和TCP服务端建立连接,过程如下所示:

TCP Client Flags TCP Server
1 Send SYN (seq=w) ----SYN---> SYN Received
2 SYN/ACK Received<---SYN/ACK---- Send SYN (seq=x), ACK (w+1) 3 Send ACK (x+1) ----ACK---> ACK Received, Connection Established
网管u家u.bitscn@com

w: ISN (Initial Sequence Number) of the Client
x: ISN of the Server

  在第一步中,客户端向服务端提出连接请求。这时TCP SYN标志置位。客户端告诉服务端序列号区域合法,需要检查。客户端在TCP报头的序列号区中插入自己的ISN。服务端收到该TCP分段后,在第二步以自己的ISN回应(SYN标志置位),同时确认收到客户端的第一个TCP分段(ACK标志置位)。在第三步中,客户端确认收到服务端的ISN(ACK标志置位)。到此为止建立完整的TCP连接,开始全双工模式的数据传输过程。

  二、TCP标志

  这里有必要介绍一下TCP分段中的标志(Flag)置位情况。如下图所示。



*SYN:同步标志
  同步序列编号(Synchronize Sequence Numbers)栏有效。该标志仅在三次握手建立TCP连接时有效。它提示TCP连接的服务端检查序列编号,该序列编号为TCP连接初始端(一般是客户端)的初始序列编号。在这里,可以把TCP序列编号看作是一个范围从0到4,294,967,295的32位计数器。通过TCP连接交换的数据中每一个字节都经过序列编号。在TCP报头中的序列编号栏包括了TCP分段中第一个字节的序列编号。
中国网管论坛bbs.bitsCN.com



  *ACK:确认标志
  确认编号(Acknowledgement Number)栏有效。大多数情况下该标志位是置位的。TCP报头内的确认编号栏内包含的确认编号(w+1,Figure-1)为下一个预期的序列编号,同时提示远端系统已经成功接收所有数据。

  *RST:复位标志
  复位标志有效。用于复位相应的TCP连接。

  *URG:紧急标志
  紧急(The urgent pointer) 标志有效。紧急标志置位,

  *PSH:推标志
  该标志置位时,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。在处理 telnet 或 rlogin 等交互模式的连接时,该标志总是置位的。

  *FIN:结束标志
  带有该标志置位的数据包用来结束一个TCP回话,但对应端口仍处于开放状态,准备接收后续数据。



三、TCP端口

  为了能够支持同时发生的并行访问请求,TCP提供一种叫做“端口”的用户接口。端口是操作系统核心用来识别不同的网络回话过程。这是一个严格的传输层定义。通过TCP端口和IP地址的配合使用,可以提供到达终端的通讯手段。实际上,在任一时刻的互联网络连接可以由4个数字进行描述:来源IP地址和来源端口,目的IP地址和目的端口。位于不同系统平台,用来提供服务的一端通过标准的端口提供相应服务。举例来说,标准的TELNET守护进程(telnet daemon)通过监听TCP 23端口,准备接收用户端的连接请求。 网管联盟bitsCN_com

  四、TCP缓存(TCP Backlog)

  通常情况下,操作系统会使用一块限定的内存来处理TCP连接请求。每当用户端发送的SYN标志置位连接请求到服务端的一个合法端口(提供TCP服务的一端监听该端口)时,处理所有连接请求的内存使用量必须进行限定。如果不进行限定,系统会因处理大量的 TCP连接请求而耗尽内存,这在某种程度上可以说是一种简单的DoS攻击。这块经过限定的,用于处理TCP连接的内存称为TCP缓存(TCP Backlog),它实际上是用于处理进站(inbound)连接请求的一个队列。该队列保存那些处于半开放(half-open)状态的TCP连接项目,和已建立完整连接但仍未由应用程序通过accept()调用提取的项目。如果这个缓存队列被填满,除非可以及时处理队列中的项目,否则任何其它新的 TCP连接请求会被丢弃。

  一般情况下,该缓存队列的容量很小。原因很简单,在正常的情况下TCP可以很好的处理连接请求。如果当缓存队列填满的时候新的客户端连接请求被丢弃,客户端只需要简单的重新发送连接请求,服务端有时间清空缓存队列以相应新的连接请求。

  在现实环境中,不同操作系统支持TCP缓冲队列有所不同。在BSD结构的系统中,如下所示:

OS Backlog BL+ Grace Notes
SunOS 4.x.x 5 8
网管网www_bitscn_com


IRIX 5.2 5 8
Linux 1.2.x 10 10 Linux does not have this grace margin
FreeBSD 2.1.0 32
FreeBSD 2.1.5 128
Win NTs 3.5.1 6 6 NT does not appear to have this margin
Win NTw 4.0 6 6 NT has a pathetic backlog

  五、TCP进站(Inbound)处理过程

  为了更好的讲述TCP SYN Flood的攻击过程,我们先来介绍一下正常情况下,TCP进站处理的过程。

  服务端处于监听状态,客户端用于建立连接请求的数据包(IP packet)按照TCP/IP协议堆栈组合成为TCP处理的分段(segment)。

  分析报头信息: TCP层接收到相应的TCP和IP报头,将这些信息存储到内存中。

  检查TCP校验和(checksum):标准的校验和位于分段之中(Figure-2)。如果检验失败,不返回确认,该分段丢弃,并等待客户端进行重传。

  查找协议控制块(PCB{}):TCP查找与该连接相关联的协议控制块。如果没有找到,TCP将该分段丢弃并返回RST。(这就是TCP处理没有端口监听情况下的机制) 如果该协议控制块存在,但状态为关闭,服务端不调用connect()或listen()。该分段丢弃,但不返回RST。客户端会尝试重新建立连接请求。
中国网管联盟bitsCN.com


  建立新的socket:当处于监听状态的socket收到该分段时,会建立一个子 socket,同时还有socket{},tcpcb{}和pcb{}建立。这时如果有错误发生,会通过标志位来拆除相应的socket和释放内存, TCP连接失败。如果缓存队列处于填满状态,TCP认为有错误发生,所有的后续连接请求会被拒绝。这里可以看出SYN Flood攻击是如何起作用的。

  丢弃:如果该分段中的标志为RST或ACK,或者没有SYN标志,则该分段丢弃。并释放相应的内存。【转自www.bitsCN.com】

调优 Windows(ZZ)

调优 Windows
http://www.janker.org/knowledge/117.html

您可能需要定制 Windows 系统,以提高服务器的性能。下面,将向您介绍调整 Windows 2003 和 Windows XP 系统配置的技巧。请牢记,这些系统可能会变化,从而导致这些建议过时,并导致您的结果有所不同。

在为了改善性能而进行任何更改之前,请确保已经对当前性能进行了度量。不管您是否关心事务执行速度、响应时间、最大并发用户数或其他一些性能条件,都需要在更改前后,进行足够准确地度量,以了解更改调优参数是否有效。

TcpTimedWaitDelay

TcpTimedWaitDelay 值确定了在 TCP/IP 可释放已关闭的连接并复用其资源之前,必须等待的时间。关闭和释放之间的时间间隔称为 TIME_WAIT 状态或最长分段生命周期的两倍(2MSL)状态。在此期间,重新打开客户机和服务器之间的连接比新建一个连接的开销要小。通过减小该项的值,TCP/IP 可更快地释放已关闭的连接,并可为新连接提供更多的资源。如果由于多个连接处于 TIME_WAIT 状态导致吞吐量较低,从而正在运行的应用程序需要快速释放连接、创建新的连接或是进行调整,请调整这个参数。

缺省值是 0xF0,将等待时间设置为 240 秒(4 分钟)。

最小的推荐值是 0x1E,将等待时间设置为 30 秒。请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值。
  2. 将该值设为十进制的 30(十六进制为 0x0000001e)。该值将等待时间设置为 30 秒。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

MaxUserPort

MaxUserPort 值确定了当应用程序请求系统中可用的用户端口时,TCP/IP 能分配的最大端口号。如果系统报告建立套接字出错异常,这可能是由于匿名(临时)端口号不够大引起的,特别是,如果系统打开了大量的端口来构建与 Web service、数据库或其他远程资源的连接。

缺省情况下,Windows 为匿名(临时)端口保留端口号 1024 到 5000

常见的做法是将该值设置为 32768。请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters 注册表子键,然后创建名为 MaxUserPort 的新 REG_DWORD 值。
  2. 将该值至少设置为十进制的 32768。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

动态储备

动态储备值使系统能自动调整其配置,以接受大量突发的连接请求。如果同时接收到大量连接请求,动态储备可提高受支持的暂挂连接的数量,从而可减少连接失败的数量。

缺省情况下,Windows 不启用动态储备。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters 注册表子键,然后用以下名称和值创建或设置新的 REG_DWORD 值。
    "EnableDynamicBacklog"=dword:00000001
    "MinimumDynamicBacklog"=dword:00000020
    "MaximumDynamicBacklog"=dword:00001000
    "DynamicBacklogGrowthDelta"=dword:00000010
    这些值通过 20 - 1000 个可用连接启用动态储备支持。可用连接数每次增加 10 个,增量小于可用连接的最小数。
  2. 关闭注册表编辑器。
  3. 停止并重新启动系统。

KeepAliveTime

KeepAliveTime 值控制 TCP/IP 尝试验证空闲连接是否完好的频率。如果这段时间内没有活动,则会发送保持活动信号。如果网络工作正常,而且接收方是活动的,它就会响应。如果需要对丢失接 收方敏感,换句话说,需要更快地发现丢失了接收方,请考虑减小这个值。如果长期不活动的空闲连接出现次数较多,而丢失接收方的情况出现较少,您可能会要提 高该值以减少开销。

缺省情况下,如果空闲连接 7200000 毫秒(2 小时)内没有活动,Windows 就发送保持活动的消息。通常,1800000 毫秒是首选值,从而一半的已关闭连接会在 30 分钟内被检测到。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 KeepAliveTime 的新 REG_DWORD 值。
  2. 为该值设置适当的毫秒数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

KeepAliveInterval

KeepAliveInterval 值定义了如果未从接收方收到保持活动消息的响应,TCP/IP 重复发送保持活动信号的频率。当连续发送保持活动信号、但未收到响应的次数超出 TcpMaxDataRetransmissions 的值时,会放弃该连接。如果期望较长的响应时间,您可能需要提高该值以减少开销。如果需要减少花在验证接收方是否已丢失上的时间,请考虑减小该值或 TcpMaxDataRetransmissions 值。

缺省情况下,在未收到响应而重新发送保持活动的消息之前,Windows 会等待 1000 毫秒(1 秒)。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 KeepAliveInterval 的新 REG_DWORD 值。
  2. 为该值设置适当的毫秒数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

TcpMaxDataRetranmission

TcpMaxDataRetranmission 值定义了 TCP/IP 通过现有连接重新发送未返回应答的数据段的次数。如果您的网络性能很差,可能需要提高该值以保持有效的通信。如果您的网络性能很好,且通常是由于丢失接收 方而导致数据的丢失,则可以减小该值以减少验证接收方是否丢失所花费的时间。

缺省情况下,Windows 会重新发送未返回应答的数据段 5 次。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 注册表子键,然后创建或设置名为 TcpMaxDataRetransmissions 的新 REG_DWORD 值。
  2. 将该值设置为适当的重试次数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。

TcpAckFrequency

TcpAckFrequency 值确定了 TCP/IP 发送应答消息的频率。

  • 如果值为 2,则 TCP/IP 将在接收到 2 个分段后发送应答,或是在接收了 1 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
  • 如果值为 3,则 TCP/IP 将在接收到 3 个分段后发送应答,或是在接收了 1 个或 2 个分段但在 200 毫秒内没有接收到其他分段的情况下发送应答。
  • 以此类推。

如果需要通过消除 TCP/IP 应答延迟来缩短响应时间,则将该值设为 1。在这种情况下,TCP/IP 会立即发送对每个分段的应答。如果您的连接主要用于移动大量数据,而 200 毫秒的延迟并不重要,则可以减小该值以降低应答的开销。

缺省情况下,Windows 使用值 2(每隔一个分段应答一次)。该值的有效范围是 0 到 255,其中 0 表示使用缺省值(2)。

请使用以下过程来查看或定制您的值。

  1. 启动 regedit 命令,浏览至 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\AdapterId 注册表子键(其中 AdaperId 表示将受影响的网络适配器),然后创建或设置名为 TcpAckFrequency 的新 REG_DWORD 值。
  2. 根据希望每发送几个分段返回一个应答,为该值设置相应的数。
  3. 关闭注册表编辑器。
  4. 停止并重新启动系统。