分类 系统与服务 下的文章

RESTful架构详解

1 什么是REST

REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是HTTP规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原理的前提下,理解和评估以网络为基础的应用软件的架构设计,得到一个功能强、性能好、适宜通信的架构。REST指的是一组架构约束条件和原则。” 如果一个架构符合REST的约束条件和原则,我们就称它为RESTful架构。

- 阅读剩余部分 -

webshell 提权方法 服务器提权教程

一:首先检测一下网站的服务器是否开了 3389
远程终端
二:检测一下服务是否用了serv-u (还有是什么版本的)
方法
一:复制一个网站 用 3389 登陆器连接一下 (是否成功)
能连接了,拿下服务器的机率,提高 30%了
二:用ftp模式查下一个服务器的版本
开始 -- 运行 -- cmd -- ftp (加你要登陆的网站)

- 阅读剩余部分 -

下一代远程控制木马的思路探讨

<p>传统意义上的远程控制木马由于适用面不广,使用比较单一,只注重功能不注重一些安全上的问题,出现过的事故就有: 1.控制者被反查 2.控制者机器被利用文件下载上传文件反控 3.相关黑客被杀 4.抓鸡黑客被网警追捕 5.主要成员被国际通缉 等等。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p style="text-align: center;"></p><p><span style="color: rgb(38, 38, 38);">传统的远程控制木马</span>
最初
1. 大多使用tcp协议作为其主要通信协议,没有采用对应的加密措施。

2. 木马文件经过加壳或者没有加壳,可轻易被分析出特征码。

3. 相关功能都被整合到了一起,免杀时间短。

4. 不稳定性,遇到复杂的网络环境可能存在上线难的问题。

5. 上线采用动态域名,经过不可靠第三方中转信息可被轻易拦截或者伪造。

6. 大多采用注册表启动或者注册服务启动,少有修改文件方式。

7. 存在可执行文件,dll,sys,启动方式大多采用独立启动,没有或者少有文件感染,进程注入。

8. 种马感染方式单一,大多采用网络传输方式感染。

9. 驻留方式单一,大多是驻留在系统。不存在反沙盒分析功能。

10. 大多是c/s结构,即client/server。木马文件普遍较大。

<span style="color: rgb(38, 38, 38);">后来</span>

1. 除了tcp木马之外出现了udp木马,但依然没有采取加密措施。

2. 木马在原有加壳基础之上,开始出现了自写壳,反调试等反分析措施。

3. 由原来的整合到一起开始出现了生成器/控制端的模式,免杀时间稍微变长。

4. 上线开始出现了多种上线模式,出现了网站空间上线、FTP上线、数据库上线。

5. 稳定性变强。出现了反弹上线木马。

6. 开始出现修改系统文件,修改服务启动方式隐藏自身。

7. 开始出现了迷你版本木马,出现了无进程,文件感染,进程注入技术应用。

8. 出现了多种感染方式,木马本身在感染母体后出现了感染移动设备的情况。

9. 开始出现了驻留bios,感染映像文件木马。依然不存在反沙盒分析能力。

10. 出现了b/s,即浏览器/服务器模式交互通信木马。稳定性变强。文件比起上一代变小了一些。

<span style="color: rgb(38, 38, 38);">现在</span>

1. 除了tcp,udp木马之外,开始出现了https,ssl木马,但本身还是会被抓到木马原型。

2. 木马在原有加壳,自写壳,反调试基础之上,出现了shellcode木马,dll木马,纯进制文件靠其他文件加载木马。

3. 由原来的生成器/控制端模式开始出现了模块化木马,抗分析,免杀能力变强。

4. 上线由原来的单一上线模式出现了支持混合协议上线模式木马,一个服务器被封,可保持被控者依然不掉。

5. 稳定性在原有基础之上变得更强,除了反弹上线之外,出现了依靠其他服务上线木马。

6. 除了原来的修改、感染文件方式之外,出现了感染声卡,感染网卡方式。

7. 除了无进程之外,出现了无文件,无端口端口木马技术应用。

8. 除了感染移动设备外,出现了跨平台感染木马,内网感染木马,会感染比如智能交易终端之类的设备。

9. 出现了反内存分析、文件定时自动变异木马,会给分析带来一定难度。

10.出现了混合控制方式木马,可以b/s也可以c/s。

11.由原来的从vc/delphi/vb之类的语言编写的远控木马开始出现了脚本编写的远控木马程序。体积更小,方式更加隐蔽。

<span style="color: rgb(38, 38, 38);">目前面临的问题。</span>

     1. 远控传输协议的问题,没有好的加密协议很容易出现通信被拦截/伪造问题,给自己带来危险。一些防火墙设备也可以轻易拦截通信。

     2. 远控的免杀问题,传统的木马很容易在取到特征后就被杀毒软件查杀,一直没有出现好的反杀毒软件思路。

     3. 启动加载方式问题,传统的比如注册表,文件,服务启动,很容易被比如(x60之类)软件拦截,许多杀软也比较看重注册表。

     4. 文件驻留问题,驻留在系统很容易被取到样本文件,也会导致木马本身生存周期变短。

     5. 文件操作问题,所有功能都集中在了一起,很容易被识别为木马文件。

