﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-大话人生-随笔分类-网络</title><link>http://www.cnitblog.com/stomic/category/7076.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 19 Dec 2013 09:42:33 GMT</lastBuildDate><pubDate>Thu, 19 Dec 2013 09:42:33 GMT</pubDate><ttl>60</ttl><item><title>浅谈HTTP中Get与Post的区别</title><link>http://www.cnitblog.com/stomic/archive/2013/12/17/89044.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Mon, 16 Dec 2013 17:28:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2013/12/17/89044.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/89044.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2013/12/17/89044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/89044.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/89044.html</trackback:ping><description><![CDATA[<div>　Http定义了与服务器交互的不同方法，最基本的方法有4种，分别是GET，POST，PUT，DELETE。URL全称是资源描述符，我们可以 这样认为：一个URL地址，它用于描述一个网络上的资源，而HTTP中的GET，POST，PUT，DELETE就对应着对这个资源的<span style="color: #ff0000;">查</span>，<span style="color: #ff0000;">改</span>，<span style="color: #ff0000;">增</span>，<span style="color: #ff0000;">删</span>4个操作。到这里，大家应该有个大概的了解了，GET一般用于<span style="color: #ff0000;">获取/查询</span>资源信息，而POST一般用于<span style="color: #ff0000;">更新</span>资源信息。 <p>　　<span style="color: #0000ff;"><span style="font-size: large;"><strong>1</strong></span>.根据HTTP规范，GET用于信息获取，而且应该是安全的和幂等的</span>。</p> <p>　　(1).所谓安全的意味着该操作用于获取信息而非修改信息。换句话说，GET 请求一般不应产生副作用。就是说，它仅仅是获取资源信息，就像数据库查询一样，不会修改，增加数据，不会影响资源的状态。</p> <p>　　* 注意：这里安全的含义仅仅是指是非修改信息。</p> <p>　　(2).幂等的意味着对同一URL的多个请求应该返回同样的结果。这里我再解释一下<strong><span style="color: #0000ff;">幂等</span></strong>这个概念：</p> <div><span style="color: #000000;">　　<strong><span style="color: #0000ff;">幂等</span></strong>（idempotent、idempotence）是一个数学或计算机学概念，常见于抽象代数中。<br />　　幂等有一下几种定义：<br />　　对于单目运算，如果一个运算对于在范围内的所有的一个数多次进行该运算所得的结果和进行一次该运算所得的结果是一样的，那么我们就称该运算是幂等的。比如绝对值运算就是一个例子，在实数集中，有<span style="color: #0000ff;">abs(a)</span></span><span style="color: #0000ff;">=</span><span style="color: #000000;"><span style="color: #0000ff;">abs(abs(a))</span>。<br />　　对于双目运算，则要求当参与运算的两个值是等值的情况下，如果满足运算结果与参与运算的两个值相等，则称该运算幂等，如求两个数的最大值的函数，有在在实数集中幂等，即<span style="color: #0000ff;">max(x,x)&nbsp;</span></span><span style="color: #0000ff;">=</span><span style="color: #000000;"><span style="color: #0000ff;">&nbsp;x</span>。</span></div> <p> 看完上述解释后，应该可以理解GET幂等的含义了。</p> <p>　　但在实际应用中，以上2条规定并没有这么严格。引用别人文章的例子：比如，新闻站点的头版不断更新。虽然第二次请求会返回不同的一批新闻，该操 作仍然被认为是安全的和幂等的，因为它总是返回当前的新闻。从根本上说，如果目标是当用户打开一个链接时，他可以确信从自身的角度来看没有改变资源即可。</p> <p>　　<span style="color: #0000ff;"><span style="font-size: large;"><strong>2</strong></span>.</span><span style="color: #0000ff;">根据HTTP规范，POST表示可能修改变服务器上的资源的请求</span>。继续引用上面的例子：还是新闻以网站为例，读者对新闻发表自己的评论应该通过POST实现，因为在评论提交后站点的资源已经不同了，或者说资源被修改了。</p> <p>&nbsp;</p> <p>　　上面大概说了一下HTTP规范中GET和POST的一些原理性的问题。但在实际的做的时候，很多人却没有按照HTTP规范去做，导致这个问题的原因有很多，比如说：</p> <p>　　<span style="font-size: large;"><strong>1</strong></span>.很多人贪方便，更新资源时用了GET，因为用POST必须要到FORM（表单），这样会麻烦一点。</p> <p>　　<span style="font-size: large;"><strong>2</strong></span>.对资源的增，删，改，查操作，其实都可以通过GET/POST完成，不需要用到PUT和DELETE。</p> <p>　　<span style="font-size: large;"><strong>3</strong></span>.另外一个是，早期的Web MVC框架设计者们并<span style="color: #ff0000;">没有有意识地将URL当作抽象的资源来看待和设计</span>，所以导致一个比较严重的问题是传统的Web MVC框架基本上都只支持GET和POST两种HTTP方法，而不支持PUT和DELETE方法。</p> <p>&nbsp;　　* 简单解释一下MVC：MVC本来是存在于Desktop程序中的，M是指数据模型，V是指用户界面，C则是控制器。使用MVC的目的是将M和V的实现代码分离，从而使同一个程序可以使用不同的表现形式。</p> <p>　　以上3点典型地描述了老一套的风格（没有严格遵守HTTP规范），随着架构的发展，现在出现REST(Representational  State Transfer)，一套支持HTTP规范的新风格，这里不多说了，可以参考《RESTful Web Services》。</p> <p>&nbsp;</p> <p>　　说完原理性的问题，我们再从<span style="color: #0000ff;">表面现像上面看看GET和POST的区别</span>：</p> <p>　　<span style="font-size: large;"><strong>1</strong></span>.GET请求的数据会附在URL之后（就是 把数据放置在HTTP协议头中），以?分割URL和传输数据，参数之间以&amp;相连，如：login.action?name=hyddd&amp; password=idontknow&amp;verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字，原样发送，如果是空 格，转换为+，如果是中文/其他字符，则直接把字符串用BASE64加密，得出如：%E4%BD%A0%E5%A5%BD，其中％XX中的XX为该符号以 16进制表示的ASCII。</p> <p>　　POST把提交的数据则放置在是HTTP包的包体中。</p> <p>　　<span style="font-size: large;"><strong>2</strong></span>."GET方式提交的数据最多只能是1024字节，理论上POST没有限制，可传较大量的数据，IIS4中最大为80KB，IIS5中为100KB"？？！</p> <p>　　以上这句是我从其他文章转过来的，其实这样说是错误的，不准确的：</p> <p>　　(1).首先是"GET方式提交的数据最多只能是1024字节"，因为GET是通过URL提交数据，那么GET可提交的数据量就跟URL的长度有直接关系了。而实际上，<span style="color: #0000ff;">URL不存在参数上限的问题</span>，<span style="color: #0000ff;">HTTP协议规范没有对URL长度进行限制</span>。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器，如Netscape、FireFox等，理论上没有长度限制，其限制取决于操作系统的支持。</p> <p>　　注意这是限制是整个URL长度，而不仅仅是你的参数值数据长度。[见参考资料5]</p> <p>　　(2).理论上讲，<span style="color: #0000ff;">POST是没有大小限制的</span>，<span style="color: #0000ff;">HTTP协议规范也没有进行大小限制</span>，说&#8220;POST数据量存在80K/100K的大小限制&#8221;是不准确的，POST数据是没有限制的，起限制作用的是服务器的处理程序的处理能力。</p> <p>　　对于ASP程序，Request对象处理每个表单域时存在100K的数据长度限制。但如果使用Request.BinaryRead则没有这个限制。</p> <p>　　由这个延伸出去，对于IIS 6.0，微软出于安全考虑，加大了限制。我们还需要注意：</p> <p>　　　　 1).IIS 6.0默认ASP POST数据量最大为200KB，每个表单域限制是100KB。<br />　　　　 2).IIS 6.0默认上传文件的最大大小是4MB。<br />　　　　 3).IIS 6.0默认最大请求头是16KB。<br />　　IIS 6.0之前没有这些限制。[见参考资料5]</p> <p>　　所以上面的80K，100K可能只是默认值而已(注：关于IIS4和IIS5的参数，我还没有确认)，但肯定是可以自己设置的。由于每个版本的IIS对这些参数的默认值都不一样，具体请参考相关的IIS配置文档。</p> <p>　　<span style="font-size: large;"><strong>3</strong></span>.在ASP中，服务端获取GET请求参数用 Request.QueryString，获取POST请求参数用Request.Form。在JSP中，用 request.getParameter(\"XXXX\")来获取，虽然jsp中也有request.getQueryString()方法，但使用 起来比较麻烦，比如：传一个test.jsp?name=hyddd&amp;password=hyddd，用 request.getQueryString()得到的是：name=hyddd&amp;password=hyddd。在PHP中，可以 用$_GET和$_POST分别获取GET和POST中的数据，而$_REQUEST则可以获取GET和POST两种请求中的数据。值得注意的是，JSP 中使用request和PHP中使用$_REQUEST都会有隐患，这个下次再写个文章总结。</p> <p>　　<span style="font-size: medium;"><strong>4</strong></span>.POST的安全性要比GET的安全性 高。注意：这里所说的安全性和上面GET提到的&#8220;安全&#8221;不是同个概念。上面&#8220;安全&#8221;的含义仅仅是不作数据修改，而这里安全的含义是真正的Security 的含义，比如：通过GET提交数据，用户名和密码将明文出现在URL上，因为(1)登录页面有可能被浏览器缓存，(2)其他人查看浏览器的历史纪录，那么 别人就可以拿到你的账号和密码了，除此之外，使用GET提交数据还可能会造成Cross-site request forgery攻击。</p> <p>　　总结一下，<span style="color: #0000ff;">Get</span>是向服务器发索取数据的一种<span style="color: #0000ff;">请求</span>，而<span style="color: #0000ff;">Post</span>是向服务器提交数据的一种<span style="color: #0000ff;">请求</span>，在FORM（表单）中，Method默认为"GET"，实质上，GET和POST只是发送机制不同，并不是一个取一个发！</p> <p>　　纯属hyddd个人总结，如有错漏请指出。:&gt;</p></div><img src ="http://www.cnitblog.com/stomic/aggbug/89044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2013-12-17 01:28 <a href="http://www.cnitblog.com/stomic/archive/2013/12/17/89044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP和HTTPS</title><link>http://www.cnitblog.com/stomic/archive/2012/01/06/77067.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Fri, 06 Jan 2012 11:50:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2012/01/06/77067.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/77067.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2012/01/06/77067.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/77067.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/77067.html</trackback:ping><description><![CDATA[<div><p align="left">HTTP协议是什么？</p> <p align="left">简单来说，就是一个基于应用层的通信规范：双方要进行通信，大家都要遵守一个规范，这个规范就是HTTP协议。</p> <p align="left">HTTP协议能做什么？</p> <p align="left">很多人首先一定会想到：浏览网页。没错，浏览网页是HTTP的主要应用，但是这并不代表HTTP就只能应用于网页的浏览。HTTP是一种协议，只要通信的双方都遵守这个协议，HTTP就能有用武之地。比如咱们常用的QQ，迅雷这些软件，都会使用HTTP协议(还包括其他的协议)。</p> <p align="left">HTTP协议如何工作？</p> <p align="left">大家都知道一般的通信流程：首先客户端发送一个请求(request)给服务器，服务器在接收到这个请求后将生成一个响应(response)返回给客户端。</p> <p align="left">在这个通信的过程中HTTP协议在以下4个方面做了规定：</p> <p align="left"><strong>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>Request</strong><strong>和Response</strong><strong>的格式</strong></p> <p style="margin-left: 21pt;" align="left">Request格式：</p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt;">HTTP</span>请求行<span style="font-size: 10pt;"> <br /></span>（请求）头<span style="font-size: 10pt;"> <br /></span>空行<span style="font-size: 10pt;"> <br /></span>可选的消息体<span style="font-size: 10pt;"> <br /><br /></span></p> <p style="margin-left: 42pt;" align="left">注：请求行和标题必须以<span style="font-size: 10pt;">&lt;CR&gt;&lt;LF&gt; </span>作为结尾（也就是，回车然后换行）。空行内必须只有<span style="font-size: 10pt;">&lt;CR&gt;&lt;LF&gt;</span>而无其他空格。在<span style="font-size: 10pt;">HTTP/1.1 </span>协议中，所有的请求头，除<span style="font-size: 10pt;">Host</span>外，都是可选的。</p> <p style="margin-left: 42pt;" align="left">&nbsp;</p> <p style="margin-left: 42pt;" align="left">实例：</p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">GET / HTTP/1.1</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Host: gpcuster.cnblogs.com</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Accept-Language: en-us,en;q=0.5</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Accept-Encoding: gzip,deflate</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Keep-Alive: 300</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Connection: keep-alive</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">If-Modified-Since: Mon, 25 May 2009 03:19:18 GMT</span></p> <p style="margin-left: 21pt;" align="left"><span style="font-size: 10pt;">Response</span>格式：</p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt;">HTTP</span>状态行<span style="font-size: 10pt;"> <br /></span>（应答）头<span style="font-size: 10pt;"> <br /></span>空行<span style="font-size: 10pt;"> <br /></span>可选的消息体</p> <p style="margin-left: 42pt;" align="left">&nbsp;</p> <p style="margin-left: 42pt;" align="left">实例：</p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">HTTP/1.1 200 OK</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Cache-Control: private, max-age=30</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Content-Type: text/html; charset=utf-8</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Content-Encoding: gzip</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Expires: Mon, 25 May 2009 03:20:33 GMT</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Last-Modified: Mon, 25 May 2009 03:20:03 GMT</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Vary: Accept-Encoding</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Server: Microsoft-IIS/7.0</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">X-AspNet-Version: 2.0.50727</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">X-Powered-By: ASP.NET</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Date: Mon, 25 May 2009 03:20:02 GMT</span></p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">Content-Length: 12173</span></p> <p style="margin-left: 42pt;" align="left">&nbsp;</p> <p style="margin-left: 42pt;" align="left"><span style="font-size: 10pt; color: #943634;">&#173;</span>消息体的内容（略）</p> <p style="margin-left: 42pt;" align="left">&nbsp;</p> <p align="left"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>详细的信息请参考：<span style="font-size: 10pt;"><a href="http://rfc.sunsite.dk/rfc/rfc2616.html"><span color="#e9650e" style="color: #e9650e;">RFC 2616</span></a></span>。</p> <p align="left"><span style="font-size: 10pt;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>关于<span style="font-size: 10pt;">HTTP headers</span>的简要介绍，请查看：<span style="font-size: 10pt;"><a href="http://www.cs.tut.fi/%7Ejkorpela/http.html"><span color="#e9650e" style="color: #e9650e;">Quick reference to HTTP headers</span></a></span></p> <p align="left"><strong>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>建立连接的方式</strong></p> <p style="margin-left: 21pt;" align="left">HTTP支持2中建立连接的方式：非持久连接和持久连接(HTTP1.1默认的连接方式为持久连接)。</p> <p align="left">1)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>非持久连接</p> <p style="margin-left: 42pt;" align="left"><span>让我们查看一下非持久连接情况下从服务器到客户传 送一个Web页面的步骤。假设该贝面由1个基本HTML文件和10个JPEG图像构成，而且所有这些对象都存放在同一台服务器主机中。再假设该基本 HTML文件的URL为：gpcuster.cnblogs.com/index.html。</span></p> <p style="margin-left: 42pt;" align="left">下面是具体步骡:</p> <p style="margin-left: 42pt;" align="left">1.HTTP客户初始化一个与服务器主机gpcuster.cnblogs.com中的HTTP服务器的TCP连接。HTTP服务器使用默认端口号80监听来自HTTP客户的连接建立请求。</p> <p style="margin-left: 42pt;" align="left">2.HTTP客户经由与TCP连接相关联的本地套接字发出&#8212;个HTTP请求消息。这个消息中包含路径名/somepath/index.html。</p> <p style="margin-left: 42pt;" align="left">3.HTTP服务器经由与TCP连接相关联的本地套接字接收这个请求消息，再从服务器主机的内存或硬盘中取出对象/somepath/index.html，经由同一个套接字发出包含该对象的响应消息。</p> <p style="margin-left: 42pt;" align="left">4.HTTP服务器告知TCP关闭这个TCP连接(不过TCP要到客户收到刚才这个响应消息之后才会真正终止这个连接)。</p> <p style="margin-left: 42pt;" align="left">5.HTTP客户经由同一个套接字接收这个响应消息。TCP连接随后终止。该消息标明所封装的对象是一个HTML文件。客户从中取出这个文件，加以分析后发现其中有10个JPEG对象的引用。</p> <p style="margin-left: 42pt;" align="left">6.给每一个引用到的JPEG对象重复步骡1-4。</p> <p style="margin-left: 42pt;" align="left"><span>上述步骤之所以称为使用非持久连接，原因是每次服 务器发出一个对象后，相应的TCP连接就被关闭，也就是说每个连接都没有持续到可用于传送其他对象。每个TCP连接只用于传输一个请求消息和一个响应消 息。就上述例子而言，用户每请求一次那个web页面，就产生11个TCP连接。</span></p> <p align="left">2)<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>持久连接</p> <p style="margin-left: 42pt;" align="left">非持久连接有些缺点。首先，客户得为每个待请求的对象建立并维护一个新的连接。对于每个这样的连接，TCP得在客户端和服务器端分配TCP缓冲区，并维持TCP变量。对于有可能同时为来自数百个不同客户的请求提供服务的web服务器来说，这会严重增加其负担。其次，如前所述，每个对象都有2个RTT的响应延长&#8212;&#8212;一个RTT用于建立TCP连接，另&#8212;个RTT用于请求和接收对象。最后，每个对象都遭受TCP缓启动，因为每个TCP连接都起始于缓启动阶段。不过并行TCP连接的使用能够部分减轻RTT延迟和缓启动延迟的影响。</p> <p style="margin-left: 42pt;" align="left">在持久连接情况下，服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。整个Web页面(上例中为包含一个基本HTMLL文件和10个图像的页面)自不用说可以通过单个持久TCP连接发送:甚至存放在同一个服务器中的多个web页面也可以通过单个持久TCP连接发送。通常，HTTP服务器在某个连接闲置一段特定时间后关闭它，而这段时间通常是可以配置的。持久连接分为不带流水线(without pipelining)和带流水线(with pipelining)两个版本。如果是不带流水线的版本，那么客户只在收到前一个请求的响应后才发出新的请求。这种情况下，web页面所引用的每个对象(上例中的10个图像)都经历1个RTT的延迟，用于请求和接收该对象。与非持久连接2个RTT的延迟相比，不带流水线的持久连接已有所改善，不过带流水线的持久连接还能进一步降低响应延迟。不带流水线版本的另一个缺点是，服务器送出一个对象后开始等待下一个请求，而这个新请求却不能马上到达。这段时间服务器资源便闲置了。</p> <p style="margin-left: 42pt;" align="left">HTTP/1.1的默认模式使用带流水线的持久连接。这种情况下，HTTP客户每碰到一个引用就立即发出一个请求，因而HTTP客户可以一个接一个紧挨着发出各个引用对象的请求。服务器收到这些请求后，也可以一个接一个紧挨着发出各个对象。如果所有的请求和响应都是紧挨着发送的，那么所有引用到的对象一共只经历1个RTT的延迟(而不是像不带流水线的版本那样，每个引用到的对象都各有1个RTT的延迟)。另外，带流水线的持久连接中服务器空等请求的时间比较少。与非持久连接相比，持久连接(不论是否带流水线)除降低了1个RTT的响应延迟外，缓启动延迟也比较小。其原因在于既然各个对象使用同一个TCP连接，服务器发出第一个对象后就不必再以一开始的缓慢速率发送后续对象。相反，服务器可以按照第一个对象发送完毕时的速率开始发送下一个对象。</p> <p align="left"><strong>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>缓存的机制</strong></p> <p style="margin-left: 21pt;" align="left">HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求，同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量；HTTP利用一个&#8220;过期（expiration）&#8221;机制来为此目的。后者减少了网络应用的带宽；HTTP用&#8220;验证（validation）&#8221;机制来为此目的。</p> <p style="margin-left: 21pt;" align="left">HTTP定义了3种缓存机制：</p> <p align="left"><span style="font-size: 10pt; font-family: wingdings;">l </span><strong><span style="font-size: 10pt;">Freshness</span></strong><span style="font-size: 10pt;">  allows a response to be used without re-checking it on the origin  server, and can be controlled by both the server and the client. For  example, the Expires response header gives a date when the document  becomes stale, and the Cache-Control: max-age directive tells the cache  how many seconds the response is fresh for.</span></p> <p align="left"><span style="font-size: 10pt; font-family: wingdings;">l </span><strong><span style="font-size: 10pt;">Validation</span></strong><span style="font-size: 10pt;">  can be used to check whether a cached response is still good after it  becomes stale. For example, if the response has a Last-Modified header, a  cache can make a <em><span style="font-style: normal;">conditional request</span></em><em> </em>using the If-Modified-Since header to see if it has changed.</span></p> <p align="left"><span style="font-family: wingdings;">l </span><strong><span style="font-size: 10pt;">Invalidation</span></strong><span style="font-size: 10pt;">  is usually a side effect of another request that passes through the  cache. For example, if URL associated with a cached response  subsequently gets a POST, PUT or DELETE request, the cached response  will be invalidated.</span></p> <p style="margin-left: 21pt;" align="left">关于web缓存方面的内容可以参考：<span style="font-size: 10pt;">Caching Tutorial for Web Authors and Webmasters</span>（<span style="font-size: 10pt;"><a target="_blank" href="http://www.mnot.net/cache_docs"><span color="#e9650e" style="color: #e9650e;">英文版</span></a></span>）（<span style="font-size: 10pt;"><a target="_blank" href="http://www.chedong.com/tech/cache_docs.html"><span color="#e9650e" style="color: #e9650e;">中文版</span></a></span>）</p> <p align="left"><strong>4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>响应授权激发机制</strong></p> <p style="margin-left: 21pt;" align="left">这些机制能被用于服务器激发客户端请求并且使客户端授权。</p> <p style="margin-left: 21pt;" align="left">详细的信息请参考：<a href="http://www.ietf.org/rfc/rfc2617.txt"><span color="#e9650e" style="color: #e9650e;">RFC 2617: HTTP Authentication: Basic and Digest Access</span></a></p> <p><strong>5.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong><strong>基于HTTP的应用</strong></p> <p>1 HTTP代理</p> <blockquote> <p><a name="Topic161"></a>原理</p> <p><a href="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img3_2.gif"><img src="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img3_thumb.gif" alt="index_img3" style="display: inline; border-width: 0px;" title="index_img3" border="0" height="99" width="244" /></a></p> </blockquote> <blockquote> <p><a name="Topic163"></a>分类</p> <ol><li><a name="Topic164"></a>透明代理 </li><li><a name="Topic165"></a>非透明代理 </li><li><a name="Topic166"></a>反向代理 </li></ol> <p><a href="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img4_2.gif"><img src="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img4_thumb.gif" alt="index_img4" style="display: inline; border-width: 0px;" title="index_img4" border="0" height="95" width="244" /></a></p> <p><a href="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img5_2.gif"><img src="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img5_thumb.gif" alt="index_img5" style="display: inline; border-width: 0px;" title="index_img5" border="0" height="209" width="244" /></a></p> </blockquote> <p><a name="Topic17"></a>2 多线程下载</p> <ol><li>&nbsp; <ol><li><a name="Topic169"></a>下载工具开启多个发出HTTP请求的线程 </li><li><a name="Topic170"></a>每个http请求只请求资源文件的一部分：Content-Range: bytes 20000-40000/47000 </li><li><a name="Topic171"></a>合并每个线程下载的文件 </li></ol></li></ol> <p>3 HTTPS传输协议原理</p> <blockquote> <p><a name="Topic172"></a>两种基本的加解密算法类型</p> </blockquote> <blockquote> <p><a name="Topic173"></a>对称加密：密钥只有一个，加密解密为同一个密码，且加解密速度快，典型的对称加密算法有DES、AES等</p> <p><a href="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img6_2.gif"><img src="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img6_thumb.gif" alt="index_img6" style="display: inline; border-width: 0px;" title="index_img6" border="0" height="112" width="244" /></a> </p> <p><a name="Topic175"></a>非对称加密：密钥成对出现（且根据公钥无法推知私钥，根据私钥也无法推知公钥），加密解密使用不同密钥（公钥加密需要私钥解密，私钥加密需要公钥解密），相对对称加密速度较慢，典型的非对称加密算法有RSA、DSA等</p> <p><a href="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img7_2.gif"><img src="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img7_thumb.gif" alt="index_img7" style="display: inline; border-width: 0px;" title="index_img7" border="0" height="192" width="244" /></a> </p> </blockquote> <blockquote> <p><a name="Topic177"></a>HTTPS通信过程</p> </blockquote> <blockquote> <p><a href="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img8_2.gif"><img src="http://images.cnblogs.com/cnblogs_com/gpcuster/WindowsLiveWriter/HTTP_CC27/index_img8_thumb.gif" alt="index_img8" style="display: inline; border-width: 0px;" title="index_img8" border="0" height="244" width="217" /></a> </p> </blockquote> <blockquote> <p><a name="Topic179"></a>优点</p> </blockquote> <ol><li>&nbsp; <ol><li><a name="Topic180"></a>客户端产生的密钥只有客户端和服务器端能得到 </li><li><a name="Topic181"></a>加密的数据只有客户端和服务器端才能得到明文 </li><li><a name="Topic182"></a>客户端到服务端的通信是安全的 </li></ol></li></ol>  <p>4 开发web程序时常用的Request Methods</p> <blockquote> <p><a name="Topic183"></a>HEAD</p> <p><a name="Topic184"></a>（Head方法）要求响应与相应的GET请求的响应一样，但是没有的响应体（response body）。这用来获得响应头（response header）中的元数据信息（meta-infomation）有（很）帮助，（因为）它不需要传输所有的内容。</p> <p><a name="Topic185"></a>TRACE</p> <p><a name="Topic186"></a>（Trace方法告诉服务器端）返回收到的请求。客户端可以（通过此方法）察看在请求过程中中间服务器添加或者改变哪些内容。</p> <p><a name="Topic187"></a>OPTIONS</p> <p><a name="Topic188"></a>返回服务器（在指定URL上）支持的HTTP方法。通过请求&#8220;*&#8221;而不是指定的资源，这个方法可以用来检查网络服务器的功能。</p> <p><a name="Topic189"></a>CONNECT</p> <p><a name="Topic190"></a>将请求的连接转换成透明的TCP/IP通道，通常用来简化通过非加密的HTTP代理的SSL-加密通讯（HTTPS）。</p> </blockquote> <p><a name="Topic20"></a>5 用户与服务器的交互</p> <ol><li>&nbsp; <ol><li><a name="Topic191"></a>身份认证 </li><li><a name="Topic192"></a>cookie </li><li><a name="Topic193"></a>带条件的GET </li></ol></li></ol> <p>6 基于Socket编程编写遵循HTTP的程序</p>  <div>什么是HTTPS：</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;HTTPS（Secure Hypertext Transfer Protocol）安全超文本传输协议  它是一个安全通信通道，它基于HTTP开发，用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换，简单来说它是HTTP的 安全版。  它是由Netscape开发并内置于其浏览器中，用于对数据进行压缩和解压操作，并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安   全全套接字层（SSL）作为HTTP应用层的子层。（HTTPS使用端口443，而不是象HTTP那样使用端口80来和TCP/IP进行通信。）SSL使  用40  位关键字作为RC4流加密算法，这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证，如果需要的话用户可以确认发送者是谁。  HTTPS和HTTP的区别： https协议需要到ca申请证书，一般免费证书很少，需要交费。  http是超文本传输协议，信息是明文传输，https 则是具有安全性的ssl加密传输协议  http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;http的连接很简单,是无状态的 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全 .</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTTPS解决的问题： </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 . 信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书.  改证书只有用于对应的server 的时候,客户度才信任次主机. 所以目前所有的银行系统网站,关键部分应用都是https 的.  客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全. 这一点对我们没有任何意义,我们的server  ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 . 通讯过程中的数据的泄密和被窜改 </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1. 一般意义上的https, 就是 server 有一个证书. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b) 服务端和客户端之间的所有通讯,都是加密的.</div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的 </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 握手过程. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii. 加下来所有的信息往来就都是加密的.  第三方即使截获,也没有任何意义.因为他没有&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 钥.&nbsp;&nbsp; 当然窜改也就没有什么意义了. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体. HTTPS 一定是繁琐的. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a) 本来简单的http协议,一个get一个response. 由于&nbsp;&nbsp;&nbsp;&nbsp;  https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返. i. 任何应用中,过多的round trip 肯定影响性能. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密. </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i. 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片. 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求.&nbsp; </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ii. 加密后数据量的影响. 1. 这个我用128bit 的RC2 测试了一下,加密后数量跟加密前基本相同 符：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div> <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SSL的简介： SSL是Netscape公司所提出的安全保密协议，在浏览器（如Internet  Explorer、Netscape Navigator）和Web服务器（如Netscape的Netscape Enterprise  Server、ColdFusion  Server等等）之间构造安全通道来进行数据传输，SSL运行在TCP/IP层之上、应用层之下，为应用程序提供加密数据通道，它采用了RC4、MD5  以及RSA等加密算法，使用40  位的密钥，适用于商业信息的加密。同时，Netscape公司相应开发了HTTPS协议并内置于其浏览器中，HTTPS实际上就是SSL over  HTTP，它使用默认端口443，而不是像HTTP那样使用端口80来和TCP/IP进行通信。HTTPS协议使用SSL在发送方把原始数据进行加密，然  后在接受方进行解密，加密和解密需要发送方和接受方通过交换共知的密钥来实现，因此，所传送的数据不容易被网络黑客截获和解密。  然而，加密和解密过程需要耗费系统大量的开销，严重降低机器的性能，相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十  分之一。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </div> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  假如为了安全保密，将一个网站所有的Web应用都启用SSL技术来加密，并使用HTTPS协议进行传输，那么该网站的性能和效率将会大大降低，而  且没有这个必要，因为一般来说并不是所有数据都要求那么高的安全保密级别，所以，我们只需对那些涉及机密数据的交互处理使用HTTPS协议，这样就做到鱼  与熊掌兼得。总之不需要用https 的地方,就尽量不要用。</div><img src ="http://www.cnitblog.com/stomic/aggbug/77067.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2012-01-06 19:50 <a href="http://www.cnitblog.com/stomic/archive/2012/01/06/77067.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>必须掌握的八个DOS命令</title><link>http://www.cnitblog.com/stomic/archive/2008/04/15/42381.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Tue, 15 Apr 2008 02:40:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2008/04/15/42381.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/42381.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2008/04/15/42381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/42381.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/42381.html</trackback:ping><description><![CDATA[一，ping&nbsp;　　&nbsp; <br><br>　　它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说，ping命令是第一个必须掌握的DOS命令，它所利用的原理是这样的：网络上的机器都有唯一确定的IP地址，我们给目标IP地址发送一个数据包，对方就要返回一个同样大小的数据包，根据返回的数据包我们可以确定目标主机的存在，可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧，在DOS窗口中键入：ping&nbsp;/?&nbsp;回车，。所示的帮助画面。在此，我们只掌握一些基本的很有用的参数就可以了（下同）。&nbsp;　　&nbsp; <br><br>　　-t&nbsp;表示将不间断向目标IP发送数据包，直到我们强迫其停止。试想，如果你使用100M的宽带接入，而目标IP是56K的小猫，那么要不了多久，目标IP就因为承受不了这么多的数据而掉线，呵呵，一次攻击就这么简单的实现了。&nbsp;　　&nbsp; <br><br>　　-l&nbsp;定义发送数据包的大小，默认为32字节，我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用，会有更好的效果哦。&nbsp;　　&nbsp; <br><br>　　-n&nbsp;定义向目标IP发送数据包的次数，默认为3次。如果网络速度比较慢，3次对我们来说也浪费了不少时间，因为现在我们的目的仅仅是判断目标IP是否存在，那么就定义为一次吧。&nbsp;　　&nbsp; <br><br>　　说明一下，如果-t&nbsp;参数和&nbsp;-n参数一起使用，ping命令就以放在后面的参数为标准，比如"ping&nbsp;IP&nbsp;-t&nbsp;-n&nbsp;3"，虽然使用了-t参数，但并不是一直ping下去，而是只ping&nbsp;3次。另外，ping命令不一定非得ping&nbsp;IP，也可以直接ping主机域名，这样就可以得到主机的IP。&nbsp;　　&nbsp; <br><br>　　下面我们举个例子来说明一下具体用法。&nbsp;　　&nbsp; <br><br>　　这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒，从这里可以判断网络连接速度的大小&nbsp;。从TTL的返回值可以初步判断被ping主机的操作系统，之所以说"初步判断"是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。&nbsp; <br><br>　　（小知识：如果TTL=128，则表示目标主机可能是Win2000；如果TTL=250，则目标主机可能是Unix）&nbsp; <br><br>　　至于利用ping命令可以快速查找局域网故障，可以快速搜索最快的QQ服务器，可以对别人进行ping攻击&#8230;&#8230;这些就靠大家自己发挥了。&nbsp;　　&nbsp; <br><br>二，nbtstat&nbsp;　　&nbsp; <br><br>　　该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接，使用这个命令你可以得到远程主机的NETBIOS信息，比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。&nbsp;　　&nbsp; <br><br>　　-a&nbsp;使用这个参数，只要你知道了远程主机的机器名称，就可以得到它的NETBIOS信息（下同）。&nbsp;　　&nbsp; <br><br>　　-A&nbsp;这个参数也可以得到远程主机的NETBIOS信息，但需要你知道它的IP。&nbsp; <br><br>　　-n&nbsp;列出本地机器的NETBIOS信息。&nbsp;　　&nbsp; <br><br>　　当得到了对方的IP或者机器名的时候，就可以使用nbtstat命令来进一步得到对方的信息了，这又增加了我们入侵的保险系数。&nbsp;　　&nbsp; <br><br>三，netstat&nbsp; <br><br>　　这是一个用来查看网络状态的命令，操作简便功能强大。&nbsp;　　&nbsp; <br><br>　　-a&nbsp;查看本地机器的所有开放端口，可以有效发现和预防木马，可以知道机器所开的服务等信息，如图4。&nbsp;　　&nbsp; <br><br>　　这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法：netstat&nbsp;-a&nbsp;IP。&nbsp; <br><br>　　-r&nbsp;列出当前的路由信息，告诉我们本地机器的网关、子网掩码等信息。用法：netstat&nbsp;-r&nbsp;IP。&nbsp; <br>四，tracert&nbsp; <br><br>　　跟踪路由信息，使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径，这对我们了解网络布局和结构很有帮助。如图5。&nbsp;　　&nbsp; <br><br>　　这里说明数据从本地机器传输到192.168.0.1的机器上，中间没有经过任何中转，说明这两台机器是在同一段局域网内。用法：tracert&nbsp;IP。&nbsp;　　&nbsp; <br><br>五，net&nbsp;　　&nbsp; <br><br>　　这个命令是网络命令中最重要的一个，必须透彻掌握它的每一个子命令的用法，因为它的功能实在是太强大了，这简直就是&nbsp;微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令，键入net&nbsp;/?回车如图6。&nbsp; <br><br>　　在这里，我们重点掌握几个入侵常用的子命令。&nbsp;　　&nbsp; <br><br>　　net&nbsp;view&nbsp;　　&nbsp; <br><br>　　使用此命令查看远程主机的所以共享资源。命令格式为net&nbsp;view&nbsp;\IP。　　&nbsp; <br><br>　　net&nbsp;use&nbsp; <br><br>　　把远程主机的某个共享资源影射为本地盘符，图形界面方便使用，呵呵。命令格式为net&nbsp;use&nbsp;x:&nbsp;\IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接（net&nbsp;use&nbsp;\IP\IPC$&nbsp;"password"&nbsp;/user:"name"），&nbsp;　　&nbsp; <br><br>　　建立了IPC$连接后，呵呵，就可以上传文件了：copy&nbsp;nc.exe&nbsp;\192.168.0.7\admin$，表示把本地目录下的nc.exe传到远程主机，结合后面要介绍到的其他DOS命令就可以实现入侵了。&nbsp;　　&nbsp; <br><br>　　net&nbsp;start&nbsp; <br><br>　　使用它来启动远程主机上的服务。当你和远程主机建立连接后，如果发现它的什么服务没有启动，而你又想利用此服务怎么办？就使用这个命令来启动吧。用法：net&nbsp;start&nbsp;servername，如图9，成功启动了telnet服务。&nbsp;　　&nbsp; <br><br>　　net&nbsp;stop&nbsp; <br><br>　　入侵后发现远程主机的某个服务碍手碍脚，怎么办？利用这个命令停掉就ok了，用法和net&nbsp;start同。&nbsp;　　&nbsp; <br><br>　　net&nbsp;user&nbsp; <br><br>　　查看和帐户有关的情况，包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的，最重要的，它为我们克隆帐户提供了前提。键入不带参数的net&nbsp;user，可以查看所有用户，包括已经禁用的。下面分别讲解。&nbsp; <br><br>　　1，net&nbsp;user&nbsp;abcd&nbsp;1234&nbsp;/add，新建一个用户名为abcd，密码为1234的帐户，默认为user组成员。&nbsp; <br><br>　　2，net&nbsp;user&nbsp;abcd&nbsp;/del，将用户名为abcd的用户删除。&nbsp; <br><br>　　3，net&nbsp;user&nbsp;abcd&nbsp;/active:no，将用户名为abcd的用户禁用。&nbsp; <br><br>　　4，net&nbsp;user&nbsp;abcd&nbsp;/active:yes，激活用户名为abcd的用户。&nbsp; <br><br>　　5，net&nbsp;user&nbsp;abcd，查看用户名为abcd的用户的情况　　&nbsp; <br><br>　　net&nbsp;localgroup&nbsp; <br><br>　　查看所有和用户组有关的信息和进行相关操作。键入不带参数的net&nbsp;localgroup即列出当前所有的用户组。在入侵过程中，我们一般利用它来把某个帐户提升为administrator组帐户，这样我们利用这个帐户就可以控制整个远程主机了。用法：net&nbsp;localgroup&nbsp;groupname&nbsp;username&nbsp;/add。&nbsp;　　&nbsp; <br><br>　　现在我们把刚才新建的用户abcd加到administrator组里去了，这时候abcd用户已经是超级管理员了，呵呵，你可以再使用net&nbsp;user&nbsp;abcd来查看他的状态，和图10进行比较就可以看出来。但这样太明显了，网管一看用户情况就能漏出破绽，所以这种方法只能对付菜鸟网管，但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员，这是后话。有兴趣的朋友可以参照《黑客防线》第30期上的《由浅入深解析隆帐户》一文。&nbsp;　　&nbsp; <br><br>　　net&nbsp;time&nbsp; <br><br>　　这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面，那么也许就用不到这个命令了。但简单的入侵成功了，难道只是看看吗？我们需要进一步渗透。这就连远程主机当前的时间都需要知道，因为利用时间和其他手段（后面会讲到）可以实现某个命令和程序的定时启动，为我们进一步入侵打好基础。用法：net&nbsp;time&nbsp;\IP。&nbsp;　　&nbsp; <br><br>六，at&nbsp; <br><br>这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序（知道net&nbsp;time的重要了吧？）。当我们知道了远程主机的当前时间，就可以利用此命令让其在以后的某个时间（比如2分钟后）执行某个程序和命令。用法：at&nbsp;time&nbsp;command&nbsp;\computer。&nbsp;　　&nbsp; <br><br>　　表示在6点55分时，让名称为a-01的计算机开启telnet服务（这里net&nbsp;start&nbsp;telnet即为开启telnet服务的命令）。&nbsp;　　&nbsp; <br>七，ftp&nbsp;　　&nbsp; <br><br>　　大家对这个命令应该比较熟悉了吧？网络上开放的ftp的主机很多，其中很大一部分是匿名的，也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机（一般都是开了21端口的机器），如果你还不会使用ftp的命令怎么办？下面就给出基本的ftp命令使用方法。&nbsp; <br><br>　　首先在命令行键入ftp回车，出现ftp的提示符，这时候可以键入"help"来查看帮助（任何DOS命令都可以使用此方法查看其帮助)。&nbsp;　　&nbsp; <br><br>　　大家可能看到了，这么多命令该怎么用？其实也用不到那么多，掌握几个基本的就够了。&nbsp;　　&nbsp; <br><br>　　首先是登陆过程，这就要用到open了，直接在ftp的提示符下输入"open&nbsp;主机IP&nbsp;ftp端口"回车即可，一般端口默认都是21，可以不写。接着就是输入合法的用户名和密码进行登陆了，这里以匿名ftp为例介绍。&nbsp;　　&nbsp; <br><br>　　用户名和密码都是ftp，密码是不显示的。当提示****&nbsp;logged&nbsp;in时，就说明登陆成功。这里因为是匿名登陆，所以用户显示为Anonymous。&nbsp;　　&nbsp; <br><br>　　接下来就要介绍具体命令的使用方法了。&nbsp;　　&nbsp; <br><br>　　dir&nbsp;跟DOS命令一样，用于查看服务器的文件，直接敲上dir回车，就可以看到此ftp服务器上的文件。&nbsp; <br><br>　　cd&nbsp;进入某个文件夹。&nbsp; <br><br>　　get&nbsp;下载文件到本地机器。&nbsp; <br><br>　　put&nbsp;上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了，如果可以，呵呵，该怎么&nbsp;利用就不多说了，大家就自由发挥去吧。&nbsp; <br><br>　　delete&nbsp;删除远程ftp服务器上的文件。这也必须保证你有可写的权限。&nbsp; <br><br>　　bye&nbsp;退出当前连接。&nbsp; <br><br>　　quit&nbsp;同上。&nbsp; <br>　　&nbsp; <br><br>八，telnet&nbsp; <br><br>　　功能强大的远程登陆命令，几乎所有的入侵者都喜欢用它，屡试不爽。为什么？它操作简单，如同使用自己的机器一样，只要你熟悉DOS命令，在成功以administrator身份连接了远程机器后，就可以用它来干你想干的一切了。下面介绍一下使用方法，首先键入telnet回车，再键入help查看其帮助信息。&nbsp;　　&nbsp; <br><br>　　然后在提示符下键入open&nbsp;IP回车，这时就出现了登陆窗口，让你输入合法的用户名和密码，这里输入任何密码都是不显示的。&nbsp;　　&nbsp; <br><br>　　当输入用户名和密码都正确后就成功建立了telnet连接，这时候你就在远程主机上具有了和此用户一样的权限，利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。　　&nbsp; <br><br>　　到这里为止，网络DOS命令的介绍就告一段落了，这里介绍的目的只是给菜鸟网管一个印象，让其知道熟悉和掌握网络DOS命令的重要性。其实和网络有关的DOS命令还远不止这些，这里只是抛砖引玉，希望能对广大菜鸟网管有所帮助。学好DOS对当好网管有很大的帮助，特别的熟练掌握了一些网络的DOS命令。&nbsp; <br><br>　　另外大家应该清楚，任何人要想进入系统，必须得有一个合法的用户名和密码（输入法漏洞差不多绝迹了吧），哪怕你拿到帐户的只有一个很小的权限，你也可以利用它来达到最后的目的。所以坚决消灭空口令，给自己的帐户加上一个强壮的密码，是最好的防御弱口令入侵的方法。&nbsp; <br><br>　　最后，由衷的说一句，培养良好的安全意识才是最重要的。 <br><br>========================================= <br>开始&#8594;运行&#8594;命令集锦 <br>winver---------检查Windows版本&nbsp; <br>wmimgmt.msc----打开windows管理体系结构(WMI)&nbsp; <br>wupdmgr--------windows更新程序&nbsp; <br>wscript--------windows脚本宿主设置&nbsp; <br>write----------写字板&nbsp; <br>winmsd---------系统信息&nbsp; <br>wiaacmgr-------扫描仪和照相机向导&nbsp; <br>winchat--------XP自带局域网聊天&nbsp; <br><br>mem.exe--------显示内存使用情况&nbsp; <br>Msconfig.exe---系统配置实用程序&nbsp; <br>mplayer2-------简易widnows&nbsp;media&nbsp;player&nbsp; <br>mspaint--------画图板&nbsp; <br>mstsc----------远程桌面连接&nbsp; <br>mplayer2-------媒体播放机&nbsp; <br>magnify--------放大镜实用程序&nbsp; <br>mmc------------打开控制台&nbsp; <br>mobsync--------同步命令&nbsp; <br><br>dxdiag---------检查DirectX信息&nbsp; <br>drwtsn32------&nbsp;系统医生&nbsp; <br>devmgmt.msc---&nbsp;设备管理器&nbsp; <br>dfrg.msc-------磁盘碎片整理程序&nbsp; <br>diskmgmt.msc---磁盘管理实用程序&nbsp; <br>dcomcnfg-------打开系统组件服务&nbsp; <br>ddeshare-------打开DDE共享设置&nbsp; <br>dvdplay--------DVD播放器&nbsp; <br><br>net&nbsp;stop&nbsp;messenger-----停止信使服务&nbsp; <br>net&nbsp;start&nbsp;messenger----开始信使服务&nbsp; <br>notepad--------打开记事本&nbsp; <br>nslookup-------网络管理的工具向导&nbsp; <br>ntbackup-------系统备份和还原&nbsp; <br>narrator-------屏幕"讲述人"&nbsp; <br>ntmsmgr.msc----移动存储管理器&nbsp; <br>ntmsoprq.msc---移动存储管理员操作请求&nbsp; <br>netstat&nbsp;-an----(TC)命令检查接口&nbsp; <br><br>syncapp--------创建一个公文包&nbsp; <br>sysedit--------系统配置编辑器&nbsp; <br>sigverif-------文件签名验证程序&nbsp; <br>sndrec32-------录音机&nbsp; <br>shrpubw--------创建共享文件夹&nbsp; <br>secpol.msc-----本地安全策略&nbsp; <br>syskey---------系统加密，一旦加密就不能解开，保护windows&nbsp;xp系统的双重密码&nbsp; <br>services.msc---本地服务设置&nbsp; <br>Sndvol32-------音量控制程序&nbsp; <br>sfc.exe--------系统文件检查器&nbsp; <br>sfc&nbsp;/scannow---windows文件保护&nbsp; <br><br>tsshutdn-------60秒倒计时关机命令&nbsp; <br>tourstart------xp简介（安装完成后出现的漫游xp程序）&nbsp; <br>taskmgr--------任务管理器&nbsp; <br><br>eventvwr-------事件查看器&nbsp; <br>eudcedit-------造字程序&nbsp; <br>explorer-------打开资源管理器&nbsp; <br><br><br>packager-------对象包装程序&nbsp; <br>perfmon.msc----计算机性能监测程序&nbsp; <br>progman--------程序管理器&nbsp; <br><br>regedit.exe----注册表&nbsp; <br>rsop.msc-------组策略结果集&nbsp; <br>regedt32-------注册表编辑器&nbsp; <br>rononce&nbsp;-p&nbsp;----15秒关机&nbsp; <br>regsvr32&nbsp;/u&nbsp;*.dll----停止dll文件运行&nbsp; <br>regsvr32&nbsp;/u&nbsp;zipfldr.dll------取消ZIP支持&nbsp; <br><br>cmd.exe--------CMD命令提示符&nbsp; <br>chkdsk.exe-----Chkdsk磁盘检查&nbsp; <br>certmgr.msc----证书管理实用程序&nbsp; <br>calc-----------启动计算器&nbsp; <br>charmap--------启动字符映射表&nbsp; <br>cliconfg-------SQL&nbsp;SERVER&nbsp;客户端网络实用程序&nbsp; <br>Clipbrd--------剪贴板查看器&nbsp; <br>conf-----------启动netmeeting&nbsp; <br>compmgmt.msc---计算机管理&nbsp; <br>cleanmgr-------垃圾整理&nbsp; <br>ciadv.msc------索引服务程序&nbsp; <br><br>osk------------打开屏幕键盘&nbsp; <br>odbcad32-------ODBC数据源管理器&nbsp; <br>oobe/msoobe&nbsp;/a----检查XP是否激活&nbsp; <br>lusrmgr.msc----本机用户和组&nbsp; <br>logoff---------注销命令&nbsp; <br><br><br>iexpress-------木马捆绑工具，系统自带&nbsp; <br><br>Nslookup-------IP地址侦测器&nbsp; <br><br>fsmgmt.msc-----共享文件夹管理器&nbsp; <br><br>utilman--------辅助工具管理器&nbsp; <br><br>gpedit.msc-----组策略 
<img src ="http://www.cnitblog.com/stomic/aggbug/42381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2008-04-15 10:40 <a href="http://www.cnitblog.com/stomic/archive/2008/04/15/42381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>子网掩码的计算与划分详解</title><link>http://www.cnitblog.com/stomic/archive/2007/07/31/30975.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Tue, 31 Jul 2007 04:12:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2007/07/31/30975.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/30975.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2007/07/31/30975.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/30975.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/30975.html</trackback:ping><description><![CDATA[一、子网掩码的计算<br><br>TCP/IP网间网技术产生于大型主流机环境中，它能发展到今天的规模是当初的设计者们始料未及的。网间网规模的迅速扩展对IP地址模式的威胁并不是它不能保证主机地址的唯一性，而是会带来两方面的负担：第一，巨大的网络地址管理开销；第二，网关寻径急剧膨胀。其中第二点尤为突出，寻径表的膨胀不仅会降低网关寻径效率（甚至可能使寻径表溢出，从而造成寻径故障），更重要的是将增加内外部路径刷新时的开销，从而加重网络负担。<br><br>因此，迫切需要寻求新的技术，以应付网间网规模增长带来的问题。仔细分析发现，网间网规模的增长在内部主要表现为网络地址的增减，因此解决问题的思路集中在：如何减少网络地址。于是IP网络地址的多重复用技术应运而生。通过复用技术，使若干物理网络共享同一IP网络地址，无疑将减少网络地址数。<br><br>子网编址（subnet addressing）技术，又叫子网寻径（subnet routing），英文简称subnetting，是最广泛使用的IP网络地址复用方式，目前已经标准化，并成为IP地址模式的一部分。<br><br>32位的IP地址分为两部分，即网络号和主机号，分别把他们叫做IP地址的&#8220;网间网部分&#8221;和&#8220;本地部分&#8221;。子网编址技术将&#8220;本地部分&#8221;进一步划分为&#8220;物理网络&#8221;部分和&#8220;主机&#8221;两部分，其中&#8220;物理网络&#8221;部分用于标识同一IP网络地址下的不同物理网络，常称为&#8220;掩码位&#8221;、&#8220;子网掩码号&#8221;，或者&#8220;子网掩码ID&#8221;，不同子网就是依据这个掩码ID来识别的。<br><br>按IP协议的子网标准规定，每一个使用子网的网点都选择一个32位的位模式，若位模式中的某位置1，则杂P地址中的某位为网络地址（包括网络部分和子网掩码号）中的一位；若位模式中的某位置0，则对应IP地址中的某位为主机地址中的一位。<br><br>例如二进制位模式：11111111 11111111 11111111 00000000中，前三个字节全1，代表对应IP地址中最高的三个字节为网络地址；后一个字节全0，代表对应IP地址中最后的一个字节为主机地址。为了使用的方便，常常使用&#8220;点分整数表示法&#8221;来表示一个IP地址和子网掩码，例如B类地址子网掩码（11111111 11111111 1111111100000000）为：255.255.25.0。<br><br>IP协议关于子网掩码的定义提供一定的灵活性，允许子网掩码中的&#8220;0&#8221;和&#8220;1&#8221;位不连续。但是，这样的子网掩码给分配主机地址和理解寻径表都带来一定困难，并且，极少的路由器支持在子网中使用低序或无序的位，因此在实际应用中通常各网点采用连续方式的子网掩码。像255.255.255.64和255.255.255.160等一类的子网掩码不推荐使用<br><br>子网掩码与IP地址结合使用，可以区分出一个网络地址的网络号和主机号。例如：有一个C类地址为：192.9.200.13，按其IP地址类型，它的缺省子网掩码为：255.255.255.0，则它的网络号和主机号可按如下方法得到：<br><br>第1步，将IP地址192.9.200.13转换为二进制11000000 00001001 11001000 00001101<br><br>第2步，将子网掩码255.255.255.0转换为二进制11111111 11111111 11111111 00000000<br><br>第3步，将以上两个二进制数逻辑进行与（AND）运算，得出的结果即为网络部分。&#8220;11000000 00001001 11001000 00001101&#8221;与&#8220;11111111 11111111 11111111 00000000&#8221;进行&#8220;与&#8221;运算后得到&#8220;11000000 00001001 11001000 00000000&#8221;，即&#8220;192.9.200.0&#8221;，这就是这个IP地址的网络号，或者称&#8220;网络地址&#8221;。<br><br>第4步，将子网掩码的二进制值取反后，再与IP地址进行与（AND）运算，得到的结果即为主机部分。如将&#8220;00000000 00000000 00000000 11111111（子网掩码的取值）反&#8221;与&#8220;11000000 00001001 11001000 00001101&#8221;进行与运算后得到&#8220;00000000 00000000 00000000 00001101&#8221;，即&#8220;0.0.0.13&#8221;，这就是这个IP地址主机号（可简化为&#8220;13&#8221;）。<br><br>二、子网掩码的划分<br><br>如果要将一个网络划分成多个子网，如何确定这些子网的子网掩码和IP地址中的网络号和主机号呢？本节就要向大家介绍。子网划分的步骤如下：<br><br>第1步，将要划分的子网数目转换为2的m次方。如要分8个子网，8=23。如果不是愉好是2的多少次方，则取大为原则，如要划分为6个，则同样要考虑23。<br><br>第2步，将上一步确定的幂m按高序占用主机地址m位后，转换为十进制。如m为3表示主机位中有3位被划为&#8220;网络标识号&#8221;占用，因网络标识号应全为&#8220;1&#8221;，所以主机号对应的字节段为&#8220;11100000&#8221;。转换成十进制后为224，这就最终确定的子网掩码。如果是C类网，则子网掩码为255.255.255.224；如果是B类网，则子网掩码为255.255.224.0；如果是A类网，则子网掩码为255.224.0.0。<br><br>在这里，子网个数与占用主机地址位数有如下等式成立：2m&#8805;n。其中，m表示占用主机地址的位数；n表示划分的子网个数。根据这些原则，将一个C类网络分成4个子网。<br><br>为了说明问题，现再举例。若我们用的网络号为192.9.200，则该C类网内的主机IP地址就是192.9.200.1～192.9.200.254，现将网络划分为4个子网，按照以上步骤：<br><br>4=22，则表示要占用主机地址的2个高序位，即为11000000，转换为十进制为192。这样就可确定该子网掩码为：192.9.200.192。4个子网的IP地址的划分是根据被网络号占住的两位排列进行的，这四个IP地址范围分别为： <br><br>（1）第1个子网的IP地址是从&#8220;11000000 00001001 11001000 00000001&#8221;到&#8220;11000000 00001001 11001000 00111110&#8221;，注意它们的最后8位中被网络号占住的两位都为&#8220;00&#8221;，因为主机号不能全为&#8220;0&#8221;和&#8220;1&#8221;，所以没有11000000 00001001 11001000 00000000和11000000 00001001 11001000 00111111这两个IP地址（下同）。注意实际上此时的主机号只有最后面的6位。对应的十进制IP地址范围为192.9.200.1~192.9.200.62。而这个子网的子网掩码（或网络地址）为 11000000 00001001 11001000 00000000，为192.9.200.0。<br><br>（2）第2个子网的IP地址是从&#8220;11000000 00001001 11001000 01000001&#8221;到&#8220;11000000 00001001 11001000 01111110&#8221; ，注意此时被网络号所占住的2位主机号为&#8220;01&#8221;。对应的十进制IP地址范围为192.9.200.65~192.9.200.126。对应这个子网的子网掩码（或网络地址）为 11000000 00001001 11001000 01000000，为192.9.200.64。<br><br>（3）第3个子网的IP地址是从&#8220;11000000 00001001 11001000 10000001&#8221;到&#8220;11000000 00001001 11001000 10111110&#8221; ，注意此时被网络号所占住的2位主机号为&#8220;10&#8221;。对应的十进制IP地址范围为192.9.200.129~192.9.200.190。对应这个子网的子网掩码（或网络地址）为 11000000 00001001 11001000 10000000，为192.9.200.128。<br><br>（4）第4个子网的IP地址是从&#8220;11000000 00001001 11001000 11000001&#8221;到&#8220;11000000 00001001 11001000 11111110&#8221; ，注意此时被网络号所占住的2位主机号为&#8220;11&#8221;。对应的十进制IP地址范围为192.9.200.193~192.9.200.254。对应这个子网的子网掩码（或网络地址）为 11000000 00001001 11001000 11000000，为192.9.200.192。<br><br>在此列出A、B、C三类网络子网数目与子网掩码的转换表，如表5.1所示，供参考。<br><br>表1&nbsp; &nbsp;&nbsp;&nbsp;子网划分与子网掩码对应表<br><br>A类网络划分子网数与对应的子网掩码<br><br>子网数目&nbsp; &nbsp; &nbsp; &nbsp; 占用主机号位数&nbsp; &nbsp; &nbsp; &nbsp; 子网掩码&nbsp; &nbsp; &nbsp; &nbsp; 子网中可容纳的主机数<br><br>2&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 255.128.0.0&nbsp; &nbsp; &nbsp; &nbsp; 8388606<br><br>4&nbsp; &nbsp; &nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; &nbsp; 255.192.0.0&nbsp; &nbsp; &nbsp; &nbsp; 4194302<br><br>8&nbsp; &nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; 255.224.0.0&nbsp; &nbsp; &nbsp; &nbsp; 2097150<br><br>16&nbsp; &nbsp; &nbsp; &nbsp; 4&nbsp; &nbsp; &nbsp; &nbsp; 255.240.0.0&nbsp; &nbsp; &nbsp; &nbsp; 1048574<br><br>32&nbsp; &nbsp; &nbsp; &nbsp; 5&nbsp; &nbsp; &nbsp; &nbsp; 255.258.0.0&nbsp; &nbsp; &nbsp; &nbsp; 524286<br><br>64&nbsp; &nbsp; &nbsp; &nbsp; 6&nbsp; &nbsp; &nbsp; &nbsp; 255.253.0.0&nbsp; &nbsp; &nbsp; &nbsp; 262142<br><br>128&nbsp; &nbsp; &nbsp; &nbsp; 7&nbsp; &nbsp; &nbsp; &nbsp; 255.254.0.0&nbsp; &nbsp; &nbsp; &nbsp; 131070<br><br>256&nbsp; &nbsp; &nbsp; &nbsp; 8&nbsp; &nbsp; &nbsp; &nbsp; 255.255.0.0&nbsp; &nbsp; &nbsp; &nbsp; 65534<br><br>B类网络划分子网数与对应的子网掩码<br><br>子网数目&nbsp; &nbsp; &nbsp; &nbsp; 占用主机号位数&nbsp; &nbsp; &nbsp; &nbsp; 子网掩码&nbsp; &nbsp; &nbsp; &nbsp; 子网中可容纳的主机数<br><br>2&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 255.255.128.0&nbsp; &nbsp; &nbsp; &nbsp; 32766<br><br>4&nbsp; &nbsp; &nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; &nbsp; 255.255.192.0&nbsp; &nbsp; &nbsp; &nbsp; 16382<br><br>8&nbsp; &nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; 255.255.224.0&nbsp; &nbsp; &nbsp; &nbsp; 8190<br><br>16&nbsp; &nbsp; &nbsp; &nbsp; 4&nbsp; &nbsp; &nbsp; &nbsp; 255.255.240.0&nbsp; &nbsp; &nbsp; &nbsp; 4094<br><br>32&nbsp; &nbsp; &nbsp; &nbsp; 5&nbsp; &nbsp; &nbsp; &nbsp; 255.255.248.0&nbsp; &nbsp; &nbsp; &nbsp; 2046<br><br>64&nbsp; &nbsp; &nbsp; &nbsp; 6&nbsp; &nbsp; &nbsp; &nbsp; 255.255.252.0&nbsp; &nbsp; &nbsp; &nbsp; 1022<br><br>128&nbsp; &nbsp; &nbsp; &nbsp; 7&nbsp; &nbsp; &nbsp; &nbsp; 255.255.254.0&nbsp; &nbsp; &nbsp; &nbsp; 510<br><br>256&nbsp; &nbsp; &nbsp; &nbsp; 8&nbsp; &nbsp; &nbsp; &nbsp; 255.255.255.0&nbsp; &nbsp; &nbsp; &nbsp; 254<br><br>C类网络划分子网数与对应的子网掩码<br><br>子网数目&nbsp; &nbsp; &nbsp; &nbsp; 占用主机号位数&nbsp; &nbsp; &nbsp; &nbsp; 子网掩码&nbsp; &nbsp; &nbsp; &nbsp; 子网中可容纳的主机数<br><br>2&nbsp; &nbsp; &nbsp; &nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; 255.255.255.128&nbsp; &nbsp; &nbsp; &nbsp; 126<br><br>4&nbsp; &nbsp; &nbsp; &nbsp; 2&nbsp; &nbsp; &nbsp; &nbsp; 255.255.255.192&nbsp; &nbsp; &nbsp; &nbsp; 62<br><br>8&nbsp; &nbsp; &nbsp; &nbsp; 3&nbsp; &nbsp; &nbsp; &nbsp; 255.255.255.224&nbsp; &nbsp; &nbsp; &nbsp; 30<br><br>16&nbsp; &nbsp; &nbsp; &nbsp; 4&nbsp; &nbsp; &nbsp; &nbsp; 255.255.255.240&nbsp; &nbsp; &nbsp; &nbsp; 14<br><br>32&nbsp; &nbsp; &nbsp; &nbsp; 5&nbsp; &nbsp; &nbsp; &nbsp; 255.255.255.248&nbsp; &nbsp; &nbsp; &nbsp; 6<br><br>64&nbsp; &nbsp; &nbsp; &nbsp; 6&nbsp; &nbsp; &nbsp; &nbsp; 255.255.255.252&nbsp; &nbsp; &nbsp; &nbsp; 2<br><br>三、快速计算子网掩码的方法<br><br>最后介绍三种快速计算机子网掩码的方法。<br><br>1. 利用子网数来计算<br><br>在求子网掩码之前必须先搞清楚要划分的子网数目，以及每个子网内的所需主机数目。然后按以下基本步骤进行计算：<br><br>第1步，将子网数目转化为二进制来表示；<br><br>第2步，取得子网数二进制的位数（n）；<br><br>第3步，取得该IP地址类的子网掩码，然后将其主机地址部分的的前n位置&#8220;1&#8221;，即得出该IP地址划分子网的子网掩码。<br><br>为了便于理解，现举例说明如下：现假如要将一B类IP地址168.195.0.0划分成27个子网，则它的子网掩码的计算机方法如下（对应以上各基本步骤）：<br><br>第1步，首先要划分成27个子网，&#8220;27&#8221;的二进制为&#8220;11011&#8221;；<br><br>第2步，该子网数二进制为五位数，即n = 5；<br><br>第3步，将该B类地址的子网掩码255.255.0.0的主机号前5位全部置&#8220;1&#8221;，即可得到 255.255.248.0，这就是划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。<br><br>2. 利用主机数来计算<br><br>利用主机数来计算子网掩码的方法与上类似，基本步骤如下：<br><br>第1步，将子网中需容纳的主机数转化为二进制；<br><br>第2步，如果主机数小于或等于254（因为要去掉保留的两个IP地址），则取得该主机的二进制位数，为n，这里肯定 n8，这就是说主机地址将占据不止8位。<br><br>第3步，将255.255.255.255的主机地址位数全部置1，然后从后向前的将n位全部置为 0，即为子网掩码值。<br><br>举例如下。如要将一B类IP地址为168.195.0.0的网络划分成若干子网，要求每个子网内有主机数为700台，则该子网掩码的计算方法如下（也是对应以上各基本步骤）：<br><br>第1步，首先将子网中要求容纳的主机数&#8220;700&#8221;转换成二进制，得到1010111100。<br><br>第2步，计算出该二进制的位数为10位，即n = 10<br><br>第3步，将255.255.255.255从后向前的10位全部置&#8220;0&#8221;,得到的二进制数为&#8220;11111111.11111111.11111100.00000000&#8221;，转换成十进制后即为255.255.252.0，这就是该要划分成主机数为700的B类IP地址 168.195.0.0的子网掩码。<br><br>3. 子网ID增量计算法<br><br>其基本计算步骤如下：<br><br>第1步，将所需的子网数转换为二进制，如所需划分的子网数为&#8220;4&#8221;，则转换成成二进制为00000100； <br><br>第2步，取子网数的二进制中有效位数，即为向缺省子网掩码中加入的位数（既向主机ID中借用的位数）。如前面的00000100，有效位为&#8220;100&#8221;，为3位；<br><br>第3步，决定子网掩码。如IP地址为B类1129.20.0.0网络，则缺省子网掩码为：255.255.0.0，借用主机ID的3位以后变为：255.255.224（11100000）0，即将所借的位全表示为1，用作子网掩码。 <br><br>第4步，将所借位的主机ID的起始位段最右边的&#8220;1&#8221;转换为十进制，即为每个子网ID之间的增量，如前面的借位的主机ID起始位段为&#8220;11100000&#8221;，最右边的&#8220;1&#8221;，转换成十进制后为25=32。 <br><br>第5步，产生的子网ID数为：2m-2 （m为向缺省子网掩码中加入的位数），如本例向子网掩码中添加的位数为3，则可用子网ID数为：23-2=6个； <br><br>第6步，将上面产生的子网ID增量附在原网络ID之后的第一个位段，便形成第一个子网网络ID 129.20.32.0； <br><br>第7步，重复上步操作，在原子网ID基础上加上一个子网ID增量，依次类推，直到子网ID中的最后位段为缺省子网掩码位用主机ID位之后的最后一个位段值，这样就可得到所有的子网网络ID。如缺省子网掩码位用主机ID位之后的子网ID为255.255.224.0，其中的&#8220;224&#8221;为借用主机ID后子网ID的最后一位段值，所以当子网ID通过以上增加增量的方法得到129.20.224.0时便终止，不要再添加了。<br>
<img src ="http://www.cnitblog.com/stomic/aggbug/30975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2007-07-31 12:12 <a href="http://www.cnitblog.com/stomic/archive/2007/07/31/30975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>子网掩码划分实例</title><link>http://www.cnitblog.com/stomic/archive/2007/07/31/30972.html</link><dc:creator>大话人生</dc:creator><author>大话人生</author><pubDate>Tue, 31 Jul 2007 03:32:00 GMT</pubDate><guid>http://www.cnitblog.com/stomic/archive/2007/07/31/30972.html</guid><wfw:comment>http://www.cnitblog.com/stomic/comments/30972.html</wfw:comment><comments>http://www.cnitblog.com/stomic/archive/2007/07/31/30972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/stomic/comments/commentRss/30972.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/stomic/services/trackbacks/30972.html</trackback:ping><description><![CDATA[<p>具体实例: </p>
<p>C 类地址例子1:网络地址192.168.10.0;子网掩码255.255.255.192(/26) <br>1.子网数=2*2-2=2 <br>2.主机数=2 的6 次方-2=62 <br>3. 有效子网?:block size=256-192=64; 所以第一个子网为192.168.10.64, 第二个为192.168.10.128 <br>4.广播地址:下个子网-1.所以2 个子网的广播地址分别是192.168.10.127 和192.168.10.191 <br>5.有效主机范围是:第一个子网的主机地址是192.168.10.65 到192.168.10.126;第二个是192.168.10.129 到192.168.10.190 </p>
<p>C 类地址例子2:网络地址192.168.10.0;子网掩码255.255.255.128(/26) <br>我知道我举的这个例子只有一个子网位，这通常是不合法的（由RFC文档所规定）。但是！世事无绝对，不是吗？这个子网掩码能在你需要两个子网每个子网126台主机时给你帮助，不过这是在特殊情况下实现的。在思科路由器的全局配置模式下输入ip subnet -zero命令来告诉你的路由器打破规则并使用一个1位的子网掩码（这个命令通常在运行CISCO IOS 12.x的所有路由器上默认存在） <br>1.子网数=2 <br>2.主机数=2 的7 次方-2=126 <br>3. 有效子网?:block size=256-128=128; 所以第一个子网为192.168.10.0, 第二个为192.168.10.128 <br>4.广播地址:下个子网-1.所以2 个子网的广播地址分别是192.168.10.127 和192.168.10.255 <br>5.有效主机范围是:第一个子网的主机地址是192.168.10.1 到192.168.10.126;第二个是192.168.10.129 到192.168.10.254 </p>
<p><br>B 类地址例子1：网络地址:172.16.0.0;子网掩码255.255.255.128(/25) <br>注意！这个不是C类地址的子网掩码，然而这个子网划分是有一定难度的，但是！这个掩码却是十分有用的因为它创建了510个子网每个子网有126个主机，一个很好的组合。 <br>1.子网数=2的9次方-2=510 <br>2.主机数=2的7次方-2=126 <br>3.有效子网?:block size=256-255=1，2，3，......这是第三个八位元组的数值，但是你不能忘记还有一位子网位在第四个八位元组。所以第四个八位元组分为两个子网。例如第三个八位元组表示子网3，那第四个八位元组的两个子网为172.16.3.0和172.16.3.128 <br>4.广播地址:下个子网-1.所以第一个子网和最后1 个子网的广播地址分别是 <br>172.16.0.255和 <br>172.16.255.127 <br>5.有效主机范围是:第一个子网的主机地址是172.16.0.129 到172.16.0.254;最后1 个是172.16.255.0 到172.16.255.126 <br>（补充一下：可能有人问第一个子网为什么不是172.16.0.0---172.16.0.128呢？不要忘记！子网位和主机位不能为全0或者全1，172.16.0.0代表了整个172.16.x.x网络，同理，最后一个子网也就不可能是172.16.255.128---172.16.255.255了。） </p>
<p><br>B 类地址例子2:网络地址:172.16.0.0;子网掩码255.255.192.0(/18) <br>1.子网数=2*2-2=2 <br>2.主机数=2 的14 次方-2=16382 <br>3.有效子网?:block size=256-192=64;所以第一个子网为172.16.64.0,最后1 个为172.16.128.0 <br>4.广播地址:下个子网-1.所以2 个子网的广播地址分别是172.16.127.255 和172.16.191.255 <br>5.有效主机范围是:第一个子网的主机地址是172.16.64.1 到172.16.127.254;第二个是172.16.128.1 到172.16.191.254 </p>
<p>B 类地址例子3:网络地址:172.16.0.0;子网掩码255.255.255.224(/27) <br>1.子网数=2 的11 次方-2=2046(因为B 类地址默认掩码是255.255.0.0,所以网络位为8+3=11) <br>2.主机数=2 的5 次方-2=30 <br>3. 有效子网?:block size=256-224=32; 所以第一个子网为172.16.0.32, 最后1 个为172.16.255.192 <br>4.广播地址:下个子网-1.所以第一个子网和最后1 个子网的广播地址分别是172.16.0.63 和 <br>172.16.255.223 <br>5.有效主机范围是:第一个子网的主机地址是172.16.0.33 到172.16.0.62;最后1 个是172.16.255.193 到172.16.255.223 </p>
<p><br>A类地址子网划分跟B类和C类并没有什么区别，只是掩码位由16位和8位变成了24位而已。 </p>
<p>简单地举个例子吧： <br>网络地址:10.0.0.0;子网掩码255.255.0.0(/16) <br>1.子网数=2 的8次方-2=254 <br>2.主机数=2 的16次方-2=65534 <br>3. 有效子网?:block size=256-255=1，2，3，......; 所以第一个子网为10.1.0.0, 最后1 个为10.254.0.0 <br>4.广播地址:下个子网-1.所以第一个子网和最后1 个子网的广播地址分别是10.1.255.255 和 <br>10.254.255.255 <br>5.有效主机范围是:第一个子网的主机地址是10.1.0.1 到10.1.255.254;最后1 个是10.254.0.1 到10.254.255.254 <br></p>
<p>
<hr>
子网划分基础: <br>子网划分(subnetting)的优点: <br>1.减少网络流量 <br>2.提高网络性能 <br>3.简化管理 <br>4.易于扩大地理范围
<p>&nbsp;</p>
<p>怎么样创建一个子网: </p>
<p>如何划分子网?首先要熟记2 的幂:2 的0 次方到9 次方的值分别为:1,2,4,8,16,32,64,128,256和512。还有要明白的是:子网划分是借助于取走主机位,把这个取走的部分作为子网位。因此这个意味划分越多的子网,主机将越少。 </p>
<p>子网掩码（Subnet Masks）: </p>
<p>子网掩码用于辨别IP 地址中哪部分为网络地址,哪部分为主机地址,有1 和0 组成,长32 位,全为1 的位代表网络号.不是所有的网络都需要子网,因此就引入1 个概念:默认子网掩码(default subnet mask).A 类IP 地址的默认子网掩码为255.0.0.0;B 类的为255.255.0.0;C 类的为255.255.255.0。 </p>
<p>Classless Inter-Domain Routing(CIDR)： </p>
<p>CIDR 叫做无类域间路由,ISP 常用这样的方法给客户分配地址,ISP 提供给客户1 个块(block size),类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28 代表多少位为1,最大/32.但是你必须知道的一点是:不管是A类还是B类还是其他类地址,最大可用的只能为/30,即保留2 位给主机位。 </p>
<p>CIDR 值: <br>1.掩码255.0.0.0:/8(A 类地址默认掩码) <br>2.掩码255.255.0.0:/16(B 类地址默认掩码) <br>3.掩码255.255.255.0:/24(C 类地址默认掩码) </p>
<p>划分A类B类C类地址子网： </p>
<p>划分子网的几个捷径: <br>1.你所选择的子网掩码将会产生多少个子网?:2 的x 次方-2(x 代表子网位,即2 进制为1 的部分) PS：这里的x是指除去默认掩码后的子网位，例如网络地址192.168.1.1，掩码255.255.255.192，因为是C类地址，掩码为255.255.255.0。那么255.255.255.192（x.x.x.11000000）使用了两个1来作为子网位。 </p>
<p>2.每个子网能有多少主机?: 2 的y 次方-2(y 代表主机位,即2 进制为0 的部分) </p>
<p>3.有效子网是?:有效子网号=256-10 进制的子网掩码(结果叫做block size 或base number) </p>
<p>4.每个子网的广播地址是?:广播地址=下个子网号-1 </p>
<p>5.每个子网的有效主机分别是?:忽略子网内全为0 和全为1 的地址剩下的就是有效主机地址. <br>最后有效1 个主机地址=下个子网号-2(即广播地址-1) </p>
<img src ="http://www.cnitblog.com/stomic/aggbug/30972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/stomic/" target="_blank">大话人生</a> 2007-07-31 11:32 <a href="http://www.cnitblog.com/stomic/archive/2007/07/31/30972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>