<span style="color: rgb(38, 38, 38);">暂时性的解决措施:</span>

    1. 远控传输协议采用公钥方式加密,文件生成时可选择伪造某种可信软件报文方式。

    2. 在文件特征上,采用密钥方式分段加密,内存分段解密运行后删除上一次操作记录,静动交互+加密模式对抗特征捕获。

    3. 加载方式采用非注册表加载,注入硬件核心驱动文件加载。

    4. 系统只驻留主要支持文件,或者完全靠注入后文件操作。

    5. 功能文件采用插件方式,用完即删,即使被捕获也很难被分析认定为木马。

<span style="color: rgb(38, 38, 38);">未解决的问题:</span>

    源头/ip地址很容易被侦查员捕获的问题,采用私有云,p2p方式待实践。
    只有更新的木马/黑客技术才能促进整体的安全进步。</p>

- 阅读剩余部分 -

浅谈什么是URL于协议

<p>url即统一资源定位符。 统一资源定位符(Uniform Resource Locator,缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>
基本URL包含模式(或称协议)、服务器名称(或IP地址)、路径和文件名,如“协议://授权/路径?查询”。完整的、带有授权部分的普通统一资源标志符语法看上去如下:协议://用户名:密码@子域名.域名.顶级域名:端口号/目录/文件名.文件后缀?参数=值#标志</p><p>第一部分</p><p>模式/协议(scheme):它告诉浏览器如何处理将要打开的文件。最常用的模式是超文本传输协议(Hypertext Transfer Protocol,缩写为HTTP),这个协议可以用来访问网络。[1]其他协议如下:
http——超文本传输协议资源
https——用安全套接字层传送的超文本传输协议
ftp——文件传输协议
mailto——电子邮件地址
ldap——轻型目录访问协议搜索
file——当地电脑或网上分享的文件
news——Usenet新闻组
gopher——Gopher协议
telnet——Telnet协议</p><p>第二部分</p><p>文件所在的服务器的名称或IP地址,后面是到达这个文件的路径和文件本身的名称。服务器的名称或IP地址后面有时还跟一个冒号和一个端口号。它也可以包含接触服务器必须的用户名称和密码。路径部分包含等级结构的路径定义,一般来说不同部分之间以斜线(/)分隔。询问部分一般用来传送对服务器上的数据库进行动态询问时所需要的参数。
有时候,URL以斜杠“/”结尾,而没有给出文件名,在这种情况下,URL引用路径中最后一个目录中的默认文件(通常对应于主页),这个文件常常被称为 index.html 或 default.htm。</p><p>绝对URL</p><p>绝对URL(absolute URL)显示文件的完整路径,这意味着绝对URL本身所在的位置与被引用的实际文件的位置无关,</p><p>相对URL</p><p>相 对URL(relative URL)以包含URL本身的文件夹的位置为参考点,描述目标文件夹的位置。如果目标文件与当前页面(也就是包含URL的页面)在同一个目录,那么这个文件 的相对URL仅仅是文件名和扩展名,如果目标文件在当前目录的子目录中,那么它的相对URL是子目录名,后面是斜杠,然后是目标文件的文件名和扩展名。
如果要引用文件层次结构中更高层目录中的文件,那么使用两个句点和一条斜杠。可以组合和重复使用两个句点和一条斜杠,从而引用当前文件所在的硬盘上的任何文件,
一般来说,对于同一服务器上的文件,应该总是使用相对URL,它们更容易输入,而且在将页面从本地系统转移到服务器上时更方便,只要每个文件的相对位置保持不变,链接就仍然是有效地。</p><p>
FTP是TCP/IP网络上两台计算机传送文件的协议,FTP是在TCP/IP网络和INTERNET上最早使用的协议之一。尽管World Wide Web(WWW)已经替代了FTP的大多数功能,FTP仍然是通过Internet把文件从客户机复制到服务器上的一种途径。FTP客户机可以给服务器发出命令来下载文件,上传文件,创建或改变服务器上的目录。原来的FTP软件多是命令行操作,有了像CUTEFTP这样的图形界面软件,使用FTP传输变得方便易学。主要使用它进行“上载”。即向服务器传输文件。由于FTP协议的传输速度比较快,我们在制作诸如“软件下载”这类网站时喜欢用FTP来实现,同时我们这种服务面向大众,不需要身份认证,即“匿名FTP服务器”。[1]
FTP是应用层的协议,它基于传输层,为用户服务,它们负责进行文件的传输。FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。但是,FTP有着极高的延时,这意味着,从开始请求到第一次接收需求数据之间的时间会非常长,并且不时的必需执行一些冗长的登录进程。
FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。当数据通过数据流传输时,控制流处于空闲状态。而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时,这样当大量数据通过防火墙时,会产生一些问题。此时,虽然文件可以成功的传输,但因为控制会话会被防火墙断开,传输会产生一些错误。</p><p>工作原理</p><p>文件传输协议是TCP/IP提供的标准机制。用来将文件从一个主机复制到另一个主机。FTP使用TCP的服务。</p><p>
HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)[5]和Internet工作小组IETF(Internet Engineering Task Force)[6]合作的结果,(他们)最终发布了一系列的RFC,RFC 1945[7]定义了HTTP/1.0版本。其中最著名的就是RFC 2616[8]。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。为纪念Tim Berners-Lee提出HTTP后对互联网发展的贡献,万维网协会保留有他最原始提交的版本[9]。
HTTP协议(HyperText Transfer Protocol,超文本转移协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等[10]。
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。
 </p><p>
Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。应用Telnet协议能够把本地用户所使用的计算机变成远程主机系统的一个终端。它提供了三种基本服务:
1)Telnet定义一个网络虚拟终端为远程系统提供一个标准接口。客户机程序不必详细了解远程系统,他们只需构造使用标准接口的程序;
2)Telnet包括一个允许客户机和服务器协商选项的机制,而且它还提供一组标准选项; .
3)Telnet对称处理连接的两端,即Telnet不强迫客户机从键盘输入,也不强迫客户机在屏幕上显示输出。</p><p>适应异构</p><p>为了使多个操作系统间的Telnet交互操作成为可能,就必须详细了解异构计算机和操作系统。比如,一些操作系统需要每行文本用ASCⅡ回车控制符(CR)结束,另一些系统则需要使用ASCⅡ换行符(LF),还有一些系统需要用两个字符的序列回车-换行(CR-LF);再比如,大多数操作系统为用户提供了一个中断程序运行的快捷键,但这个快捷键在各个系统中有可能不同(一些系统使用CTRL+C,而另一些系统使用ESCAPE)。如果不考虑系统间的异构性,那么在本地发出的字符或命令,传送到远地并被远程系统解释后很可能会不准确或者出现错误。因此,Telnet协议必须解决这个问题。 为了适应异构环境,Telnet协议定义了数据和命令在Internet上的传输方式,此定义被称作网络虚拟终端NVT(Net Virtual Terminal)。它的应用过程如下: 对于发送的数据:客户机软件把来自用户终端的按键和命令序列转换为NVT格式,并发送到服务器,服务器软件将收到的数据和命令,从NVT格式转换为远地系统需要的格式; 对于返回的数据:远地服务器将数据从远地机器的格式转换为NVT格式,而本地客户机将接收到的NVT格式数据再转换为本地的格式。 对于NVT格式的详细定义,有兴趣的朋友可以去查找相关资料。</p><p>传送远程命令</p><p>我们知道绝大多数操作系统都提供各种快捷键来实现相应的控制命令,当用户在本地终端键入这些快捷键的时候,本地系统将执行相应的控制命令,而不把这些快捷键作为输入。那么对于Telnet来说,它是用什么来实现控制命令的远程传送呢? Telnet同样使用NVT来定义如何从客户机将控制功能传送到服务器。我们知道ASCⅡ字符集包括95个可打印字符和33个控制码。当用户从本地键入普通字符时,NVT将按照其原始含义传送;当用户键入快捷键(组合键)时,NVT将把它转化为特殊的ASCⅡ字符在网络上传送,并在其到达远地机器后转化为相应的控制命令。
将正常ASCⅡ字符集与控制命令区分的原因:
1)这种区分意味着Telnet具有更大的灵活性:它可在客户机与服务器间传送所有可能的ASCⅡ字符以及所有控制功能;
2)这种区分使得客户机可以无二义性的指定信令,而不会产生控制功能与普通字符的混乱。 .</p><p>数据流向</p><p>上面我们提到过将Telnet设计为应用级软件有一个缺点,那就是:效率不高。这是为什么呢?下面给出Telnet中的数据流向:
数据信息被用户从本地键盘键入并通过操作系统传到客户机程序,客户机程序将其处理后返回操作系统,并由操作系统经过网络传送到远程机器,远程操作系统将所接收数据传给服务器程序,并经服务器程序再次处理后返回到操作系统上的伪终端入口点,最后,远程操作系统将数据传送到用户正在运行的应用程序,这便是一次完整的输入过程;输出将按照同一通路从服务器传送到客户机。 因为每一次的输入和输出,计算机将切换进程环境好几次,这个开销是很昂贵的。还好用户的键入速率并不算高,这个缺点我们仍然能够接受。 .</p><p>强制命令</p><p>我们应该考虑到这样一种情况:假设本地用户运行了远地机器的一个无休止循环的错误命令或程序,且此命令或程序已经停止读取输入,那么操作系统的缓冲区可能因此而被占满,如果这样,远程服务器也无法再将数据写入伪终端,并且最终导致停止从TCP连接读取数据,TCP连接的缓冲区最终也会被占满,从而导致阻止数据流流入此连接。如果以上事情真的发生了,那么本地用户将失去对远程机器的控制。
为了解决此问题,Telnet协议必须使用外带信令以便强制服务器读取一个控制命令。我们知道TCP用紧急数据机制实现外带数据信令,那么Telnet只要再附加一个被称为数据标记(date mark)的保留八位组,并通过让TCP发送已设置紧急数据比特的报文段通知服务器便可以了,携带紧急数据的报文段将绕过流量控制直接到达服务器。作为对紧急信令的相应,服务器将读取并抛弃所有数据,直到找到了一个数据标记。服务器在遇到了数据标记后将返回正常的处理过程。
由于Telnet两端的机器和操作系统的异构性,使得Telnet不可能也不应该严格规定每一个telnet连接的详细配置,否则将大大影响Telnet的适应异构性。因此,Telnet采用选项协商机制来解决这一问题。
Telnet选项的范围很广:一些选项扩充了大方向的功能,而一些选项制涉及一些微小细节。例如:有一个选项可以控制Telnet是在半双工还是全双工模式下工作(大方向);还有一个选项允许远地机器上的服务器决定用户终端类型(小细节)。
Telnet选项的协商方式也很有意思,它对于每个选项的处理都是对称的,即任何一端都可以发出协商申请;任何一端都可以接受或拒绝这个申请。另外,如果一端试图协商另一端不了解的选项,接受请求的一端可简单的拒绝协商。因此,有可能将更新,更复杂的Telnet客户机服务器版本与较老的,不太复杂的版本进行交互操作。如果客户机和服务器都理解新的选项,可能会对交互有所改善。否则,它们将一起转到效率较低但可工作的方式下运行。所有的这些设计,都是为了增强适应异构性,可见Telnet的适应异构性对其的应用和发展是多么重要。
上面讨论了一些原理方面的东西,虽然我们在Telnet的使用过程中很难接触到这一层面,但我认为了解这些是有意义的,它会给我们带来许多启示。下面让我们来看看Win2000的Telnet服务。</p><p>子选项协商</p><p>有些选项不是仅仅用“激活”或“禁止”就能够表达的。指定终端类型就是一个例子,客户进程必须发送用一个A S C I I字符串来表示终端类型。为了处理这种选项,我们必须定义子选项协商机制。
在R F C 1 0 9 1 [ VanBokkelen 1989]中定义了如何表示终端类型这样的子选项协商机制。首先连接的某一方(通常是客户进程)发送3个字节的字符序列来请求激活该选项。
<IAC,WILL,24>
这里的2 4(十进制)是终端类型选项的I D号。如果收端(通常是服务器进程)同意,那么响应数据是:
<IAC,DO,24>
然后服务器进程再发送如下的字符串:
<IAC,SB,24,1,IAC,SE>
该字符串询问客户进程的终端类型。其中S B是子选项协商的起始命令标志。下一个字节的“2 4”代表这是终端类型选项的子选项(通常S B后面的选项值就是子选项所要提交的内容)。下一个字节的“ 1”表示“发送你的终端类型”。子选项协商的结束命令标志也是I A C,就像S B是起始命令标志一样。如果终端类型是i b m p c,客户进程的响应命令将是:
第4个字节“0”代表“我的终端类型是”(在Assigned Numbers RFC文档中有正式的关于终端类型的数值定义,但是最起码在U n i x系统之间,终端类型可以用任何对方可理解的数据进行表示。只要这些数据在t e r m c a p或t e r m i n f o数据库中有定义)。在Te l n e t子选项协商过程中,终端类型用大写表示,当服务器收到该字符串后会自动转换为小写字符。</p><p>UDP是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成[1],提供面向事务的简单不可靠信息传送服务。UDP 协议基本上是IP协议与上层协议的接口。UDP协议适用端口分别运行在同一台设备上的多个应用程序。</p><p> </p>

- 阅读剩余部分 -

哪些协议是基于TCP,哪些协议是基于UDP

<p>这个概念比较模糊,我详细的讲下区别跟内容。
 </p><p>先说区别 :</p><p>TCP(传输控制协议):</p><p>1)提供IP环境下的数据可靠传输(一台计算机发出的字节流会无差错的发往网络上的其他计算机,而且计算机 A接收数据包的时候,也会向计算机B回发数据包,这也会产生部分通信量),有效流控,全双工操作(数据在两个方向上能同时传递),多路复用服务,是面向连 接,端到端的传输;</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>2)面向连接:正式通信前必须要与对方建立连接。事先为所发送的数据开辟出连接好的通道,然后再进行数据发送,像打电话。</p><p>3)TCP支持的应用协议:Telnet(远程登录)、FTP(文件传输协议)、SMTP(简单邮件传输协议)。TCP用于传输数据量大,可靠性要求高的应用。</p><p>UDP(用户数据报协议,User Data Protocol)</p><p>1)面向非连接的(正式通信前不必与对方建立连接,不管对方状态就直接发送,像短信,QQ),不能提供可靠性、流控、差错恢复功能。UDP用于一次只传送少量数据,可靠性要求低、传输经济等应用。</p><p>2) UDP支持的应用协议:NFS(网络文件系统)、SNMP(简单网络管理系统)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。</p><p>总结:</p><p>TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速度慢,建立连接需要开销较多(时间,系统资源)。</p><p>UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。</p><p>
使用TCP协议的常见端口主要有以下几种: (1) FTP:定义了文件传输协议,使用21端口。常说某某计算机开了FTP服务便是启动了文件传输服务。下载文件,上传主页,都要用到FTP服务。 (2) Telnet:它是一种用于远程登陆的端口,用户可以以自己的身份远程连接到计算机上,通过这种端口可以提供一种基于DOS模式下的通信服务。如以前的BBS是-纯字符界面的,支持BBS的服务器将23端口打开,对外提供服务。 (3) SMTP:定义了简单邮件传送协议,现在很多邮件服务器都用的是这个协议,用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口,所以在电子邮件设置-中常看到有这么SMTP端口设置这个栏,服务器开放的是25号端口。 (4) POP3:它是和SMTP对应,POP3用于接收邮件。通常情况下,POP3协议所用的是110端口。也是说,只要你有相应的使用POP3协议的程序(例如Fo-xmail或Outlook),就可以不以Web方式登陆进邮箱界面,直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)。 使用UDP协议端口常见的有: (1) HTTP:这是大家用得最多的协议,它就是常说的"超文本传输协议"。上网浏览网页时,就得在提供网页资源的计算机上打开80号端口以提供服务。常说"WWW服-务"、"Web服务器"用的就是这个端口。 (2) DNS:用于域名解析服务,这种服务在Windows NT系统中用得最多的。因特网上的每一台计算机都有一个网络地址与之对应,这个地址是常说的IP地址,它以纯数字+"."的形式表示。然而这却不便记忆,于是出-现了域名,访问计算机的时候只需要知道域名,域名和IP地址之间的变换由DNS服务器来完成。DNS用的是53号端口。 (3) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。 (4) OICQ:OICQ程序既接受服务,又提供服务,这样两个聊天的人才是平等的。OICQ用的是无连接的协议,也是说它用的是UDP协议。OICQ服务器是使用8-000号端口,侦听是否有信息到来,客户端使用4000号端口,向外发送信息。如果上述两个端口正在使用(有很多人同时和几个好友聊天),就顺序往上加。
HTTP为什么使用TCP
1,如果用UDP,网页源文件传输后不是会错误百出嘛,浏览器解析的时候不是疯掉了!!!
2,udp链接不安全,不可靠,主要应用在不安全性要求不高,效率要求比较高的应用程序,比如聊天程序 
http要处理电子商务的应用。
3,http 协议只定义了应用层的东西,下层的可靠性要传输层来保证,但是没有说一定要用tcp,只要是可以保证可靠性传输层协议都可以承载http,比如有基于 sctp的http实现。 http也不是不能通过udp承载,在手机上就有人自己开发基于reliable udp的http协议,不过都是非标准的

TCP和UDP的区别:
现在Internet上流行的协议是TCP/IP协议,该协议中对低于1024的端口都有确切的定义,他们对应着Internet上一些常见的服务。这些常见的服务可以分为使用TCP端口(面向连接)和使用UDP端口(面向无连接)两种。 
说 到TCP和UDP,首先要明白“连接”和“无连接”的含义,他们的关系可以用一个形象地比喻来说明,就是打电话和写信。两个人如果要通话,首先 要建立连接——即打电话时的拨号,等待响应后——即接听电话后,才能相互传递信息,最后还要断开连接——即挂电话。写信就比较简单了,填写好收信人的地址 后将信投入邮筒,收信人就可以收到了。从这个分析可以看出,建立连接可以在需要痛心地双方建立一个传递信息的通道,在发送方发送请求连接信息接收方响应 后,由于是在接受方响应后才开始传递信息,而且是在一个通道中传送,因此接受方能比较完整地收到发送方发出的信息,即信息传递的可靠性比较高。但也正因为 需要建立连接,使资源开销加大(在建立连接前必须等待接受方响应,传输信息过程中必须确认信息是否传到及断开连接时发出相应的信号等),独占一个通道,在 断开连接钱不能建立另一个连接,即两人在通话过程中第三方不能打入电话。而无连接是一开始就发送信息(严格说来,这是没有开始、结束的),只是一次性的传 递,是先不需要接受方的响应,因而在一定程度上也无法保证信息传递的可靠性了,就像写信一样,我们只是将信寄出去,却不能保证收信人一定可以收到。 
TCP 是面向连接的,有比较高的可靠性,一些要求比较高的服务一般使用这个协议,如FTP、Telnet、SMTP、HTTP、POP3等,而 UDP是面向无连接的,使用这个协议的常见服务有DNS、SNMP、QQ等。对于QQ必须另外说明一下,QQ2003以前是只使用UDP协议的,其服务器 使用8000端口,侦听是否有信息传来,客户端使用4000端口,向外发送信息(这也就不难理解在一般的显IP的QQ版本中显示好友的IP地址信息中端口 常为4000或其后续端口的原因了),即QQ程序既接受服务又提供服务,在以后的QQ版本中也支持使用TCP协议了。</p><p> </p><p>结尾</p><p>附带一个TCP/UDP的端口列表 </p><p>http://zh.wikipedia.org/wiki/TCP/UDP%E7%AB%AF%E5%8F%A3%E5%88%97%E8%A1%A8</p><p>然后教你怎么监听查看你现在用的端口协议</p><p>开始菜单--->运行--->cmd--->netstat -a  netstat -n</p><p> </p>

- 阅读剩余部分 -

在国内Windows Azure网站服务上一键发布Wordpress, phpBB, joomla等应用

<p>用过Windows Azure海外版的用户都会发现Azure网站服务有一项很强大的功能,就是直接从网站服务的应用模板库里部署应用,这些应用基于.NET, PHP, Nodejs框架,使用SQL或者MySQL数据库,它们都是开源免费的,部署时无需任何费用。这些应用包括各种常见的博客、维基、电子商务、内容管理、 门户等,如Wordpress,PHPBB,MediaWiki等等,目前总共有70多个应用,全部列表在这里</p><p>http://www.microsoft.com/web/gallery/categories.aspx<;/p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p> </p><p>在国际版的Azure管理门户里,所有这些模板库都已经集成到了网站服务的部署列表里面,用户只需要选择想要使用的应用,就可以在几分钟内完成网站 的搭建。Windows Azure会自动将代码拷贝到虚拟空间中,并配置所需的SQL、MySQL数据库。用户无需修改一行代码,就像使用手机应用商店一样简单</p><p></p><p> </p><p>目前Windows Azure已经落地国内,不过,由于种种原因,网站应用商店并没有出现在国内版上,国内版的网站服务,只是提供虚拟空间和SQL数据库。用户只能自己准备代码,手动发布到Azure网站上。如果使用到MySQL数据库,也需要自己部署配置</p><p> </p><p>今天,我介绍一种方法,同样可以实现上述应用的一键式发布,解决目前没有应用商店的问题。目前这个方法只能在Windows上运行,需要Win7以上版本</p><p> </p><p>首先,我们要了解一个工具,叫WebMatrix。这是微软发布的一个免费工具,是一个面向Web开发的IDE,支持.NET, Javascript, Nodejs, CSS, PHP等主流Web开发语言。它可以做代码编辑(支持语法高亮,代码提示),可以做代码管理(与TFS和Github集成),可以做代码调试(集成 PHP、IIS、Node本地运行环境),还可以做代码发布(通过FTP发布至虚拟主机,通过Web Deploy发布至Windows Azure网站服务)。所以,这个工具就相当于一个轻量级的Visual studio</p><p> </p><p>具体的配置过程分为以下几步:</p><p>1. 安装Webmatrix,从应用模板库生成一个项目</p><p>2. 创建一个Windows Azure网站</p><p>3. 创建一个Windows Azure虚拟机,部署MySQL,创建数据库</p><p>4. 从WebMatrix发布应用至Windows Azure</p><p>由于国内版没提供MySQL服务,所以第三步我们需要自己创建MySQL虚拟机</p><p> </p><p>下面看下具体的步骤</p><p>安装这个工具非常简单,进入其页面点击下载安装即可,http://www.microsoft.com/web/webmatrix/<;/p><p></p><p> </p><p>这个安装过程中,各种所需的插件会被安装,包括Web platform intaller, IIS express, Powershell等等.</p><p> </p><p>安装之后,启动WebMatrix,选择新建->应用程序库</p><p></p><p> </p><p>在库中选择感兴趣的应用</p><p></p><p> </p><p>在下一步中,Webmatrix提示Azure网站信息,由于缺省连接国际站点,因此这里我们跳过</p><p></p><p> </p><p>这一步中,Webmatrix会下载应用代码包。点击接受</p><p></p><p> </p><p>接下来系统就开始下载、配置。神奇的事情发生了,等配置结束后,系统自动弹出浏览器访问应用。</p><p></p><p>这里我们选择的是wordpress,我们知道这个应用是PHP开发的,需要PHP运行环境、MySQL来支持。Webmatrix如何能够把它运行起来呢?</p><p> </p><p>其实Webmatrix在后台做了一些事,首先它安装了IIS Express服务器作为Web服务器,然后它下载了PHP,并把它和IIS配置在一起,最后它下载了MySQL,并在后台启动</p><p> </p><p>于是,我们在1分钟之内,就拥有了一个可调试的Wordpress环境。回到Webmatrix,可以浏览应用所有的代码,进行代码的编辑。工作左 上角可以进行本地运行环境的控制,比如重启。还可以在“运行”工具按钮中,选择使用不同浏览器来打开目标网站,如IE、Firefox、Chrome</p><p></p><p>点击左下角的“数据库”按钮,可以查看当前使用的数据库,还可以进行库和表的管理操作</p><p></p><p> </p><p>下面,就可以准备Windows Azure之上的运行环境了。首先,我们需要创建一个网站。点击Azure管理页面左下角的“新建”->计算->网站->自定义创建。 为网站起个名字。如果目标应用用到了SQL数据库,则我们可以选择创建一个,如果用到MySQL,则不选数据库。</p><p></p><p>创建完成后,点击网站进入其管理页,点击右侧“下载发布配置文件”,并保存。这个文件提供了该网站的发布地址,在后续Webmatrix发布时使用</p><p></p><p> </p><p>如果应用需要MySQL,则我们需要创建一个虚拟机,然后配置MySQL,创建相应的数据库、用户,并为用户授权,允许远程访问该库。最后,我们需要开放3306端口给应用。需要注意的是,公用端口必须是3306,否则Webmatrix无法连接</p><p></p><p> </p><p>接下来,就可以正式发布了。点击Webmatrix中的发布按钮,选择“导入发布配置文件”</p><p></p><p> </p><p>选择刚才下载的文件</p><p></p><p> </p><p>导入后,Webmatrix会显示发布的连接信息。但数据库部分需要自己输入。如果是SQL,可以在刚才创建的Windows Azure SQL数据库管理页面里找到连接字符串。如果是MySQL,需逐项输入服务器、数据库、用户等信息</p><p></p><p> </p><p>输入完成后,点击验证连接,看看是否能连上,如果连不上,说明数据库配置有问题,要么是端口没开,要么是权限不对。可以通过其他MySQL客户端连接下试试</p><p></p><p>继续下一步,Webmatrix会进行进一步检查</p><p></p><p> </p><p>检查成功后,就可以发布了。在下一步会看到发布预览,看哪些文件会更新,哪些会新增。选中数据库,这样会同时发布数据库,否则数据库还要配置</p><p></p><p>开始发布后,我们可以看到底部滚动的发布日志,完成后,点击链接,就可以打开部署在Azure上的网站。</p><p></p><p> </p><p>回顾整个发布过程,我们是通过Webmatrix作为一个工具进行代码下载和上传。Webmatrix在发布的过程中做了一个小操作,保证了数据库配置的正确性。打开本地的wp-config.php文件,我们可以看到数据库的连接指向本地数据库。</p><p></p><p>打开远程同一个文件,可以看到连接指向远程库。也就是说,在发布过程中,Webmatrix自动改变了数据库的连接信息</p><p></p><p> </p><p>Webmatrix还有其他一些强大的功能,大家可以自己研究下。而Webmatrix里面连接的这个应用模板库,是一个开源免费的仓库,每个开发 者都可以上传自己的开源项目,让其他用户下载。关于如何发布应用到模板库中,可以参考http://www.microsoft.com/web /gallery/developer.aspx</p><p></p>

- 阅读剩余部分 -

IIS7.5 配置 PHP 5.3.5

  • <div>首先确认IIS中启用了CGI功能:</div>
<p style="margin-left:auto;"></p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>​</p>
  • <div>IIS 7.5中为了易于PHP程序的安装,增设了PHP Manager模块。只要您简单设定,其它的工作自动到位!下载地址:http://phpmanager.codeplex.com/releases/view/62183,安装。</div>
  • <div>再开启IIS,会发现里面多了一个PHP Manager图标项了。</div>
<p style="margin-left:auto;">                                                      </p>
  • <div>到http://php.net/downloads.php 下载最新的php版本(此处以php5.3.5为例)。我们下载【VC9 x86 Non Thread Safe】这个版本的zip包就好。

    然后,解压到C:PHP5.3.5中就可以了</div>
  • 配置文件修改。

    将php.ini-development改名为php.ini 

    修改php.ini 查找data.timezone  修改为date.timezone = “Asia/Shanghai”(这里必须改,不然会出警告)   

    找到Windows Extensions开启 所需模块,如:php_curl.dll  php_mysql.dll   php_mysqli.dll   php_xmlrpc.dll   php_curl.dll   只要去掉前面的 分号 保存就可以了
  • 回到IIS界面,双击PHP Manager后,点击“Register new PHP Version”,然后选择好c:php5.3.5php-cgi.exe,就OK了。然后静悄悄的php.ini就会为适合IIS7.5的配置默认给你生成好了。
<p style="margin-left:auto;">
最后核验一下吧,仍在这个界面上,可以点一下“Check phpinfo()”;然后无意外的情况下会弹出令人激动的PHPInfo页面了!</p>

- 阅读剩余部分 -

关于集群和分布式部署

<p>EJB的RPC是同步调用可实现分布式计算,是SessionBean和EntityBean用的,而JMS是异步调用。RMI,和webservice也可以实现分布式计算。</p><div style="page-break-after: always;"><span style="display: none;"><!--more-->& nbsp ;</span></div><p>
举 例说明,假设我们的系统有三个EJB组件:人事、财务、销售,都是开放远程接口,有A、B两台应用服务器,EJB分布式的概念就是可以在 A上部署人事、财务的EJB包,在B上部署销售的EJB包,假如有一天用户发现负载不太均衡,就可能调整为在A上部署财务的EJB包,在B上部署人事、销 售的EJB包,而程序不必修改。</p><p>而应用服务器集群是这样的,在A、B上都部署全部EJB包,当然还需要在服务器上进行一些集群的设置,这样一来,负载均衡就完全交给应用服务器来管理了。</p><p>至于集群是否足以替代分布式部署(注意:不是分布式计算),正是大家争论的焦点。</p><p>EJB解决的是分布式计算问题,不是群集问题,就算你用EJB,你照样无法做到缓存同步,Session同步,分布式和群集是两个不同的概念</p><p>主 要看具体是什么集群。现在有些用F5之类的负载均衡器的应用也被叫做集群,还有双机热备(部分人也把它叫集群,其实只有一台机器在工作,另一台是 备份机,平时不参与业务,只有主机不能提供服务的时候,备份机采工作)。还有用一些JVM集群缓存软件构件的集群。这些集群每台机器一般都需要单独部署。 因为使用F5负载均衡和双机热备的,其实是一台台单机。JVM缓存我没有用过,不太清楚。不过估计应用服务器自己并不知道还有其他机器和自己同步。</p><p>标准的JavaEE集群一般分两种,war集群及EJB集群。war因为考虑到Session复制的问题,一般不推荐做大集群。不过用来做2-3台的廉价入门集群还是可以的。
EJB 集群一般在上面部署的都是EJB组件。不同厂商用不同的办法来保证有状态SessionBean的集群复制。比如Weblogic采用双机结对、Sun使 用特殊的数据库同步。一般有一台专门的代理管理服务器负责对整个集群的管理,所以在这台管理器上进行部署就可以了。
应用在集群上面跑和在单机 上 面跑是完全不同的两个概念。很多单机上可以使用的框架和设计模式在集群环境下是绝对不能使用的。比如单例模式。集群环境下根本无法再集群中只有一个单例, 每个服务器都会有自己的单例。还有就是Spring,Spring目前是不能用于标准的JavaEE集群环境下的(因为spring里应用了很多 singleton模式)。当然,有人推出了Spring的集群框架,不过我不太清楚是否好用。AOP配置集群的话,估计会很复杂。</p><p>
别人说的,没实趼过...</p><p>
标准的JavaEE集群,一般情况下是这样的。
入口是一个负载均衡器(有时候也用apache之类的),然后是若干台web服务器(如Tomcat),再后边是EJB集群。最后是数据库。
这是JavaEE集群模型的标准构造。JavaEE集群的核心是EJB集群。但是如果应用没有达到足够大的规模,且设计不好的话,会产生很多问题。这也是当初为什么老EJB架构被人诟病的地方。</p><p>单 机应用是中小型项目的主流。我们在中小型项目中一般只用到事务处理,分布式、容灾等功能一般用不上。所以Spring才会发展这么快。但是企业在 发展,当初用Spring开发的程序需要跑集群了,结果发现无法在集群上使用,所以才会出现用AOP方式对Spring添加集群和JVM分布式缓存来进行 集群化的方案。但即使如此,很多单机下可以使用的代码,在集群下可能是根本无法跑的。单例、静态对象等等,在集群模式下会出现各种问题。
所以,现在很多人都只用F5和Apache做分发器,后边跟一大堆互不往来的Tomcat之类的Web服务器。这么做最大的问题是无法使用缓存。因为如果使用缓存,那么其他机器更改了数据库的话,缓存无法刷新而形成脏数据。结果大大拖累了性能。
如果你的应用是中小型低负载应用,那么可以只考虑单机。如果以后要使用集群,可以先用Spring集群(好像是叫Cluster4Spring)和JVM分布式缓存。如果应用大到必须分布式的程度,那么还是更换成EJB架构吧。</p>

- 阅读剩余部分 -

随机文章

最近回复

分类

其它

友情连接

推广链接