﻿<?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博客网-　-文章分类-Published</title><link>http://www.cnitblog.com/windforce/category/89.html</link><description>&lt;object&gt; 
&lt;embed src="http://218.246.181.129/DUYAO/DUYAO/LOGO.SWF" width="300" height="70" quality="high" 
pluginspage="http://www.macromedia.com/go/getflashplayer" 
type="application/x-shockwave-flash" scale="exactfit"&gt;&lt;/embed&gt;&lt;/object&gt; </description><language>zh-cn</language><lastBuildDate>Tue, 18 Mar 2008 11:17:05 GMT</lastBuildDate><pubDate>Tue, 18 Mar 2008 11:17:05 GMT</pubDate><ttl>60</ttl><item><title>关于网关的精典描述（转载）</title><link>http://www.cnitblog.com/windforce/articles/41105.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Tue, 18 Mar 2008 07:52:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/41105.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/41105.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/41105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/41105.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/41105.html</trackback:ping><description><![CDATA[<p><font size=2>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;假设你的名字叫小不点，你住在一个大院子里，你的邻居有很多小伙伴，在门口传达室还有个看大门的李大爷，李大爷就是你的网关。当你想跟院子里的某个小伙伴玩，只要你在院子里大喊一声他的名字，他听到了就会回应你，并且跑出来跟你玩。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;但是你不被允许走出大门，你想与外界发生的一切联系，都必须由门口的李大爷（网关）用电话帮助你联系。假如你想找你的同学小明聊天，小明家住在很远的另外一个院子里，他家的院子里也有一个看门的王大爷（小明的网关）。但是你不知道小明家的电话号码，不过你的班主任老师有一份你们班全体同学的名单和电话号码对照表，你的老师就是你的DNS服务器。于是你在家里拨通了门口李大爷的电话，有了下面的对话：&nbsp;<br><br>小不点：李大爷，我想找班主任查一下小明的电话号码行吗？&nbsp;<br><br>李大爷：好，你等着。（接着李大爷给你的班主任挂了一个电话，问清楚&nbsp;<br>了小明的电话）问到了，他家的号码是211.99.99.99&nbsp;<br><br>小不点：太好了！李大爷，我想找小明，你再帮我联系一下小明吧。&nbsp;<br><br>李大爷：没问题。（接着李大爷向电话局发出了请求接通小明家电话的请&nbsp;<br>求，最后一关当然是被转接到了小明家那个院子的王大爷那里，然后王大&nbsp;<br>爷把电话给转到小明家）&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;就这样你和小明取得了联系。&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;至于DHCP服务器嘛，可以这样比喻：&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;你家院子里的居民越来越多了，传达室李大爷那里的电话交换机已经不能满足这么多居民的需求了，所以只好采用了一种新技术叫做DHCP，居民们开机的时候随机得到一个电话号码，每一次得到的号码都可能会不同。&nbsp;<br><br>你家门口的李大爷：就是你的网关&nbsp;<br>你的班主任：就是你的DNS服务器&nbsp;<br>传达室的电话交换机：就是你的DHCP服务器&nbsp;<br><br>同上，李大爷和王大爷之间的对话就叫做路由。&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;另：如果还有个小朋友叫做小暗，他住的院子看门的是孙大爷，因为小暗的院子刚盖好，孙大爷刚来不久，他没有李大爷和王大爷办公室的电话（李大爷和王大爷当然也没有他的电话），这时会有两种情况：&nbsp;<br>1、居委会的赵大妈告诉了孙大爷关于李、王两位大爷的电话（同时赵大妈也告诉了李、王关于孙的电话），这就叫静态设定路由&nbsp;<br>2、赵大妈病了，孙大爷自己到处打电话，见人就说：&#8220;我是小暗他们院子管电话的&#8221;，结果被李、王二位听到了，就记在了他们的通讯录上，然后李、王就给孙大爷回了个电话说：&#8220;我是小明（小不点）他们院子管电话的&#8221;，这就叫动态设定路由&nbsp;<br>&nbsp;&nbsp;<br>然后有一天小不点要找小暗，结果自然是小不点给李大爷打电话说：&#8220;大爷，我找小暗&#8221;（这里省略了李大爷去查小暗电话的过程，假设他知道小暗的电话），李大爷一找通讯录：&#8220;哦，小暗的院子的电话是孙大爷管着的，要找小暗自然先要通知孙大爷，我可以通知王大爷让他去找孙大爷，也可以自己直接找孙，那当然是自己直接找孙方便了&#8221;，于是李大爷给孙大爷打了电话，然后孙大爷又把电话转到了小暗家。&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;这里李大爷的通讯录叫做路由表。&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;李大爷选择是自己直接找孙大爷还是让王大爷帮忙转接叫做路由选择。&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;李大爷之所以选择直接找孙大爷是有依据的，因为他直接找孙大爷就能一步到位，如果要王大爷转接就需要两步才能完成，这里的&#8220;步&#8221;叫做&#8220;跳数&#8221;，李大爷的选择遵循的是最少步骤（跳数）原则（如果他不遵守这个原则，小不点可能就会多等些时间才能找到小暗，最终结果可能导致李大爷因工作不力被炒鱿鱼，这叫做&#8220;延时太长，选路原则不合理，换了一个路由器&#8221;）&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;当然，事情总是变化的，小不点和小明吵架了，这些天小不点老是给小暗打电话，小明心里想：&#8220;操，他是不是在说我坏话啊？&#8221;于是小明决定偷听小不点和小暗的通话，但是他又不能出院子，怎么办呢？小明做了这样一个决定：&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;首先他告诉自己院里管电话的王大爷说：&#8220;你给李大爷打个电话说小暗搬到咱们院子了，以后凡是打给他的电话我来接&#8221;，王大爷没反映过来（毕竟年纪大了啊！）就给李大爷打了电话，说：&#8220;现在我来管理小暗的电话了，孙已经不管了&#8221;，结果李大爷就把他的通讯录改了，这叫做路由欺骗。&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;以后小不点再找小暗，李大爷就转给王大爷了（其实应该转给孙大爷的），王大爷收到了这个电话就转给了小明（因为他之前已经和小明说好了），小明收到这个电话就假装小暗和小不点通信。因为小明作贼心虚，害怕明天小不点和小暗见面后当面问他，于是通信断了之后，又自己以小不点的名义给小暗通了个电话复述了一遍刚才的话，有这就叫数据窃听&nbsp;<br><br>再后来，小不点还是不断的和小暗联系，而零落了小明，小明心里嘀咕啊：&#8220;我不能总是这样以小暗的身份和小不点通话啊，外一有一天露馅了怎么办！&#8221;于是他想了一个更阴险的招数：&#8220;干脆我也不偷听你们的电话了，你小不点不是不给我打电话吗！那我让你也给小暗打不了，哼哼！&#8221;，他怎么做的呢？我们来看：&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;他联系了一批狐朋狗友，和他们串通好，每天固定一个时间大家一起给小暗院子传达室打电话，内容什么都有，只要传达室的孙爷爷接电话，就会听到&#8220;打雷啦，下雨收衣服啊！&#8221;、&#8220;人是人他妈生的，妖是妖他妈生的&#8221;、&#8220;你妈贵姓&#8221;等等，听的脑袋都大了，不听又不行，电话不停的响啊！终于有一天，孙爷爷忍不住了，大喊一声：&#8220;我受不了拉！！！！&#8221;，于是上吊自杀了！&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;这就是最简单的DDOS攻击，孙爷爷心理承受能力弱的现象叫做&#8220;数据报处理模块有BUG&#8221;，孙爷爷的自杀叫做&#8220;路由器瘫痪&#8221;。如果是我，就会微笑着和他们拉家常，例如告诉他们&#8220;我早就听了天气预报，衣服10分钟前已经收好了&#8221;或者&#8220;那你妈是人还是妖&#8221;或者&#8220;和你奶奶一个姓&#8221;等等，我这种健全的心理叫做&#8220;健壮的数据报处理，能够抵御任何攻击&#8221;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;孙爷爷瘫了之后，小不点终于不再给小暗打电话了，因为无论他怎么打对方都是忙音，这种现象叫做&#8220;拒绝服务&#8221;，所以小明的做法还有一个名字叫做&#8220;拒绝服务攻击&#8221;。&nbsp;<br><br>小明终于安静了几天，...&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;几天后，小明的院子来了一个美丽的女孩，名字叫做小丽，小明很喜欢她（小小年纪玩什么早恋！）可是小丽有个很帅的男朋友，小明干瞪眼没办法。当然这里还是要遵循上面的原则：小丽是不能出院子的。那个男的想泡小丽自然只能打电话，于是小明又蠢蠢欲动了：&nbsp;<br>还记得王爷爷是院子的电话总管吗？他之所以能管理电话是因为他有一个通讯录，因为同一个院子可能有2个孩子都叫小明，靠名字无法区分，所以通讯录上每一行只有两项：&nbsp;<br><br>门牌&nbsp;&nbsp;&nbsp;&nbsp;电话&nbsp;<br>一号门&nbsp;&nbsp;&nbsp;&nbsp;1234567&nbsp;&nbsp;（这个是小明的）&nbsp;<br>二号门&nbsp;&nbsp;&nbsp;&nbsp;7654321&nbsp;&nbsp;（这个是小丽的）&nbsp;<br>......&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;王爷爷记性不好，但这总不会错了吧（同一个院子不会有2个&#8220;二号门&#8221;吧）？每次打电话人家都要说出要找的电话号码，然后通过通讯录去院子里面敲门，比如人家说我找&#8220;1234567&#8221;，于是王爷爷一比较，哦，是一号门的，他就去敲一号门&#8220;听电话&#8221;，如果是找&#8220;7654321&#8221;，那他就找二号门&#8220;听电话&#8221;。&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;这里的电话号码就是传说中的&#8220;IP地址&#8221;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;这里的门牌号就是传说中的网卡的&#8217;MAC&#8216;地址（每一块网卡的MAC地址都是不一样的，这是网卡的制造商写死在网卡的芯片中的）&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;小明心里想&#8220;奶奶的，老子泡不到你也别想泡&#8221;，于是他打起了王爷爷通讯录的主意，经过细心的观察，周密的准备，他终于发现王爷爷有尿频的毛病（毕竟是老人啊...），终于在一个月黑风高的白天，王爷爷去上厕所了，小明偷偷的摸进传达室，小心翼翼的改了王爷爷的通讯录......&nbsp;</font></p>
<p><font size=2>过了几天，小丽的男朋友又给小丽打来了电话，对方报的电话是&#8220;7654321&#8221;，王爷爷一看通讯录，靠：&nbsp;<br><br>门牌&nbsp;&nbsp;&nbsp;&nbsp;电话&nbsp;<br>一号门&nbsp;&nbsp;&nbsp;&nbsp;1234567&nbsp;&nbsp;（这个是小明的）&nbsp;<br>一号门&nbsp;&nbsp;&nbsp;&nbsp;7654321&nbsp;&nbsp;（注意：这个原来是小丽的，但是被小明改了）&nbsp;<br>......&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;王爷爷不知道改了啊，于是就去找一号门的小明了，小明心里这个美啊，他以小丽父亲的口吻严厉的教训了那个男的和小丽之间不正当的男女关系，结果那个男的恭恭敬敬的挂了电话。当然小丽并不知道整个事情的发生...&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;这里小明的行为叫做&#8220;ARP欺骗&#8221;（因为在实际的网络上是通过发送ARP数据包来实现的，所以叫做&#8220;ARP欺骗&#8221;），王爷爷的通讯录叫做&#8220;ARP表&#8221;&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;这里要注意：王爷爷现在有两个通讯录了，一个是记录每个院子传达室电话的本本，叫做&#8220;路由表&#8221;，一个是现在说的记录院子里面详细信息的本本，叫做&#8220;ARP表&#8221;。&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;有句命言是&#8220;人们总是在追求完美的，尽管永远也做不到&#8221;（请记住这句话，因为这是一个大名人--也就是我，说的）&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;王爷爷的制度中有一条是这么写的&#8220;每个月要重新检查一下门牌号和电话的对应本（也就是ARP表）&#8221;，这个动作叫做&#8220;刷新ARP表&#8221;，每个月的时间限制叫做&#8220;刷新ARP表的周期&#8221;。这样小明为了让那个男的永远不能找到小丽，之后每个月都要偷偷改一次那个通讯录，不过这样也是不得不做的事啊！&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;补充一点，小明是很聪明的，如果通讯录（ARP表）被改成了这样：&nbsp;<br><br>门牌（MAC）&nbsp;&nbsp;&nbsp;&nbsp;电话（IP）&nbsp;<br>一号门&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1234567&nbsp;&nbsp;（这个是小明的）&nbsp;<br>二号门&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1234567&nbsp;&nbsp;（注意：这个被小明改了，但是他一时头晕改错了）&nbsp;<br>......&nbsp;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;就会是计算机就会弹出一个对话框提示&#8220;出现重复的IP地址&#8221;，最终会导致王爷爷不知所措，于是通知一号门和二号门，你们的电话重复了。这样小丽就知道有人在破坏她的好事，这个现象叫做&#8220;骗局被揭穿了&#8221;&nbsp;<br><br>小不点知道了小明偷听他和小暗的电话，于是就和小暗约定好了密码。小不点在家里把要说的加密了之后告诉小暗。土豆－〉星期三，地瓜－〉请客，笨蛋－〉小不点家。于是小不点告诉小暗：土豆笨蛋地瓜。小明听了？？？不懂。。。。郁闷了。。。这是加密。&nbsp;<br>除此之外，小丽也知道了小明改他家的电话号码了。于是王爷爷就登门一个一个把电话和门牌号记下来。并且藏起来不允许外人修改，只能自己有钥匙（密码）。这是ip地址和MAC地址绑定。当有人改了电话号码的时候，就得找王爷爷改。麻烦是麻烦了，但是安全了。不过小明偷偷的把王爷爷的钥匙偷配了一把（盗窃密码成功），于是他还可以修改。这样么，就这样了。</font></p>
<img src ="http://www.cnitblog.com/windforce/aggbug/41105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2008-03-18 15:52 <a href="http://www.cnitblog.com/windforce/articles/41105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ASP.NET 中数据库操作初步[转载]</title><link>http://www.cnitblog.com/windforce/articles/39260.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Wed, 23 Jan 2008 15:54:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/39260.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/39260.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/39260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/39260.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/39260.html</trackback:ping><description><![CDATA[<a href="http://blog.csdn.net/jhmjhm/archive/2004/08/08/68723.aspx">http://blog.csdn.net/jhmjhm/archive/2004/08/08/68723.aspx<br></a><br><br><br><strong>ASP.NET 中数据库操作初步</strong>
<table class=docParameter cellSpacing=6 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td>
            <p>作者：幻想曲　　时间：2003-11-9　　文档类型：原创　　来自：<a href="http://www.blueidea.com/" target=_blank><u><font color=#0000ff>蓝色理想</font></u></a><br>浏览统计 year:4632 | Quarter:854 | Month:185 | Week:11 | today:11</p>
            <p class=list></p>
            </td>
        </tr>
    </tbody>
</table>
<table class=border cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td><img height=6 src="http://www.blueidea.com/img/spacer.gif" width=6></td>
        </tr>
    </tbody>
</table>
<table class=pageLighter cellSpacing=11 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td class=content>
            <p>　　这篇文章暂不提如何显示数据库中的数据，只提出如何增加、删除、修改数据，关于如何显示数据，会在以后的文章中提出。</p>
            <p><strong>一、定义OleDbCommand类型变量：MyCommand</strong></p>
            <p>　　要对数据库进行增加、删除、修改的操作我们还需要根据MyConnectio的类型定义一个OleDbCommand或者SqlCommand对象（请注意如果MyConnection是OleDbConnection类型，那么只能用OleDbCommand；如果MyConnection是SqlConnection类型，那么那么只能用SqlCommand。这里假设MyConnection是OleDbConnection类）。</p>
            <p><em>方法一<br>　　</em>你可以象拖放MyConnection一样拖放一个OleDbCommand，并命名为 MyCommand。<br><em>方法二<br>　　</em>在(关联文件).CS文件中protected System.Data.OleDb.OleDbConnection MyConnection;下面手动添加：<br>protected System.Data.OleDb.OleDbCommand MyCommand;<br>在private void InitializeComponent()中this.MyConnection =newSystem.Data.OleDb.OleDbConnection();的下一行下面手动添加：<br>this.MyCommand = new System.Data.OleDb.OleDbCommand();<br>即可完成对MyCommand的定义<br>说明：MyCommand的作用是用来执行SQL命令<br><strong>二、利用定义的MyConnectio和MyCommand对数据库进行增加、删除、修改</strong></p>
            <p>　　首先我们需要连接并打开一个数据库（关于数据库的连接和打开的操作请察看我们以前的文章）。打开数据库：MyConnectio.Open();<br>然后我们需要给MyCommand指定要执行的SQL命令 : <br>MyCommand.CommandText = "delete from admin";<br>接着我们需要给MyCommand指定数据源（对那个数据库执行SQL命令）：MyCommand.Connection = MyConnection;然后我们执行MyCommand命令即可: MyCommand. ExecuteNonQuery();如果我们在执行还有"delete from admin";<br>后需要接着执行 &#8220;insert into admin (Admin_Code,Admin_Pwd) values(&#8216;aa&#8217;,&#8217;bb&#8217;)&#8221;，则我们只要再次指定MyCommand指定要执行的SQL命令 : MyCommand.CommandText =&#8220;insert into admin (Admin_Code,Admin_Pwd) values(&#8216;aa&#8217;,&#8217;bb&#8217;)&#8221;，然后执行MyCommand. ExecuteNonQuery();即可。（由于数据库未关闭，所以我们不需要也不可以再次MyConnectio.Open();，同理由于没有改变MyCommand的数据源所以我们也没有必要再次指定MyCommand.Connection = MyConnection;）</p>
            <p>下面我们将详细讲解如何在Page_Load()中对数据库的增加、删除、修改，最后我们再来总结一下ExecuteNonQuery(),ExecuteScalar(),ExecuteReader的用法<br>1、 增加新的记录<br>private void Page_Load(object sender, System.EventArgs e)<br>{<br>MyConnection.Open();&#8217;打开数据库<br>MyCommand1.CommandText = "insert into admin values(&#8216;aaddq&#8216;,&#8216;as&#8216;,&#8216;ss&#8216;)";<br>MyCommand1.Connection = MyConnection;<br>MyCommand1.ExecuteNonQuery();&#8217;由于增加了一条记录，所以返回1<br>//或者MyCommand1.ExecuteReader();先增加一条记录，然后返回一个System.Data.OleDb.OleDbDataReader类型的对象，该对象为:EOF<br>//或者MyCommand1. ExecuteScalar();先增加一条记录，返回未实列化的对象<br>MyConnection.Close();<br>}</p>
            <p>2、 删除现有数据<br>private void Page_Load(object sender, System.EventArgs e)<br>{<br>MyConnection.Open();&#8217;打开数据库<br>MyCommand1.CommandText = "delete * from admin";<br>MyCommand1.Connection = MyConnection;<br>MyCommand1.ExecuteNonQuery();&#8217;由于删除了n条记录，所以返回n<br>//或者MyCommand1.ExecuteReader();先删除n条记录，然后返回一个System.Data.OleDb.OleDbDataReader类型的对象，该对象为:EOF<br>//或者MyCommand1. ExecuteScalar();先删除n条记录，返回未实列化的对象<br>MyConnection.Close();<br>}<br><br>3、 修改现有数据<br>private void Page_Load(object sender, System.EventArgs e)<br>{<br>MyConnection.Open();&#8217;打开数据库<br>MyCommand1.CommandText = "update admin set admin_code=&#8217;212&#8217;,Admin_pwd=&#8217;43&#8217; where admin_code=&#8217;23&#8217;";<br>MyCommand1.Connection = MyConnection;<br>MyCommand1.ExecuteNonQuery();&#8217;由于修改了1条记录，所以返回n<br>//或者MyCommand1.ExecuteReader();先修改了1条记录，然后返回一个System.Data.OleDb.OleDbDataReader类型的对象，该对象为:EOF<br>//或者MyCommand1. ExecuteScalar();先修改了1条记录，返回未实列化的对象<br>MyConnection.Close();<br>}</p>
            <p><br><strong>三、关于MyCommand的ExecuteNonQuery(),ExecuteScalar(),ExecuteReader方法的区别:</strong><br>1、ExecuteNonQuery():执行SQL，返回一个整型变量，如果SQL是对数据库的记录进行操作，那么返回操作影响的记录条数，如果是SQL="CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"那么在表创建成功后该方法返回 &#8211;1。<br>例如：<br>private void Page_Load(object sender, System.EventArgs e)<br>{<br>MyConnection.Open();&#8217;打开数据库<br>MyCommand1.CommandText = "CREATE TABLE LookupCodes (code_id smallint IDENTITY(1,1) PRIMARY KEY CLUSTERED, code_desc varchar(50) NOT NULL)"； MyCommand1.Connection = MyConnection;<br>MyCommand1.ExecuteNonQuery();&#8217;首先建立一个LookupCodes表，然后返回-1<br>//或者MyCommand1.ExecuteReader();首先建立一个LookupCodes表，然后返回一个System.Data.OleDb.OleDbDataReader类型的对象，该对象为:EOF<br>//或者MyCommand1. ExecuteScalar();首先建立一个LookupCodes表，返回未实列化的对象<br>MyConnection.Close();<br>}</p>
            <p><br>2、 ExecuteScalar()：执行SQL，（如果SQL是查询Select）返回查询结果的第一行第一列，如果（如果SQL不是查询Select）那么返回未实列化的对象，因为对象未实列化，所以返回结果不能ToString(),不能Equals(null)，也就是说返回结果没有任何作用</p>
            <p>3、 executeReader方法执行SQL，（如果SQL是查询Select）返回查询结果的集合，类型是System.Data.OleDb.OleDbDataReader，你可以通过此结果，获取查询的数据。如果（如果SQL不是查询Select）那么返回一个没有任何数据的System.Data.OleDb.OleDbDataReader类型的集合(EOF)</p>
            <p><br><strong>四、总结：</strong><br>ASP.Net中对于数据库的操作方法很多，要实现统一个目标不同的人可能会采取不同的方法，就好像在ASP中有的人喜欢用RS.ADDNEW，有的人喜欢用&#8221;Insert Into&#8221;，主要是看个人的习惯，当然在性能上不同的方法可能会存在较大的差别，这个只能靠我们在平常的学习中一点一滴的积累经验的。另外顺便说一下ASP.Net页提供类似如下方式的操作方法：<br>OleDbCommand2.Parameters("au_id").Value = TextBox1.Text<br>OleDbCommand2.Parameters("au_lname").Value = TextBox2.Text<br>OleDbCommand2.Parameters("au_fname").Value = TextBox3.Text<br>OleDbCommand2.Parameters("phone").Value = TextBox4.Text<br>OleDbCommand2.Parameters("address").Value = TextBox5.Text<br>OleDbCommand2.Parameters("city").Value = TextBox6.Text<br>OleDbCommand2.Parameters("st").Value = TextBox7.Text<br>OleDbCommand2.Parameters("zip").Value = TextBox8.Text<br>OleDbCommand2.Parameters("contract").Value = CheckBox1.Checked<br>cmdresults = OleDbcommand2.ExecuteNonQuery()<br></p>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/windforce/aggbug/39260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2008-01-23 23:54 <a href="http://www.cnitblog.com/windforce/articles/39260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>华为Vlan QinQ(转载)</title><link>http://www.cnitblog.com/windforce/articles/32935.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Tue, 04 Sep 2007 07:24:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/32935.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/32935.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/32935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/32935.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/32935.html</trackback:ping><description><![CDATA[<table style="TABLE-LAYOUT: fixed">
    <tbody>
        <tr>
            <td>
            <div class=cnt>
            <div>QinQ是指将用户私网VLAN TAG封装在公网vlan tag中，使报文带着两层vlan tag穿越运营商的骨干网络（公网）。在公网中报文只根据外层vlan tag（即公网vlan tag）传播，用户的私网vlan tag被屏蔽。</div>
            <div></div>
            <div>带单层vlan tag的报文结构如下所示：</div>
            <div>
            <table style="WIDTH: 495px; HEIGHT: 83px" cellSpacing=1 cellPadding=1 width=495 border=1>
                <tbody>
                    <tr>
                        <td>DA（6B）</td>
                        <td>SA（6B） </td>
                        <td>ETYPE（8100）（2B）</td>
                        <td>用户vlan tag(2B)</td>
                        <td>ETYPE(2B)</td>
                        <td>DATA(0-1500B)</td>
                        <td>FCS(4B)</td>
                    </tr>
                </tbody>
            </table>
            </div>
            <p>&#160;</p>
            <p>带双层vlan tag的报文结构如下：
            <table cellSpacing=1 cellPadding=1 width=200 border=1>
                <tbody>
                    <tr>
                        <td>DA</td>
                        <td>SA</td>
                        <td>ETYPE</td>
                        <td>Nested vlan tag</td>
                        <td>ETYPE</td>
                        <td>user vlan tag</td>
                        <td>ETYPE</td>
                        <td>DATA</td>
                        <td>FCS</td>
                    </tr>
                </tbody>
            </table>
            </p>
            <p>相对基于MPLS的二层VPN，QinQ具有如下特点：</p>
            <p>。为用户提供了一种更为简单的二层VPN隧道。</p>
            <p>。不需要信令协议的支持，可以通过纯静态配置实现。</p>
            <p>由于QinQ的实现是基于802.1Q协议中的Trunk端口概念，要求隧道上的设备都必须支持802.1Q协议，所以QinQ只适用于小型的，以三层交换机为骨干的企业网或小规模的城域网。<br><br></p>
            <p>QinQ主要可以解决如下几个问题：</p>
            <p>。缓解日益紧缺的公网vlan id资源问题。</p>
            <p>。用户可以规划自己的私网vlan id，不会导致和公网vlan id冲突。</p>
            <p>。为小型城域网或企业网提供一种较为简单的二层vpn解决方案。</p>
            <p>&#160;</p>
            <p>QinQ的实现方式</p>
            <p>S8500系列路由交换机通过以下两种方式实现QinQ：</p>
            <p>1、开启端口的vlan vpn特性功能</p>
            <p>开启端口的vlan vpn功能后，当该端口接收到报文，无论报文是否带有vlan tag，交换机都会为该报文打上本端口缺省vlan的vlan tag。这样，如果接收到的是已经带有vlan tag的报文，该报文就成为双tag的报文；如果接收到的是untagged的报文，该报文就成为带有端口缺省vlan tag的报文。</p>
            <p>2、配置基于流分类的nested vlan</p>
            <p>基于流分类的nested vlan特性是对QinQ的一种更灵活的实现。用户可以对端口下匹配特定ACL流规则的报文进行如下操作。</p>
            <p>。设置报文的外层vlan tag</p>
            <p>。修改报文的外层vlan tag</p>
            <p>&#160;</p>
            <p>QinQ报文的TPID值可调功能</p>
            <p>TPID（tag protocol identifier，标签协议标识）是vlan tag中的一个字段，IEEE　802.1Q协议规定该字段的取值为0X8100。</p>
            <p>IEEE　802.1Q协议定义的以太网帧的TAG报文结构如下：</p>
            <p>
            <table cellSpacing=1 cellPadding=1 width=200 border=1>
                <tbody>
                    <tr>
                        <td>DA</td>
                        <td>SA</td>
                        <td>TAG</td>
                        <td>Frame Load</td>
                        <td>FCS</td>
                    </tr>
                    <tr>
                        <td></td>
                        <td>TPID</td>
                        <td>User Priority</td>
                        <td>CFI</td>
                        <td>VLAN ID</td>
                    </tr>
                </tbody>
            </table>
            </p>
            <p>S8500系列交换机缺省采用协议规定的TPID值（0x8100）。某些厂商的设备将QinQ报文外层TAG的TPID值设置为0x9100或0x9200。为了和这些设备兼容，S8500系列交换机提供了基于端口的QinQ报文TPID值可调功能。</p>
            <p>用户可以将连接公网侧的端口设置为vlan-vpn uplink端口，这些端口的TPID值可以由用户自行配置。vlan-vpn uplink端口收到报文时会将报文外层vlan tag中的TPID值替换为用户设定值再进行发送，从而使发送到公网中的QinQ报文可以被其他厂商的设备识别。</p>
            <p>&#160;</p>
            <p>配置端口的vlan vpn特性功能</p>
            <p>配置准备</p>
            <p>。端口的GVRP、STP或802.1x协议均未启动</p>
            <p>。端口所属的VLAN关闭了IGMP　Snooping</p>
            <p>。端口所属的VLAN接口上未开启IGMP</p>
            <p>。此端口必须为Access端口</p>
            <p>&#160;</p>
            <p>配置过程</p>
            <p>system-view</p>
            <p>interface ethernet2/1/1</p>
            <p>vlan-vpn enable&nbsp;&nbsp; 缺省，端口vlan-vpn特性是关闭的。此端口应为access端口</p>
            <p>display port vlan-vpn　　显示当前TPID值、vlan-vpn端口信息、uplink信息</p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cnitblog.com/windforce/aggbug/32935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2007-09-04 15:24 <a href="http://www.cnitblog.com/windforce/articles/32935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>iis6.0配置PHP 环境</title><link>http://www.cnitblog.com/windforce/articles/29429.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Tue, 03 Jul 2007 14:42:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/29429.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/29429.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/29429.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/29429.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/29429.html</trackback:ping><description><![CDATA[最简单的办法是下载个安装版的PHP 跟着安装向导一步步的就可以。这里略过不述。<br>着重说一下手动配置IIS以ISAPI执行PHP文件。<br><br><br>1. 下载解压缩版PHP之后解压到任何目录，将PHP.INI-DIST 文件复制到windows目录中。<br>2. 安装好IIS后主要有4个部分需要更改<br>&nbsp; 1&gt;建立新网站的主目录中应用程序后面的配置-在映射中添加应用程序扩展名映射，可执行文件 浏览选择PHP文件夹中的php5isapi.dll&nbsp; （php5.2.3为例） 扩展名添 .php&nbsp; 动作 选全部 或填写 GET,POST&nbsp; 注意中间用 逗号区分。一路确定。<br>&nbsp; 2&gt;&nbsp;&nbsp; ISAPI 筛选器中添加 名字 php&nbsp; 可执行文件 同样选择 php5isapi.dll <br>&nbsp; 3&gt;&nbsp;&nbsp; 启用默认内容文档 添加 index.php <br>&nbsp; 4&gt;&nbsp;&nbsp; web服务扩展，添加一个新的web服务扩展 扩展名 *.php&nbsp; 要求的文件 添加 php5isapi.dll<br><br>OK..<br><br>&lt;? phpinfo(); ?&gt; 查看运行状态&nbsp;
<td class=e>ServerAPI&nbsp;&nbsp; </td>
<td class=v>ISAPI&nbsp; 模式</td>
<img src ="http://www.cnitblog.com/windforce/aggbug/29429.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2007-07-03 22:42 <a href="http://www.cnitblog.com/windforce/articles/29429.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HTTP错误401 - 您未被授权查看该页(转载)</title><link>http://www.cnitblog.com/windforce/articles/29428.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Tue, 03 Jul 2007 14:07:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/29428.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/29428.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/29428.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/29428.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/29428.html</trackback:ping><description><![CDATA[HTTP错误401 - 您未被授权查看该页
<div>&nbsp;</div>
<div>　在配置IIS的时候，如果安全稍微做的好一些。就会出现各式各样的问题。比如，常见的访问网页会弹出用户名密码的登陆界面，或者是访问某种页面比如html,asp没事情，但是访问jsp或者php就有问题，显示401.3　ACL 禁止访问资源等　　通常的解决办法是。</div>
<div>&nbsp;</div>
<div>1、错误号401.1<br>症状：HTTP 错误 401.1 - 未经授权：访问由于凭据无效被拒绝。<br>分析：<br>由于用户匿名访问使用的账号(默认是IUSR_机器名)被禁用，或者没有权限访问计算机，将造成用户无法访问。<br>解决方案：<br>（1）查看IIS管理器中站点安全设置的匿名帐户是否被禁用，如果是，请尝试用以下办法启用：<br>控制面板-&gt;管理工具-&gt;计算机管理-&gt;本地用户和组，将IUSR_机器名账号启用。如果还没有解决，请继续下一步。<br>（2）查看本地安全策略中，IIS管理器中站点的默认匿名访问帐号或者其所属的组是否有通过网络访问服务器的权限，如果没有尝试用以下步骤赋予权限：<br>开始-&gt;程序-&gt;管理工具-&gt;本地安全策略-&gt;安全策略-&gt;本地策略-&gt;用户权限分配，双击&#8220;从网络访问此计算机&#8221;，添加IIS默认用户或者其所属的组。<br>注意：一般自定义 IIS默认匿名访问帐号都属于组，为了安全，没有特殊需要，请遵循此规则。<br><br>2、错误号401.2<br>症状：HTTP 错误 401.2 - 未经授权：访问由于服务器配置被拒绝。<br>原因：关闭了匿名身份验证<br>解决方案：<br>运行inetmgr，打开站点属性-&gt;目录安全性-&gt;身份验证和访问控制-&gt;选中&#8220;启用匿名访问&#8221;，输入用户名，或者点击&#8220;浏览&#8221;选择合法的用户，并两次输入密码后确定。<br><br>3、错误号：401.3<br>症状：HTTP 错误 401.3 - 未经授权：访问由于 ACL 对所请求资源的设置被拒绝。<br>原因：IIS匿名用户一般属于Guests组，而我们一般把存放网站的硬盘的权限只分配给administrators组，这时候按照继承原则，网站文件夹也只有administrators组的成员才能访问，导致IIS匿名用户访问该文件的NTFS权限不足，从而导致页面无法访问。<br>解决方案：<br>给IIS匿名用户访问网站文件夹的权限，方法：进入该文件夹的安全选项，添加IIS匿名用户，并赋予相应权限，一般是读、写。</div>
<img src ="http://www.cnitblog.com/windforce/aggbug/29428.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2007-07-03 22:07 <a href="http://www.cnitblog.com/windforce/articles/29428.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析众多不同VPN产品的安全功能[转载]</title><link>http://www.cnitblog.com/windforce/articles/9470.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Fri, 21 Apr 2006 11:39:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/9470.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/9470.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/9470.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/9470.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/9470.html</trackback:ping><description><![CDATA[
		<p>短短两三年时间，VPN已从初出茅庐的业界新人迅速窜升为当红小生，除其自然状态下的茁壮成长外，市场的需求以及技术和产品的定向刺激，都使得如今的IT市场上VPN产品真可谓各有来头、琳琅满目。 </p>
		<p>VPN实现的是一块更为广袤的“私密空间”和一条更为隐秘的“安全通道”。 </p>
		<p>随着网络应用的遍地开花，安全技术逐渐成为VPN产品的一个拳头支撑，基于IPSec和SSL协议的不同VPN产品也正表现着VPN的不同安全特色…… </p>
		<p>在如今的网络时代，信息共享正在被赋予越来越丰富的外延，诸如本地信息的远程化、远程资源的本地化等，但凡能通过网络方式实现的，人们都乐此不疲地琢磨并尝试着。 </p>
		<p>VPN（虚拟专用网络）作为一种虚拟通道技术，其最初的设想只是为了满足远程访问的专用接入需求，并且能够避开IP地址资源有限的尴尬，而最终大量产品的市场需求以及后续VPN技术的不断延伸发展，也足以说明网络信息化对这一专用通道技术的强烈呼唤。 </p>
		<p>伴随着社会本身的进步以及信息化进程的大副进展，各种网络应用随即接踵而至，越来越多的安全需求成为VPN技术的关键。 </p>
		<p>
				<strong>总览VPN的安全实现</strong>
		</p>
		<p>在原先维持网络更多虚拟空间的前提下，如何保证接入用户的合法性、保证网络访问的安全性以及系统本身的安全可靠性等等，都成为VPN需要面对的问题。 </p>
		<p>首先，VPN能保障哪些安全呢？很容易想象，VPN的实现技术和方式有很多，但是所有的VPN产品都应该保证通过公用网络平台传输数据的专用性和安全性。如在非面向连接的公用IP网络上建立一个隧道，利用加密技术对经过隧道传输的数据进行加密，以保证数据的私有性和安全性。此外，还需要防止非法用户对网络资源或私有信息的访问。 </p>
		<p>其次，VPN还应当为不同网络的数据提供不同等级的服务质量保证（QoS）。如对移动办公的用户，随意自主的连接性和信号的覆盖性就是VPN服务质量保证的一个主要因素；而当分支机构某用户通过VPN专有网对总部系统网络进行访问的话，整个总部系统的网络需要保持良好的稳定性。 </p>
		<p>此外，对于带宽和流量的控制，则是对网络优化的一个重要方面。充分有效地利用有限的广域网资源，保证重要数据的有效且可靠的带宽，将是关系网络整体稳定性的一个重要指标。通过流量预测与流量控制策略，可以按照优先级实现带宽资源的合理配置和管理，从而净化所处的网络。 </p>
		<p>
				<strong>IPSec VPN：端对端的安全</strong>
		</p>
		<p>隧道技术是最典型、也是应用最为广泛的VPN技术，通过匹配四层网络模型中的不同层协议，可以生成不同的VPN技术及产品，如<font style="BACKGROUND-COLOR: #ffffff" color="#0000ff">IPSec VPN就是第三层隧道协议匹配IP层（第三层）的IPSec协议生成的，而SSL VPN则是第四层隧道协议匹配应用层（第四层）的SSL协议生成的</font>，这两种VPN也是当前业内最为流行的VPN技术及产品。 </p>
		<p>
				<font color="#0000ff">IPSec工作于网络层，是一个开放的结构，定义在IP数据包格式中，不同的加密算法都可以利用IPSec定义的体系结构在网络数据传输过程中实施。IPSec协议可以设置成在两种模式下运行：一种是隧道（tunnel）模式，一种是（transport）模式。隧道模式下，IPSec把IPv4数据包封装在安全的IP帧中。传输模式是为了保护端到端的安全性，即在这种模式下不会隐藏路由信息。IPSec几乎可以为所有的应用提供访问，包括客户端/服务器模式和某些传统的应用，但是由于基于网络层，不能穿越通常的NAT、防火墙。</font>
		</p>
		<p>
				<font color="#0000ff">IPSec为Internet业务提供最强的安全功能，与其他隧道和安全技术相比，其优越性在于它的安全性和互操作性，但是管理相对复杂</font>。IPSec得到各厂商广泛支持，非常适合于组建远程网络互联VPN。如果需要<font color="#ff0000">相对安全、保密的通道、网络流量有限、对业务实时性要求不高，应首选IPSec建立VPN</font>。 </p>
		<p>IPSec VPN是基于IPSec协议的VPN产品，<font color="#0000ff">由IPSec协议提供隧道安全保障。IPSec是一种由IETF设计的端到端的确保基于IP通讯的数据安全性的机制。IPSec隧道模式具有以下特点：只能支持IP数据流；工作在IP栈的底层，因此，应用程序和高层协议可以继承IPSEC的行为；由一个安全策略（一整套过滤机制）进行控制。安全策略按照优先级的先后顺序创建可供使用的加密和隧道机制以及验证方式。当需要建立通讯时，双方机器执行相互验证，然后协商使用何种加密方式。此后的所有数据流都将使用双方协商的加密机制进行加密，然后封装在隧道包头内</font>。 </p>
		<p>目前防火墙产品中集成的VPN使用较多的是IPSec 协议，在中国其发展处于蓬勃状态。<br /></p>
<img src ="http://www.cnitblog.com/windforce/aggbug/9470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2006-04-21 19:39 <a href="http://www.cnitblog.com/windforce/articles/9470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP/IP协议基础之一[转载]</title><link>http://www.cnitblog.com/windforce/articles/8468.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Sat, 01 Apr 2006 06:31:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/8468.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/8468.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/8468.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/8468.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/8468.html</trackback:ping><description><![CDATA[1、TCP/IP协议栈 <br /><br />四层模型 <br />TCP/IP这个协议遵守一个四层的模型概念：应用层、传输层、互联层和网络接口层。 <br /><br />网络接口层 <br />模型的基层是网络接口层。负责数据帧的发送和接收，帧是独立的网络信息传输单元。网络接口层将帧放在网上，或从网上把帧取下来。 <br /><br />互联层 <br />互联协议将数据包封装成internet数据报，并运行必要的路由算法。 <br />这里有四个互联
<script language="javascript" src="/CMS/JS/newsad.js"></script>
协议： <br />网际协议IP：负责在主机和网络之间寻址和路由数据包。 <br />地址解析协议ARP：获得同一物理网络中的硬件主机地址。 <br />网际控制消息协议ICMP：发送消息，并报告有关数据包的传送错误。 <br />互联组管理协议IGMP：被IP主机拿来向本地多路广播路由器报告主机组成员。 <br /><br />传输层 <br />传输协议在计算机之间提供通信会话。传输协议的选择根据数据传输方式而定。 <br />两个传输协议： <br />传输控制协议TCP：为应用程序提供可靠的通信连接。适合于一次传输大批数据的情况。并适用于要求得到响应的应用程序。 <br />用户数据报协议UDP：提供了无连接通信，且不对传送包进行可靠的保证。适合于一次传输小量数据，可靠性则由应用层来负责。 <br /><br />应用层 <br />应用程序通过这一层访问网络。 <br /><br />网络接口技术 <br />IP使用网络设备接口规范NDIS向网络接口层提交帧。IP支持广域网和本地网接口技术。 <br /><br />串行线路协议 <br />TCP/IPG一般通过internet串行线路协议SLIP或点对点协议<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>在串行线上进行数据传送。(是不是我们平时把它称之为异步通信，对于要拿LINUX提供建立远程连接的朋友应该多研究一下这方面的知识)? <br /><br /><br />2、ARP <br /><br />要在网络上通信，主机就必须知道对方主机的硬件地址(我们不是老遇到网卡的物理地址嘛)。地址解析就是将主机IP地址映射为硬件地址的过程。地址解析协议ARP用于获得在同一物理网络中的主机的硬件地址。 <br /><br />解释本地IP地址(要了解地址解析工作过程的朋友看好了) <br />主机IP地址解析为硬件地址： <br />(1)当一台主机要与别的主机通信时，初始化ARP请求。当该IP断定IP地址是本地时，源主机在ARP缓存中查找目标主机的硬件地址。 <br />(2)要是找不到映射的话，ARP建立一个请求，源主机IP地址和硬件地址会被包括在请求中，该请求通过广播，使所有本地主机均能接收并处理。 <br />(3)本地网上的每个主机都收到广播并寻找相符的IP地址。 <br />(4)当目标主机断定请求中的IP地址与自己的相符时，直接发送一个ARP答复，将自己的硬件地址传给源主机。以源主机的IP地址和硬件地址更新它的ARP缓存。源主机收到回答后便建立起了通信。 <br /><br />解析远程IP地址 <br />不同网络中的主机互相通信，ARP广播的是源主机的缺省网关。 <br />目标IP地址是一个远程网络主机的话，ARP将广播一个路由器的地址。 <br />(1)通信请求初始化时，得知目标IP地址为远程地址。源主机在本地路由表中查找，若无，源主机认为是缺省网关的IP地址。在ARP缓存中查找符合该网关记录的IP地址(硬件地址)。 <br />(2)若没找到该网关的记录，ARP将广播请求网关地址而不是目标主机的地址。路由器用自己的硬件地址响应源主机的ARP请求。源主机则将数据包送到路由器以传送到目标主机的网络，最终达到目标主机。 <br />(3)在路由器上，由IP决定目标IP地址是本地还是远程。如果是本地，路由器用ARP(缓存或广播)获得硬件地址。如果是远程，路由器在其路由表中查找该网关，然后运用ARP获得此网关的硬件地址。数据包被直接发送到下一个目标主机。 <br />(4)目标主机收到请求后，形成ICMP响应。因源主机在远程网上，将在本地路由表中查找源主机网的网关。找到网关后，ARP即获取它的硬件地址。 <br />(5)如果此网关的硬件地址不在ARP缓存中，通过ARP广播获得。一旦它获得硬件地址，ICMP响应就送到路由器上，然后传到源主机。 <br /><br />ARP缓存 <br />为减少广播量，ARP在缓存中保存地址映射以备用。ARP缓存保存有动态项和静态项。动态项是自动添加和删除的，静态项则保留在CACHE中直到计算 <br />机重新启动。 <br /><br />ARP缓存总是为本地子网保留硬件广播地址(0xffffffffffffh)作为一个永久项。 <br />此项使主机能够接受ARP广播。当查看缓存时，该项不会显示。 <br />每条ARP缓存记录的生命周期为10分钟，2分钟内未用则删除。缓存容量满时，删除最老的记录。 <br /><br />加入静态(永久)记录 <br />通过添加静态ARP项可减少ARP请求访问主机的次数。 <br /><br />ARP包的结构 <br />ARP结构的字段如下： <br />硬件类型--使用的硬件(网络访问层)类型。 <br />协议类型--解析过程中的协议使用以太类型的值。 <br />硬件地址长度--硬件地址的字节长度，对于以太网和令牌环来说，其长度为6字节。 <br />协议地址长度--协议地址字节的长度，IP的长度是4字节。 <br />操作号--指定当前执行操作的字段。 <br />发送者的硬件地址--发送者的硬件地址。 <br />发送者的协议地址--发送者的协议地址。 <br />目的站硬件地址--目标者的硬件地址。 <br />目的站协议地址--目标者的协议地址。 <br /><br /><br />3、ICMP和IGMP <br /><br />internet控制消息协议ICMP是用于报告错误并代表IP对消息进行控制。 <br />IP运用互联组管理协议IGMP来告诉路由器，某一网络上指导组中的可用主机。 <br /><br />ICMP <br />ICMP源抑制消息：当TCP/IP主机发送数据到另一主机时，如果速度达到路由器或者链路的饱和状态，路由器发出一个ICMP源抑制消息。 <br /><br />ICMP数据包结构 <br />类型：一个8位类型字段，表示ICMP数据包类型。 <br />代码：一个8位代码域，表示指定类型中的一个功能。如果一个类型中只有一种功能，代码域置为0。 <br />检验和：数据包中ICMP部分上的一个16位检验和。 <br />指定类型的数据随每个ICMP类型变化的一个附加数据。 <br /><br />IGMP <br />IGMP信息传给别的路由器以使每个支持多路广播的路由器获知哪个主机组和哪个网络中。 <br /><br />IGMP包结构 <br />版本：IGMP的版本，值一般为0x1h。 <br />类型：IGMP消息的类型。0x1h类型称为主机成员请求，在多路广播路由器上用于指定多级组中的任何成员轮询一个网络。0x2h类型称为主机成员报告，在主机上用于发布指定组中的成员情况或对一个路由器的主机成员请求进行回答。 <br />未用：未用的域名被发送者置零且被接收者忽略。 <br />检验和：IGMP头的一个16位检验和。 <br />组地址：主机用该组地址在一个主机成员请求中存储IP多路广播地址。在主机成员请求中，组地址被全置零，而且硬件级的多路广播地址被用来标示主机组。 <br /><br />4、IP <br /><br />IP是一个无连接的协议，主要就是负责在主机间寻址并为数据包设定路由，在交换数据前它并不建立会话。因为它不保证正确传递，另一方面，数据在被收到时，IP不需要收到确认，所以它是不可靠的。 <br />有一些字段，在当数据从传输层传下来时，会被附加在数据包中，我们来看一下这些字段： <br />源IP地址：用IP地址确定数据报发送者。 <br />目标IP地址：用IP地址确定数据报目标。 <br />协议：告知目的机的IP是否将包传给TCP或UDP。 <br />检查和：一个简单的数学计算，用来证实收到的包的完整性。 <br />TTL生存有效时间：指定一个数据报被丢弃之前，在网络上能停留多少时间(以秒计)。它避免了包在网络中无休止循环。路由器会根据数据在路由器中驻留的时间来递减TTL。其中数据报通过一次路由器，TTL至少减少一秒。 <br />根据我们前面提到关于ARP的知识，如果IP地址目标为本地地址时，IP将数据包直接传给那个主机；如果目标地址为远程地址的话，IP在本地的路由表中查找远程主机的路由(看来好象我们平时拨114一样)。如果找到一个路由，IP用它传送数据包。如果没找到呢，就会将数据包发送到源主机的缺省网关，也称之为路由器。(很多时候一直在搞网关和路由器的定义，其实我觉得在学的时候不一定死抠概念，现在硬件和软件结合的产品越来越多了，一时很分清的，只要我们运用的时候可以解决实际问题嘛。) <br />这样当路由器收到一个包后，该包向上传给IP： <br />(1)如果交通阻塞(听起来蛮可怕的)，包在路由器中停滞，TTL至少减1或更多。要是它降到0的话，包就会被抛弃。 <br />(2)如果对于下一网络来说包太大的话，IP会将它分割成若干个小包。 <br />(3)如果包被分解，IP为每个新包制造一个新头，其中包括：一个标志，用来显示其它小包在其后；一个小包ID，用来确定所有小包是一起的；一个小包偏移，用来告诉接收主机怎么重新组合它们。 <br />(4)IP计算一个新的检验和。 <br />(5)IP获取一个路由的目标硬件地址。 <br />(6)IP转发包。 <br />在下一主机，包被发送到TCP或UDP。每个路由器都要重复该过程。直到包到达最终目的地。当包到达最终目的地后，IP将小包组装成原来的包。 <br /><br /><br />5、TCP <br /><br />TCP是一种可靠的面向连接的传送服务。它在传送数据时是分段进行的，主机交换数据必须建立一个会话。它用比特流通信，即数据被作为无结构的字节流。 <br />通过每个TCP传输的字段指定顺序号，以获得可靠性。如果一个分段被分解成几个小段，接收主机会知道是否所有小段都已收到。通过发送应答，用以确认别的主机收到了数据。对于发送的每一个小段，接收主机必须在一个指定的时间返回一个确认。如果发送者未收到确认，数据会被重新发送；如果收到的数据包损坏，接收主机会舍弃它，因为确认未被发送，发送者会重新发送分段。 <br /><br />端口 <br />SOCKETS实用程序使用一个协议端口号来标明自己应用的唯一性。端口可以使用0到65536之间的任何数字。在服务请求时，操作系统动态地为客户端的应用程序分配端口号。 <br /><br />套接字 <br />套接字在要领上与文件句柄类似，因为其功能是作为网络通信的终结点。一个应用程序通过定义三部分来产生一个套接字：主机IP地址、服务类型(面向连接的服务是TCP，无连接服务是UDP)、应用程序所用的端口。 <br /><br />TCP端口 <br />TCP端口为信息的传送提供定地点，端口号小于256的定义为常用端口。 <br /><br />TCP的三次握手 <br />TCP对话通过三次握手来初始化。三次握手的目的是使数据段的发送和接收同步；告诉其它主机其一次可接收的数据量，并建立虚连接。 <br />我们来看看这三次握手的简单过程： <br />(1)初始化主机通过一个同步标志置位的数据段发出会话请求。 <br />(2)接收主机通过发回具有以下项目的数据段表示回复：同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号。 <br />(3)请求主机再回送一个数据段，并带有确认顺序号和确认号。 <br /><br />TCP滑动窗口 <br />TCP滑动窗口用来暂存两台主机间要传送的数据，有点类似CACHE。 <br />每个TCP/IP主机有两个滑动窗口：一个用于接收数据，另一个用于发送数据。 <br /><br />6、UDP <br /><br />用户数据报协议UDP提供了无连接的数据报服务。它适用于无须应答并且通常一次只传送少量数据的应用软件。 <br /><br />UDP端口 <br />端口作为多路复用的消息队列使用。 <br />15 NETSTAT 网络状态 <br />53 DOMAIN 域名服务器 <br />69 TFTP 平凡文件传送协议 <br />137 NETBIOS-NS NETBIOS命令服务 <br />138 NETBIOS-DGM NETBIOS数据报服务 <br />161 SNMP SNMP网络监视器 <br /><br /><br />IP地址分配 <br /><br />1、IP地址 <br /><br />IP地址标识着网络中一个系统的位置。我们知道每个IP地址都是由两部分组成的：网络号和主机号。其中网络号标识一个物理的网络，同一个网络上所有主机需要同一个网络号，该号在互联网中是唯一的；而主机号确定网络中的一个工作端、服务器、路由器其它TCP/IP主机。对于同一个网络号来说，主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定。 <br /><br />网络号和主机号 <br />IP地址有两种表示形式：二进制表示(1和0太多了就搞不清)和点分十进制表示。每个IP地址的长度为4字节，由四个8位域组成，我们通常称之为八位体。八位体由句点.分开，表示为一个0-255之间的十进制数。一个IP地址的4个域分别标明了网络号和主机号。 <br /><br />2、地址类型 <br /><br />为适应不同大小的网络，internet定义了5种IP地址类型。 <br />可以通过IP地址的前八位来确定地址的类型： <br />类型 IP形式 网络号 主机号 <br />A类 w.x.y.z w x.y.z <br />B类 w.x.y.z w.x y.z <br />C类 w.x.y.z w.x.y z <br />我们来看一下这5类地址： <br />A类地址：可以拥有很大数量的主机，最高位为0，紧跟的7位表示网络号，余24位表示主机号，总共允许有126个网络。 <br />B类地址：被分配到中等规模和大规模的网络中，最高两位总被置于二进制的10，允许有16384个网络。 <br />C类地址：被用于局域网。高三位被置为二进制的110，允许大约200万个网络。 <br />D类地址：被用于多路广播组用户，高四位总被置为1110，余下的位用于标明客户机所属的组。 <br />E类地址是一种仅供试验的地址。 <br /><br />3、地址分配指南 <br /><br />在分配网络号和主机号时应遵守以下几条准则： <br />(1)网络号不能为127。大家知道该标识号被保留作回路及诊断功能，还记得平时ping <br />127.0.0.1？ <br />(2)不能将网络号和主机号的各位均置1。如果每一位都是1的话，该地址会被解释为网内 <br />广播而不是一个主机号。(TCP/IP是一个可广播的协议嘛) <br />(3)相应于上面一条，各位均不能置0，否则该地址被解释为“就是本网络”。 <br />(4)对于本网络来说，主机号应该是唯一。(否则会出现IP地址已分配或有冲突之类的错误) <br /><br />分配网络号 <br />对于每个网络以及广域连接，必须有唯一的网络号，主机号用于区分同一物理网络中的不同主机。如果网络由路由器连接，则每个广域连接都需要唯一的网络号。 <br /><br />分配主机号 <br />主机号用于区分同一网络中不同的主机，并且主机号应该是唯一的。所有的主机包括路由器间的接口，都应该有唯一的网络号。路由器的主机号，要配置成工作站的缺省网关地址。 <br /><br />有效的主机号 <br />A类：w.0.0.1--w.255.255.254 <br />B类：w.x.0.1--w.x.255.254 <br />C类：w.x.y.1--w.x.y.254 <br /><br /><br />4、子网屏蔽和IP地址 <br /><br />TCP/IP上的每台主机都需要用一个子网屏蔽号。它是一个4字节的地址，用来封装或“屏蔽”IP地址的一部分，以区分网络号和主机号。当网络还没有划分为子网时，可以使用缺省的子网屏蔽；当网络被划分为若干个子网时，就要使用自定义的子网屏蔽了。 <br /><br />缺省值 <br />我们来看看缺省的子网屏蔽值，它用于一个还没有划分子网的网络。即使是在一个单段网络上，每台主机也都需要这样的缺省值。 <br />它的形式依赖于网络的地址类型。在它的4个字节里，所有对应网络号的位都被置为1，于是每个八位体的十进制值都是255；所有对就主机号的位都置为0。例如：C类网地址192.168.0.1和相应的缺省屏蔽值255.255.255.0。 <br /><br />确定数据包的目的地址 <br />我们说把屏蔽值和IP地址值做“与”的操作其实是一个内部过程，它用来确定一个数据包是传给本地还是远程网络上的主机。其相应的操作过程是这样的：当TCP/IP初始化时，主机的IP地址和子网屏蔽值相“与”。在数据包被发送之前，再把目的地址也和屏蔽值作“与”，这样如果发现源IP地址和目的IP地址相匹配，IP协议就知道数据包属于本地网上的某台主机；否则数据包将被送到路由器上。 <br />注：我们知道“与”操作是将IP地址中的每一位与子网屏蔽中相应的位按逻辑与作比较。 <br /><br />建立子网 <br /><br />1、 子网简介 <br /><br /><br />一个网络实际上可能会有多个物理网段，我们把这些网段称之为子网，其使用的IP地址是由某个网络号派生而得到的。 <br />将一个网络划分成若干个子网，需要使用不同的网络号或子网号。当然了，划分子网有它的优点，通过划分子网，每个单位可以将复杂的物理网段连接成一个网络，并且可以： <br />(1) 混合使用多种技术，比如以太网和令牌环网。(最流行的两种接口都支持了哦) <br /><br />(2) 克服当前技术的限制，比如突破每段主机的最大数量限制。 <br />(3) 通过重定向传输以及减少广播等传输方式以减轻网络的拥挤。 <br /><br />实现子网划分 <br />在动手划分子网之前，我们一定要先分析一下自己的需求以及将来的规划。一般情况下我们遵循这样的准则： <br />(1) 确定网络中的物理段数量。(就是子网个数嘛) <br />(2) 确定每个子网需要的主机数。注意一个主机至少一个IP地址。 <br />(3) 基于此需求，定义：整个网络的子网屏蔽、每个子网唯一的子网号和每个子网的主机号范围。 <br /><br />子网屏蔽位 <br />在定义一个子网屏蔽之前，确定一下将来需要的子网数量及每子网的主机数是必不可少的一步。因为当更多的位用于子网屏蔽时，就有更多的可用子网了，但每个子网中的主机数将减少。(这和定义IP地址的概念正好相反) <br /><br /><br /><br />2、定义子网屏蔽 <br />将网络划分成若干个子网时，必须要定义好子网屏蔽。我们来看看定义的步骤： <br />(1)确定物理网段也就是子网的个数，并将这个数字转换成二进制数。比如B类地址，分6个子网就是110。 <br />(2)计算物理网段数(子网数)的二进制位数，这里是110，所以需要3位。 <br />(3)以高位顺序(从左到右)将这个反码转换成相应的十进制值，因为需要3位，就将主机号前3位作为子网号，这里是11100000，所以屏蔽就是255.255.254.0。 <br /><br />3、定义子网号 <br />子网号与子网屏蔽的位数相同。 <br />(1)列出子网号按高到低的顺序使用的位数。例如子网屏蔽使用了3位，二进制值是11100000。 <br />(2)将最低的一位1转换成十进制，用这个值来定义子网的增量。这个例子中是1110，所以增量是32。 <br />(3)用这个增量迭加从0开始的子网号，直到下一个值为256。这个例子中就是w.x.32.1-w.x.63.254、w.x.64.1-w.x.127.254等。 <br /><br />4、定义子网中的主机号 <br />从上面的例子看出，一旦定义了子网号，就已经确定了每个子网的主机号了。我们在做每次增量后得出的值表明了子网中主机号范围的起始值。 <br />确定每个子网中的主机数目 <br />(1)计算主机号可用的位数。例如在B类网中用3位定义了网络号，那么余下的13位定义了主机号。 <br />(2)将这个余下的位数也就是主机号转换为十进制，再减去1。例如13位值1111111111111转换为十进制的话就是8191，所以这个网络中每个子网的主机数就是8190了。 <br /><br />-------------------------------------------------------------------------------- <br /><br />实现IP路由 <br /><br />1、IP路由简介 <br /><br />路由就是选择一条数据包传输路径的过程。当TCP/IP主机发送IP数据包时，便出现了路由，且当到达IP路由器还会再次出现。路由器是从一个物理网向另一个物理网发送数据包的装置，路由器通常被称为网关。对于发送的主机和路由器而言，必须决定向哪里转发数据包。在决定路由时，IP层查询位于内存中的路由表。 <br />(1)当一个主机试图与另一个主机通信时，IP首先决定目的主机是一个本地网还是远程网。 <br />(2)如果目的主机是远程网，IP将查询路由表来为远程主机或远程网选择一个路由。 <br />(3)若未找到明确的路由，IP用缺省的网关地址将一个数据传送给另一个路由器。 <br />(4)在该路由器中，路由表再次为远程主机或网络查询路由，若还未找到路由，该数据包将发送到该路由器的缺省网关地址。 <br />每发现一条路由，数据包被转送下一级路由器，称为一次“跳步”，并最终发送至目的主机。 <br />若未发现任何一个路由，源主机将收到一个出错信息。 <br /><img src ="http://www.cnitblog.com/windforce/aggbug/8468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2006-04-01 14:31 <a href="http://www.cnitblog.com/windforce/articles/8468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PPP协议[转载]</title><link>http://www.cnitblog.com/windforce/articles/8466.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Sat, 01 Apr 2006 05:14:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/8466.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/8466.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/8466.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/8466.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/8466.html</trackback:ping><description><![CDATA[
		<p>一、介绍</p>
		<p>　　<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>（Point-to-Point Protocol点到点协议）是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作，并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据，使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。</p>
		<p>　　二、 <a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>链路建立过程</p>
		<p>　　<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>协议中提供了一整套方案来解决链路建立、维护、拆除、上层协议协商、认证等问题。<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>协议包含这样几个部分：链路控制协议LCP（Link Control Protocol）；网络控制协议NCP（Network Control Protocol）；认证协议，最常用的包括口令验证协议PAP（Password Authentication Protocol）和挑战握手验证协议CHAP（Challenge-Handshake Authentication Protocol）。</p>
		<p>　　LCP负责创建，维护或终止一次物理连接。NCP是一族协议，负责解决物理连接上运行什么网络协议，以及解决上层网络协议发生的问题。</p>
		<p>　　下面介绍<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>链路建立的过程：</p>
		<p> </p>
		<p>　　<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>链路状态机如图1所示。一个典型的链路建立过程分为三个阶段：创建阶段、认证阶段和网络协商阶段。</p>
		<p>　　阶段1：创建<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>链路</p>
		<p>　　LCP负责创建链路。在这个阶段，将对基本的通讯方式进行选择。链路两端设备通过LCP向对方发送配置信息报文（Configure Packets）。一旦一个配置成功信息包（Configure-Ack packet）被发送且被接收，就完成了交换，进入了LCP开启状态。</p>
		<p>　　应当注意，在链路创建阶段，只是对验证协议进行选择，用户验证将在第2阶段实现。</p>
		<p>
				<br />　　阶段2：用户验证</p>
		<p>　　在这个阶段，客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。在认证完成之前，禁止从认证阶段前进到网络层协议阶段。如果认证失败，认证者应该跃迁到链路终止阶段。</p>
		<p>　　在这一阶段里，只有链路控制协议、认证协议，和链路质量监视协议的packets是被允许的。在该阶段里接收到的其他的packets必须被静静的丢弃。</p>
		<p>　　最常用的认证协议有口令验证协议（PAP）和挑战握手验证协议（CHAP）。 认证方式介绍在第三部分中介绍。 </p>
		<p>　　阶段3：调用网络层协议</p>
		<p>
				<br />　　认证阶段完成之后，<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>将调用在链路创建阶段（阶段1）选定的各种网络控制协议（NCP）。选定的NCP解决<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>链路之上的高层协议问题，例如，在该阶段IP控制协议（IPCP）可以向拨入用户分配动态地址。</p>
		<p>　　这样，经过三个阶段以后，一条完整的<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>链路就建立起来了。</p>
		<p>　　三、 认证方式</p>
		<p>　　1）口令验证协议（PAP） </p>
		<p>　　PAP是一种简单的明文验证方式。NAS（网络接入服务器，Network Access Server）要求用户提供用户名和口令，PAP以明文方式返回用户信息。很明显，这种验证方式的安全性较差，第三方可以很容易的获取被传送的用户名和口令，并利用这些信息与NAS建立连接获取NAS提供的所有资源。所以，一旦用户密码被第三方窃取，PAP无法提供避免受到第三方攻击的保障措施。</p>
		<p>　　2）挑战-握手验证协议（CHAP） </p>
		<p>　　CHAP是一种加密的验证方式，能够避免建立连接时传送用户的真实密码。NAS向远程用户发送一个挑战口令（challenge），其中包括会话ID和一个任意生成的挑战字串（arbitrary challengestring）。远程客户必须使用MD5单向哈希算法（one-way hashing algorithm）返回用户名和加密的挑战口令，会话ID以及用户口令，其中用户名以非哈希方式发送。</p>
		<p>　　CHAP对PAP进行了改进，不再直接通过链路发送明文口令，而是使用挑战口令以哈希算法对口令进行加密。因为服务器端存有客户的明文口令，所以服务器可以重复客户端进行的操作，并将结果与用户返回的口令进行对照。CHAP为每一次验证任意生成一个挑战字串来防止受到再现攻击（replay attack）。在整个连接过程中，CHAP将不定时的向客户端重复发送挑战口令，从而避免第3方冒充远程客户（remote client impersonation）进行攻击。</p>
		<p>　　四、<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>协议的应用</p>
		<p>　　<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>协议是目前广域网上应用最广泛的协议之一，它的优点在于简单、具备用户验证能力、可以解决IP分配等。 </p>
		<p>　　家庭拨号上网就是通过<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>在用户端和运营商的接入服务器之间建立通信链路。 目前，宽带接入正在成为取代拨号上网的趋势，在宽带接入技术日新月异的今天，<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>也衍生出新的应用。典型的应用是在ADSL（非对称数据用户环线，Asymmetrical Digital Subscriber Loop）接入方式当中，<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>与其他的协议共同派生出了符合宽带接入要求的新的协议，如<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>oE（<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a> over Ethernet），<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>oA（<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a> over ATM）。 </p>
		<p>　　利用以太网（Ethernet）资源，在以太网上运行<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>来进行用户认证接入的方式称为<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>oE。<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>oE即保护了用户方的以太网资源，又完成了ADSL的接入要求，是目前ADSL接入方式中应用最广泛的技术标准。 </p>
		<p>　　同样，在ATM（异步传输模式，Asynchronous Transfer Mode）网络上运行<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>协议来管理用户认证的方式称为<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>oA。它与<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>oE的原理相同，作用相同；不同的是它是在ATM网络上，而<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>oE是在以太网网络上运行，所以要分别适应ATM标准和以太网标准。 </p>
		<p>　　<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>协议的简单完整使它得到了广泛的应用，相信在未来的网络技术发展中，它还可以发挥更大的作用。</p>
		<p>
				<a href="http://www.net130.com/uptech/ppp.doc">
						<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>协议文档</a>
		</p>
		<div>
		</div>
<img src ="http://www.cnitblog.com/windforce/aggbug/8466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2006-04-01 13:14 <a href="http://www.cnitblog.com/windforce/articles/8466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VLAN的资料,从入门到精通[转载]</title><link>http://www.cnitblog.com/windforce/articles/8435.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Fri, 31 Mar 2006 07:16:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/8435.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/8435.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/8435.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/8435.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/8435.html</trackback:ping><description><![CDATA[
		<strong>
				<span class="tpc_title">VLAN的资料,从入门到精通</span>
				<br />
				<br />
		</strong>
		<span class="tpc_content">
				<font size="2">局域网实现VLAN实例 <br /><br />局域网实现VLAN实例计算机网络技术的发展犹如戏剧舞台，你方唱罢我登台。从传统的以太网（10Mb/s）发展到快速以太网（100Mb/s）和千兆以太网（1000Mb/s）也不过几年的时间，其迅猛的势头实在令人吃惊。而现在中大型规模网络建设中，以千兆三层交换机为核心的所谓“千兆主干跑、百兆到桌面”的主流网络模型已不胜枚举。 现在，网络业界对“三层交换”和VLAN这两词已经不感到陌生了。 <br /><br />一、什么是三层交换和VLAN要回答这个问题我们还是先看看以太网的工作原理。以太网的工作原理是利用二进制位形成的一个个字节组合成一帧帧的数据（其实是一些电脉冲）在导线中进行传播。 <br /><br />首先，以太网网段上需要进行数据传送的节点对导线进行监听，这个过程称为CSMA/CD（Carrier Sense Multiple Access with Collision Detection带有冲突监测的载波侦听多址访问）的载波侦听。如果，这时有另外的节点正在传送数据，监听节点将不得不等待，直到传送节点的传送任务结束。如果某时恰好有两个工作站同时准备传送数据，以太网网段将发出“冲突”信号。这时，节点上所有的工作站都将检测到冲突信号，因为这时导线上的电压超出了标准电压。这时以太网网段上的任何节点都要等冲突结束后才能够传送数据。也就是说在CSMA/CD方式下，在一个时间段，只有一个节点能够在导线上传送数据。而转发以太网数据帧的联网设备是集线器,它是一层设备，传输效率比较低。冲突的产生降低了以太网的带宽，而且这种情况又是不可避免的。所以，当导线上的节点越来越多后，冲突的数量将会增加。显而易见的解决方法是限制以太网导线上的节点，需要对网络进行物理分段。将网络进行物理分段的网络设备用到了网桥与交换机。网桥和交换机的基本作用是只发送去往其他物理网段的信息。所以，如果所有的信息都只发往本地的物理网段，那么网桥和交换机上就没有信息通过。这样可以有效减少网络上的冲突。网桥和交换机是基于目标MAC（介质访问控制）地址做出转发决定的，它们是二层设备。 <br /><br />我们已经知道了以太网的缺点及物理网段中冲突的影响，现在，我们来看看另外一种导致网络降低运行速度的原因：广播。广播存在于所有的网络上，如果不对它们进行适当的控制，它们便会充斥于整个网络，产生大量的网络通信。广播不仅消耗了带宽，而且也降低了用户工作站的处理效率。由于各种各样的原因，网络操作系统（NOS）使用了广播，TCP/IP使用广播从IP地址中解析MAC地址，还使用广播通过RIP和IGRP协议进行宣告，所以，广播也是不可避免的。网桥和交换机将对所有的广播信息进行转发，而路由器不会。所以，为了对广播进行控制，就必须使用路由器。路由器是基于第3层报头、目标IP寻址、目标IPX寻址或目标Appletalk寻址做出转发决定。路由器是3层设备。 <br /><br />在这里，我们就容易理解三层交换技术了，通俗地讲，就是将路由与交换合二为一的技术。路由器在对第一个数据流进行路由后，将会产生一个MAC地址与IP地址的映射表，当同样的数据流再次通过时，将根据此映射表直接从二层进行交换而不是再次路由，提供线速性能，从而消除了路由器进行路由选择而造成网络的延迟，提高了数据包转发的效率。采用此技术的交换机我们常称为三层交换机。 <br /><br />那么，什么是VLAN呢？VLAN（Virtual Local Area Network）就是虚拟局域网的意思。VLAN可以不考虑用户的物理位置，而根据功能、应用等因素将用户从逻辑上划分为一个个功能相对独立的工作组，每个用户主机都连接在一个支持VLAN的交换机端口上并属于一个VLAN。同一个VLAN中的成员都共享广播，形成一个广播域，而不同VLAN之间广播信息是相互隔离的。这样，将整个网络分割成多个不同的广播域（VLAN）。一般来说，如果一个VLAN里面的工作站发送一个广播，那么这个VLAN里面所有的工作站都接收到这个广播，但是交换机不会将广播发送至其他VLAN上的任何一个端口。如果要将广播发送到其它的VLAN端口，就要用到三层交换机。 <br /><br />二、如何配置三层交换机创建VLAN <br /><br />以下的介绍都是基于Cisco交换机的VLAN。Cisco的VLAN实现通常是以端口为中心的,与节点相连的端口将确定它所驻留的VLAN。将端口分配给VLAN的方式有两种，分别是静态的和动态的. <br /><br />形成静态VLAN的过程是将端口强制性地分配给VLAN的过程。即我们先在VTP （VLAN Trunking Protocol）Server上建立VLAN，然后将每个端口分配给相应的VLAN的过程。这是我们创建VLAN最常用的方法。 <br /><br />动态VLAN形成很简单，由具体的机器决定自己属于哪个VLAN。即我们先建立一个VMPS（VLAN Membership Policy Server）VLAN管理策略服务器，里面包含一个文本文件，文件中存有与VLAN映射的MAC地址表。交换机根据这个映射表决定将端口分配给何种VLAN。这种方法有很大的优势，但创建数据库是一项非常艰苦而且非常繁琐的工作。 <br /><br />下面以实例说明如何在一个典型的快速以太局域网中实现VLAN。 <br /><br />所谓典型局域网就是指由一台具备三层交换功能的核心交换机接几台分支交换机（不一定具备三层交换能力）。我们假设核心交换机名称为：COM；分支交换机分别为：PAR1、PAR2、PAR3，分别通过Port 1的光线模块与核心交换机相连；并且假设VLAN名称分别为COUNTER、MARKET、MANAGING…… <br /><br />需要做的工作： <br />1、设置VTP DOMAIN（核心、分支交换机上都设置） <br />2、配置中继（核心、分支交换机上都设置） <br />3、创建VLAN（在server上设置） <br />4、将交换机端口划入VLAN <br />5、配置三层交换 <br /><br />1、设置VTP DOMAIN。 VTP DOMAIN 称为管理域。 <br /><br />交换VTP更新信息的所有交换机必须配置为相同的管理域。如果所有的交换机都以中继线相连，那么只要在核心交换机上设置一个管理域，网络上所有的交换机都加入该域，这样管理域里所有的交换机就能够了解彼此的VLAN列表。 <br /><br />COM#vlan database 进入VLAN配置模式 <br />COM(vlan)#vtp domain COM 设置VTP管理域名称 COM <br />COM(vlan)#vtp server 设置交换机为服务器模式 <br /><br />PAR1#vlan database 进入VLAN配置模式 <br />PAR1(vlan)#vtp domain COM 设置VTP管理域名称COM <br />PAR1(vlan)#vtp Client 设置交换机为客户端模式 <br /><br />PAR2#vlan database 进入VLAN配置模式 <br />PAR2(vlan)#vtp domain COM 设置VTP管理域名称COM <br />PAR2(vlan)#vtp Client 设置交换机为客户端模式 <br /><br />PAR3#vlan database 进入VLAN配置模式 <br />PAR3(vlan)#vtp domain COM 设置VTP管理域名称COM <br />PAR3(vlan)#vtp Client 设置交换机为客户端模式 <br /><br />注意：这里设置核心交换机为Server模式是指允许在该交换机上创建、修改、删除VLAN及其他一些对整个VTP域的配置参数，同步本VTP域中其他交换机传递来的最新的VLAN信息；Client模式是指本交换机不能创建、删除、修改VLAN配置，也不能在NVRAM中存储VLAN配置，但可同步由本VTP域中其他交换机传递来的VLAN信息。 <br /><br />2、配置中继为了保证管理域能够覆盖所有的分支交换机，必须配置中继。 <br /><br />Cisco交换机能够支持任何介质作为中继线，为了实现中继可使用其特有的ISL标签。ISL（Inter－Switch Link）是一个在交换机之间、交换机与路由器之间及交换机与服务器之间传递多个VLAN信息及VLAN数据流的协议，通过在交换机直接相连的端口配置ISL封装，即可跨越交换机进行整个网络的VLAN分配和进行配置。 <br /><br />在核心交换机端配置如下： <br /><br />COM(config)#interface gigabitEthernet 2/1 <br />COM(config-if)#switchport <br />COM(config-if)#switchport trunk encapsulation isl 配置中继协议 <br />COM(config-if)#switchport mode trunk <br /><br />COM(config)#interface gigabitEthernet 2/2 <br />COM(config-if)#switchport <br />COM(config-if)#switchport trunk encapsulation isl 配置中继协议 <br />COM(config-if)#switchport mode trunk <br /><br />COM(config)#interface gigabitEthernet 2/3 <br />COM(config-if)#switchport <br />COM(config-if)#switchport trunk encapsulation isl 配置中继协议 <br />COM(config-if)#switchport mode trunk <br /><br />在分支交换机端配置如下： <br /><br />PAR1(config)#interface gigabitEthernet 0/1 <br />PAR1(config-if)#switchport mode trunk <br /><br />PAR2(config)#interface gigabitEthernet 0/1 <br />PAR2(config-if)#switchport mode trunk <br /><br />PAR3(config)#interface gigabitEthernet 0/1 <br />PAR3(config-if)#switchport mode trunk <br /><br />…… <br /><br />此时，管理域算是设置完毕了。 <br /><br />3、创建VLAN一旦建立了管理域，就可以创建VLAN了。 <br /><br />COM(vlan)#Vlan 10 name COUNTER 创建了一个编号为10 名字为COUNTER的 VLAN <br />COM(vlan)#Vlan 11 name MARKET 创建了一个编号为11 名字为MARKET的 VLAN <br />COM(vlan)#Vlan 12 name MANAGING 创建了一个编号为12 名字为MANAGING的 VLAN <br /><br />…… <br /><br />注意，这里的VLAN是在核心交换机上建立的，其实，只要是在管理域中的任何一台VTP 属性为Server的交换机上建立VLAN，它就会通过VTP通告整个管理域中的所有的交换机。但如果要将具体的交换机端口划入某个VLAN，就必须在该端口所属的交换机上进行设置。 <br /><br />4、将交换机端口划入VLAN. <br /><br />例如，要将PAR1、PAR2、PAR3……分支交换机的端口1划入COUNTER VLAN，端口2划入MARKET VLAN，端口3划入MANAGING VLAN…… <br /><br />PAR1(config)#interface fastEthernet 0/1 配置端口1 <br />PAR1(config-if)#switchport access vlan 10 归属COUNTER VLAN <br /><br />PAR1(config)#interface fastEthernet 0/2 配置端口2 <br />PAR1(config-if)#switchport access vlan 11 归属MARKET VLAN <br /><br />PAR1(config)#interface fastEthernet 0/3 配置端口3 <br />PAR1(config-if)#switchport access vlan 12 归属MANAGING VLAN <br /><br />PAR2(config)#interface fastEthernet 0/1 配置端口1 <br />PAR2(config-if)#switchport access vlan 10 归属COUNTER VLAN <br /><br />PAR2(config)#interface fastEthernet 0/2 配置端口2 <br />PAR2(config-if)#switchport access vlan 11 归属MARKET VLAN <br /><br />PAR2(config)#interface fastEthernet 0/3 配置端口3 <br />PAR2(config-if)#switchport access vlan 12 归属MANAGING VLAN <br /><br />PAR3(config)#interface fastEthernet 0/1 配置端口1 <br />PAR3(config-if)#switchport access vlan 10 归属COUNTER VLAN <br /><br />PAR3(config)#interface fastEthernet 0/2 配置端口2 <br />PAR3(config-if)#switchport access vlan 11 归属MARKET VLAN <br /><br />PAR3(config)#interface fastEthernet 0/3 配置端口3 <br />PAR3(config-if)#switchport access vlan 12 归属MANAGING VLAN <br /><br />…… <br /><br />5、配置三层交换. <br /><br />到这里，VLAN已经基本划分完毕。但是，VLAN间如何实现三层（网络层）交换呢？这时就要给各VLAN分配网络（IP）地址了。给VLAN分配IP地址分两种情况，其一，给VLAN所有的节点分配静态IP地址；其二，给VLAN所有的节点分配动态IP地址。下面就这两种情况分别介绍。 <br /><br />假设给VLAN COUNTER分配的接口Ip地址为172.16.58.1/24，网络地址为：172.16.58.0， <br />VLAN MARKET 分配的接口Ip地址为172.16.59.1/24，网络地址为：172.16.59.0， <br />VLAN MANAGING分配接口Ip地址为172.16.60.1/24， 网络地址为172.16.60.0 <br />…… <br />如果动态分配IP地址，则设网络上的DHCP服务器IP地址为172.16.1.11。 <br /><br />(1)给VLAN所有的节点分配静态IP地址。 <br /><br />首先在核心交换机上分别设置各VLAN的接口IP地址。核心交换机将vlan做为一种接口对待，就象路由器上的一样，如下所示： <br /><br />COM(config)#interface vlan 10 <br />COM(config-if)#ip address 172.16.58.1 255.255.255.0 VLAN10接口IP <br /><br />COM(config)#interface vlan 11 <br />COM(config-if)#ip address 172.16.59.1 255.255.255.0 VLAN11接口IP <br /><br />COM(config)#interface vlan 12 <br />COM(config-if)#ip address 172.16.60.1 255.255.255.0 VLAN12接口IP <br /><br />…… <br /><br />再在各接入VLAN的计算机上设置与所属VLAN的网络地址一致的IP地址，并且把默认网关设置为该VLAN的接口地址。这样，所有的VLAN也可以互访了。 <br /><br />(2)给VLAN所有的节点分配动态IP地址。 <br /><br />首先在核心交换机上分别设置各VLAN的接口IP地址和同样的DHCP服务器的IP地址，如下所示： <br /><br />COM(config)#interface vlan 10 <br />COM(config-if)#ip address 172.16.58.1 255.255.255.0 VLAN10接口IP <br />COM(config-if)#ip helper-address 172.16.1.11 DHCP Server IP <br /><br />COM(config)#interface vlan 11 <br />COM(config-if)#ip address 172.16.59.1 255.255.255.0 VLAN11接口IP <br />COM(config-if)#ip helper-address 172.16.1.11 DHCP Server IP <br /><br />COM(config)#interface vlan 12 <br />COM(config-if)#ip address 172.16.60.1 255.255.255.0 VLAN12接口IP <br />COM(config-if)#ip helper-address 172.16.1.11 DHCP Server IP <br /><br />…… <br /><br />再在DHCP服务器上设置网络地址分别为172.16.58.0，172.16.59.0，172.16.60.0的作用域，并将这些作用域的“路由器”选项设置为对应VLAN的接口IP地址。这样，可以保证所有的VLAN也可以互访了。 <br /><br />最后在各接入VLAN的计算机进行网络设置，将IP地址选项设置为自动获得IP地址即可。 <br /><br />三、总结 <br /><br />本文是笔者在实际工作中的一些总结。笔者力图用通俗易懂的文字来阐述创建VLAN的全过程。并且给出了详细的设置步骤，只要你对Cisco交换机的IOS有所了解，看懂本文并不难。按照本文所示的步骤一步一步地做，你完全可以给一个典型的快速以太网络建立多个VLAN。</font>
		</span>
		<br />
<img src ="http://www.cnitblog.com/windforce/aggbug/8435.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2006-03-31 15:16 <a href="http://www.cnitblog.com/windforce/articles/8435.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP-传输控制协议 [转载]</title><link>http://www.cnitblog.com/windforce/articles/8037.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Thu, 23 Mar 2006 16:08:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/8037.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/8037.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/8037.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/8037.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/8037.html</trackback:ping><description><![CDATA[
		<div class="prod-news-content-text">
				<p>传输控制协议（Transmission Control Protocol，TCP）是一种面向连接的、可靠的、基于字节流的运输层通信协议，通常由IETF的RFC 793说明。在简化的计算机网络OSI模型中，它完成运输层所指定的功能。</p>
				<p>在因特网协议族中，TCP层是位于IP层之上，应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接，但是IP层不提供这样的流机制，而是提供不可靠的包交换。</p>
				<p>应用层向TCP层发送用于网间传输的、用8位字节表示的数据流，然后TCP把数据流分割成适当长度的报文段（通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)的限制）。之后TCP把结果包传给IP层，由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包，就给每个字节一个序号，同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK)；如果发送端实体在合理的往返时延(RTT)内未收到确认，那么对应的数据（假设丢失了）将会被重传。TCP用一个校验和函数来检验数据是否有错误；在发送和接收时都要计算校验和。</p>
				<p>
						<strong>TCP通路的建立和终结</strong>
						<br />TCP连接包括三个状态：连接建立、数据传送和连接终止。TCP用三路握手过程建立一个连接，用四路握手过程建立来拆除一个连接。在连接建立过程中，很多参数要被初始化，例如序号被初始化以保证按序传输和连接的强壮性。</p>
				<p>
						<br />连接建立（三路握手）<br />一对终端同时初始化一个它们之间的连接是可能的。但通常是由一端打开一个套接字(socket)然后监听来自另一方的连接，这就是通常所指的被动打开。被动打开的一端就是服务器端。而客户端通过向服务器端发送一个SYN来建立一个主动打开，作为三路握手的一部分。服务器端应当为一个合法的SYN回送一个SYN/ACK。最后，客户端再发送一个ACK。这样就完成了三路握手并进入了连接建立状态。</p>
				<p>
						<br />数据传输<br />在TCP的数据传送状态，很多重要的机制保证了TCP的可靠性和强壮性。它们包括：使用序号对收到的TCP报文段进行排序以及检测重复的数据；使用校验和来检测报文段的错误；使用确认和计时器来检测和纠正丢包或延时。</p>
				<p>在TCP的连接建立状态，两个主机的TCP层间要交换初始序号 (ISN)。这些序号用于标识字节流中的数据，并且还是对应用层的数据字节进行记数的整数。通常在每个TCP报文段中都有一对序号和确认号。TCP报文发送者认为自己的字节编号为序号，而认为接收者的字节编号为确认号。TCP报文的接收者为了确保可靠性，在接收到一定数量的连续字节流后才发送确认。这是对TCP的一种扩展，通常称为选择确认(SACK)。选择确认使得TCP接收者可以对乱序到达的数据块进行确认。</p>
				<p>通过使用序号和确认号，TCP层可以把收到的报文段中的字节按正确的顺序交付给应用层。序号是32位的无符号数，在它增大到232-1时便会回绕到0。对于ISN的选择是TCP中关键的一个操作，它可以确保强壮性和安全性。</p>
				<p>TCP的16位的校验和的计算和检验过程如下：发送者将TCP报文段的头部和数据部分的反码和计算出来，再对其求反码，就得到了校验和，然后将结果装入报文中传输。（这里用反码和的原因是这种方法的循环进位使校验和可以在16位、32位、64位等情况下的计算结果在叠加后相同）接收者在收到报文后再按相同的算法计算一次校验和。这里使用的反码使得接收者不用再将校验和字段保存起来后清零，而可以直接将报文段连同校验和一起计算。如果计算结果是-0，那么就表示了报文的完整性和正确性。</p>
				<p>注意：TCP校验和也包括了96位的伪头部，其中有源地址、目的地址、协议以及TCP的长度。这可以避免报文被错误地路由。</p>
				<p>按现在的标准，TCP的校验和是一个比较脆弱的校验。具有高出错率的数据链路层需要额外的连接错误纠正和探测能力。如果TCP是在今天被设计，它很可能有一个32位的CRC校验来纠错，而不是使用校验和。但是通过在第二层使用通常的CRC或更完全一点的校验可以部分地弥补这种脆弱的校验。第二层是在TCP层和IP层之下的，比如<a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>或以太网，它们使用了这些校验。但是这也并不意味着TCP的16位校验和是冗余的，对于因特网传输的观察表明在受CRC保护的各跳之间，软件和硬件的错误通常也会在报文中引入错误，而端到端的TCP校验能够捕捉到很多的这种错误。这就是应用中的端到端原则。</p>
				<p>数据发送者之间用对接收数据的确认或不予确认来显式的表示TCP发送者和接收者之间的网络状态。再加上计时器，TCP发送者和接收者就可以改变数据的流动情况。这就是通常所指的流量控制，拥塞控制/或拥塞避免。TCP使用大量的机制来同时获得强壮性和高可靠性。这些机制包括：滑动窗口、慢启动算法、拥塞避免算法、快速重启和快速恢复算法等等。对于TCP的可靠的丢包处理、错误最小化、拥塞管理以及高速运行环境等机制的优化的研究和标准制定，正在进行之中。</p>
				<p>
						<br />连接终止<br />连接终止状态使用了四路握手过程，在这个过程中每个终端的连接都能独立地被终止。因此，一个典型的拆接过程需要每个终端都提供一对FIN和ACK。<br /><br /><strong>TCP的端口</strong><br />TCP使用了端口号的概念来标识发送方和接收方的应用层。对每个TCP连接的一端都有一个相关的16位的无符号端口号分配给它们。端口被分为三类：众所周知的、注册的和动态/私有的。众所周知的端口号是由因特网赋号管理局(IANA)来分配的，并且通常被用于系统一级或根进程。众所周知的应用程序作为服务器程序来运行，并被动地侦听经常使用这些端口的连接。例如：FTP、TELNET、SMTP、HTTP等。注册的端口号通常被用来作为终端用户连接服务器时短暂地使用的源端口号，但它们也可以用来标识已被第三方注册了的、被命名的服务。动态/私有的端口号在任何特定的TCP连接外不具有任何意义。可能的、被正式承认的端口号有65535个。<br /><br /><strong>TCP的发展历程</strong><br />TCP是一个复杂的但同时又是在发展之中的协议。尽管许多重要的改进被提出和实施，发表于1981年的RFC793中说明的TCP的许多基本操作还是未作多大改动。RFC1122：《因特网对主机的要求》阐明了许多TCP协议的实现要求。RFC2581：《TCP的拥塞控制》是一篇近年来关于TCP的很重要的RFC，描述了更新后的避免过度拥塞的算法。写于2001年的RFC3168描述了对明显拥塞的报告，这是一种拥塞避免的信号量机制。在21世纪早期，在所有因特网的数据包中，通常有大约95%的包使用了TCP协议。常见的使用TCP的应用层有HTTP/HTTPS（万维网协议），SMTP/POP3/IMAP（电子邮件协议）以及FTP（文件传输协议）。这些协议在今天被广泛地使用，这证明了它们的原作者的创造是卓越的。</p>
				<p>最近，一个新协议已经被加州理工学院的科研人员开发出来，命名为FAST TCP（基于快速活动队列管理的规模可变的传输控制协议）。它使用排队延迟作为拥塞控制信号；但是因为端到端的延迟通常不仅仅包括排队延迟，所以FAST TCP (或更一般地，所有基于排队延迟的算法) 在实际互联网中的能否工作仍然是一个没有解决的问题。<br /><br /><strong>对TCP的选用情况</strong><br />TCP并不是对所有的应用都适合，一些新的带有一些内在的脆弱性的运输层协议也被设计出来。比如，实时应用并不需要甚至无法忍受TCP的可靠传输机制。在这种类型的应用中，通常允许一些丢包、出错或拥塞，而不是去校正它们。例如通常不使用TCP的应用有：实时流多媒体（如因特网广播）、实时多媒体播放器和游戏、IP电话（VoIP）等等。任何不是很需要可靠性或者是想将功能减到最少的应用可以避免使用TCP。在很多情况下，当只需要多路复用应用服务时，用户数据报协议（UDP）可以代替TCP为应用提供服务。</p>
		</div>
<img src ="http://www.cnitblog.com/windforce/aggbug/8037.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2006-03-24 00:08 <a href="http://www.cnitblog.com/windforce/articles/8037.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TCP/IP协议 </title><link>http://www.cnitblog.com/windforce/articles/8036.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Thu, 23 Mar 2006 15:50:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/8036.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/8036.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/8036.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/8036.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/8036.html</trackback:ping><description><![CDATA[
		<p>
				<b>TCP/IP协议</b>，或称为<b>TCP/IP协议栈</b>，或互联网协议系列。</p>
		<div align="left">
				<p>
						<b>TCP/IP协议栈</b>
						<br />(按<i>TCP/IP参考模型</i>划分)<br /></p>
				<table cellspacing="3" border="0">
						<tbody>
								<tr>
										<td align="middle" bgcolor="#ffcc99">应用层</td>
										<td align="middle" bgcolor="#9999ff">FTP</td>
										<td align="middle" bgcolor="#9999ff">SMTP</td>
										<td align="middle" bgcolor="#9999ff">HTTP</td>
										<td align="middle" bgcolor="#9999ff">...</td>
								</tr>
								<tr>
										<td align="middle" bgcolor="#ffcc99">传输层</td>
										<td align="middle" bgcolor="#9999ff" colspan="2">TCP</td>
										<td align="middle" bgcolor="#9999ff" colspan="2">UDP</td>
								</tr>
								<tr>
										<td align="middle">网络层</td>
										<td align="middle" bgcolor="#9999ff" colspan="3">IP ICMP</td>
										<td align="middle" bgcolor="#9999ff">ARP</td>
								</tr>
								<tr>
										<td align="middle" bgcolor="#ffeebb" rowspan="2">链路层</td>
										<td align="middle" bgcolor="#eeeeee" rowspan="2">以太网</td>
										<td align="middle" bgcolor="#eeeeee" rowspan="2">令牌环</td>
										<td align="middle" bgcolor="#eeeeee" rowspan="2">FDDI</td>
										<td align="middle" bgcolor="#eeeeee" rowspan="2">...</td>
								</tr>
						</tbody>
				</table>
				<p>
						<br />包含了一系列构成互联网基础的网络协议。这些协议最早发源于美国国防部的DARPA互联网项目。TCP/IP字面上代表了两个协议:TCP传输控制协议和IP互联网协议。<br /><br />时间回放到1983年1月1日，在这天，互联网的前身Arpanet中，TCP/IP协议取代了旧的网络核心协议NCP(Network Core Protocol)，从而成为今天的互联网的基石。最早的的TCP/IP由Vinton Cerf和Robert Kahn两位开发，慢慢地通过竞争战胜了其它一些网络协议的方案，比如国际标准化组织ISO的OSI模型。TCP/IP的蓬勃发展发生在上世纪的90年代中期。当时一些重要而可靠的工具的出世，例如页面描述语言HTML和浏览器Mosaic，导致了互联网应用的飞速发展。</p>
				<p>随着互联网的发展，目前流行的IPv4协议(IP Version 4，IP版本四)已经接近它的功能上限。IPv4最致命的两个缺陷在与:</p>
				<p>地址只有32位，IP地址空间有限; <br />不支持服务等级(Quality of Service, Qos)的想法，无法管理带宽和优先级，故而不能很好的支持现今越来越多的实时的语音和视频应用。因此IPv6 (IP Version 6, IP版本六) 浮出海面，用以取代IPv4。 <br />TCP/IP成功的另一个因素在与对为数众多的低层协议的支持。这些低层协议对应与OSI模型 中的第一层(物理层)和第二层(数据链路层)。每层的所有协议几乎都有一半数量的支持TCP/IP，例如: 以太网(Ethernet)，令牌环(Token Ring)，光纤数据分布接口(FDDI)，端对端协议( <a href="http://www.net130.com/CMS/Pub/network/network_protocal/04314.htm" target="_blank">PPP</a>)，X.25，帧中继(Frame Relay)，ATM，Sonet, SDH等。</p>
				<p>
						<strong>TCP/IP协议栈组成</strong>
						<br />整个通信网络的任务，可以划分成不同的功能块，即抽象成所谓的 ” 层” 。用于互联网的协议可以比照TCP/IP参考模型进行分类。TCP/IP协议栈起始于第三层协议IP(互联网协议) 。所有这些协议都在相应的RFC文档中讨论及标准化。重要的协议在相应的RFC文档中均标记了状态: “必须“ (required) ，“推荐“ (recommended) ，“可选“ (elective) 。其它的协议还可能有“ 试验“(experimental) 或“ 历史“(historic) 的状态。</p>
				<p>
						<strong>必须协议<br /></strong>所有的TCP/IP应用都必须实现IP和ICMP。对于一个路由器(router) 而言，有这两个协议就可以运作了，虽然从应用的角度来看，这样一个路由器 意义不大。实际的路由器一般还需要运行许多“推荐“使用的协议，以及一些其它的协议。</p>
				<p>在几乎所有连接到互联网上的计算机上都存在的IPv4 协议出生在1981年，今天的版本和最早的版本并没有多少改变。升级版IPv6 的工作始于1995年，目的在与取代IPv4。ICMP 协议主要用于收集有关网络的信息查找错误等工作。</p>
				<p>
						<strong>推荐协议<br /></strong>每一个应用层(TCP/IP参考模型 的最高层) 一般都会使用到两个传输层协议之一: 面向连接的TCP传输控制协议和无连接的包传输的UDP用户数据报文协议 。 其它的一些推荐协议有:</p>
				<ul>
						<li>TELNET (Teletype over the Network, 网络电传) ，通过一个终端(terminal)登陆到网络(运行在TCP协议上)。 
</li>
						<li>FTP (File Transfer Protocol, 文件传输协议) ，由名知义(运行在TCP协议上) 。 
</li>
						<li>SMTP (Simple Mail Transfer Protocol，简单邮件传输协议) ，用来发送电子邮件(运行在TCP协议上) 。 
</li>
						<li>DNS (Domain Name Service，域名服务) ，用于完成地址查找，邮件转发等工作(运行在TCP和UDP协议上) 。 
</li>
						<li>ECHO (Echo Protocol, 回绕协议) ，用于查错及测量应答时间(运行在TCP和UDP协议上) 。 
</li>
						<li>NTP (Network Time Protocol，网络时间协议) ，用于网络同步(运行在UDP协议上) 。 
</li>
						<li>SNMP (Simple Network Management Protocol, 简单网络管理协议) ，用于网络信息的收集和网络管理。 
</li>
						<li>BOOTP (Boot Protocol，启动协议) ，应用于无盘设备(运行在UDP协议上)。 </li>
				</ul>
				<p>
						<strong>可选协议</strong>
						<br />最常用的一些有            </p>
				<ul>
						<li>动态配置IP地址的DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)， 
</li>
						<li>支撑万维网WWW的超文本传输协议HTTP， 
</li>
						<li>收邮件用的POP3 (Post Office Protocol, version 3, 邮局协议) ， 
</li>
						<li>用于加密安全登陆用的SSH (Secure Shell，用于替代安全性差的TELNET) ， 
</li>
						<li>用于动态解析以太网硬件地址的ARP (Address Resolution Protocol，地址解析协议) 。 </li>
				</ul>
				<p>
						<strong>参考文献<br /></strong>RFC 1180 - TCP/IP tutorial <br /></p>
		</div>
<img src ="http://www.cnitblog.com/windforce/aggbug/8036.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2006-03-23 23:50 <a href="http://www.cnitblog.com/windforce/articles/8036.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]ROS2.9x，电信+网通双线接入策略路由+自动切换图文教程</title><link>http://www.cnitblog.com/windforce/articles/7697.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Thu, 16 Mar 2006 22:07:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/7697.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/7697.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/7697.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/7697.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/7697.html</trackback:ping><description><![CDATA[
		<span class="tpc_content">
				<font size="2">从开始学习ROS到现在也没有几天，在routerbbs里学到了不少东西，回想初学的时候四处找教程的日子，也很是有点不好过。。其实已经有很多人写具体教程了，包括2.9版本的，例如winxp2000的教程--我还是参考着他的教程写的备份脚本--只是没有图，不是很直观。来到routerbbs也不能只索取不付出不是，就算是对他们教程的图片补充也好。。。。下面开始<br />1、安装ROS<br />除了自己学习和测试用ROS外，最好还是单独用一台机器，相信这也不用多说，安装的时候要注意的是硬盘<font color="red">一定</font>要接在IDE0上面，并且作为主盘MASTER，光驱随便，很多安装之后不能正常启动的都是这个问题、用安装光盘启动后，如图1<br /><b>图1</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_03f5477e519d1af.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_03f5477e519d1af.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />选择 i 进入安装界面选择需要安装的package，图2 <br /><b>图2</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_6ccfa1499ce47e3.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_6ccfa1499ce47e3.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />选择完后，再按i安装，y确定，再按n不保存旧配置。最后回车重新启动，这时进入ROS是未注册的版本，如图4<br /><b>图4</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_b9d037fafa62c95.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_b9d037fafa62c95.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />用光驱启动，在启动菜单按c破解，图5 <br /><b>图5</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_70b01f85dbc5c0d.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_70b01f85dbc5c0d.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />破解之后进入已经没有了未注册提示。。。见图6<br /><b>图3</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_e5adbbde2039a49.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_e5adbbde2039a49.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />2、服务端配置<br />/interface pri   能显示出你现在可用的网卡。如图6 <br /><b>图6</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_a489ab2f43188ac.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_a489ab2f43188ac.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />/ip address <br />add address=192.168.1.1/24 interface=ether1   <br />设置ether1为内网IP，其中192.168.1.1/24添自己的内网IP ，设置成功没有提示，可以用pri查看<br />见图7 <br /><b>图7</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_125b6717961160c.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_125b6717961160c.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />3、winbox配置（所有配置都在这里进行）<br />在局域网其他机器IE浏览器192.168.1.1 进入WEBBOX，左边可以下载WINBOX，当然如果你已经有WINBOX可以省略这步。打开WINBOX输入IP和用户名连接（图8） <br /><b>图8</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_b4bf8d07a583d14.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_b4bf8d07a583d14.jpg" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />进入配置界面<br />(1)点左侧INTERFACE，双击ether1将name改为lan，同样将另两个改为cnc和tel。图9 <br /><b>图9</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_7c4a59c9489fb4b.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_7c4a59c9489fb4b.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />(2)左侧IP-&gt;ADDRESS ,+号,分别设置CNC和TEL的IP地址,添网通和电信给的IP/子网掩码(不要和我的一样...),红叉部分是自动添加的.图10<br /><b>图10</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_518b0962cc82599.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_518b0962cc82599.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />(3)IP-&gt;ROUTE,+号添加默认的网关,默认网通就添网通网关，默认电信就添电信的网关，这里默认电信.<br />如图11,正常下黑圈处为AS,黄圈出为TEL.comment设注释为tel<br /><b>图11</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_c6a5b13d8262d2a.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_c6a5b13d8262d2a.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />(4)IP-&gt;FIREWALL,NAT选项卡,+号添加chain:srcnat,src.addr:192.168.1.0/24,ACTION选项卡里为masquerade.OK,现在可以通过电信上网了.图12<br /><b>图12</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_23ddd4d3e2b45a4.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_23ddd4d3e2b45a4.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />(5)</font>
				<a href="ftp://admin:@192.168.1.1/" target="_blank">
						<font size="2">FTP://admin:@192.168.1.1</font>
				</a>
				<font size="2">上传路由表文件cnc.rsc,如图13<br /><b>图13</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_6358477a4a06c86.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_6358477a4a06c86.jpg" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />在WINBOX中，NEW TERMINAL,输入import cnc完成.如图14 <br /><b>图14</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_4a9cd9dd4ef6971.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_4a9cd9dd4ef6971.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />现在已经可以电信网通自动切换了.<br />(6)只是切换也不太安全,一定要配制一下防火墙么，同5一样,上传防火墙的RSC文件到192.168.1.1,在NEW TERMINAL里执行import firewall,整体和第5步相近.<br />(7)配置的差不多了,该改管理员账号了,左侧USERS,双击ADMIN改个名字和右下脚的password,如果不需要远程修改ROS的话,可以设定访问IP,192.168.1.0/24之类的~~~<br /><b>图16</b><br /><img onclick="if(this.width&gt;screen.width-461) window.open('../../../attachment/Mon_0602/59_22957_546161ea61a98ec.jpg');" src="http://www.routerbbs.com/attachment/Mon_0602/59_22957_546161ea61a98ec.jpg" width="564" onload="if(this.width&gt;screen.width-460)this.width=screen.width-460;" border="0" /><br />至此,基本OK了.<br />第一次写教程用了2个多小时呵呵..有什么不完整的地方欢迎大家补充.<br />本文完全是面对新手的,还希望个位大人砖头不要扔的太狠~</font>
				<br />
		</span>
<img src ="http://www.cnitblog.com/windforce/aggbug/7697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/windforce/" target="_blank">wf</a> 2006-03-17 06:07 <a href="http://www.cnitblog.com/windforce/articles/7697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>子网掩码及主机段的算法[转载自中国路由论坛]</title><link>http://www.cnitblog.com/windforce/articles/7078.html</link><dc:creator>wf</dc:creator><author>wf</author><pubDate>Thu, 02 Mar 2006 07:01:00 GMT</pubDate><guid>http://www.cnitblog.com/windforce/articles/7078.html</guid><wfw:comment>http://www.cnitblog.com/windforce/comments/7078.html</wfw:comment><comments>http://www.cnitblog.com/windforce/articles/7078.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/windforce/comments/commentRss/7078.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/windforce/services/trackbacks/7078.html</trackback:ping><description><![CDATA[<FONT color=#000000><SPAN class=tpc_title><FONT size=2>1． A类IP地址 <BR><BR>一个A类IP地址由1字节的网络地址和3字节主机地址组成，网络地址的最高位必须是“0”， 地址范围从1.0.0.0 到126.0.0.0。可用的A类网络有126个，每个网络能容纳1亿多个主机。 <BR><BR>2． B类IP地址 <BR><BR>一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成，网络地址的最高位必须是“10”，地址范围从128.0.0.0到191.255.255.255。可用的B类网络有16382个，每个网络能容纳6万多个主机 。 <BR><BR>3． C类IP地址 <BR><BR>一个C类IP地址由3字节的网络地址和1字节的主机地址组成，网络地址的最高位必须是“110”。范围从192.0.0.0到223.255.255.255。C类网络可达209万余个，每个网络能容纳254个主机。 <BR><BR>4． D类地址用于多点广播（Multicast）。 <BR><BR>D类IP地址第一个字节以“lll0”开始，它是一个专门保留的地址。它并不指向特定的网络，目前这一类地址被用在多点广播（Multicast）中。多点广播地址用来一次寻址一组计算机，它标识共享同一协议的一组计算机。 <BR><BR>5． E类IP地址 <BR><BR>以“llll0”开始，为将来使用保留。 <BR>全零（“0．0．0．0”）地址对应于当前主机。全“1”的IP地址（“255．255．255．255”）是当前子网的广播地址。 <BR><BR><FONT color=#0000ff>在IP地址3种主要类型里，各保留了3个区域作为私有地址，其地址范围如下： <BR><BR>A类地址：10.0.0.0～10.255.255.255 <BR><BR>B类地址：172.16.0.0～172.31.255.255 <BR><BR>C类地址：192.168.0.0～192.168.255.255</FONT></FONT><BR><BR><STRONG>子网掩码及主机段的算法</STRONG></SPAN><BR><BR></FONT><FONT color=#000000><SPAN class=tpc_content><FONT size=2>作者：浪子 来源：InterNet 加入时间：2004-11-23 <BR>类范围:IP地址常采用点分十进制表示方法:X.Y.Y.Y,在这里,X=1--126时称为A类地址;X=128--191时成为B类地址;X=192--223时称为C类地址;如10.202.52.130,因为X=10在1--126范围内所以称为A类地址,默认子网掩码:A类为255.0.0.0;B类为255.255.0.0;C类为255.255.255.0<BR><BR>当我们要划分子网用到子网掩码M时,类子网掩码的格式应为:A类为255.M.0.0;B类为255.255.M.0;C类为255.255.255.M. M是相应的子网掩码,如255.255.255.240<BR><BR>十进制计算基数:256.等一下我们所有的十进制计算都要用256来进行<BR><BR>几个公式变量的说明:<BR><BR>Subnet_block:可分配子网块的大小,指在某一子网掩码下的子网的块数.<BR><BR>Subnet_num:实际可分配子网数,指可分配子网块中要剔除首,尾两块,这是某一子网掩码下可分配的实际子网数量,它等于Subnet_block-2<BR><BR>IP_block:每个子网可分配的IP地址块大小<BR><BR>IP_num:每个子网实际可分配的IP地址数,因为每个子网的首,尾IP地址必须保留(一个为网络地址,一个为广播地址),所以它等于IP_block-2.IP_num也用于计算主机段<BR><BR>M:子网掩码(net maask)<BR><BR>他们之间的公式如下:<BR><BR>M=256-IP_block<BR><BR>IP_block=256/Subnet_block,反之Subnet_block=256/IP_block<BR><BR>IP_num=IP_block-2<BR><BR>Subnet_num=Subnet_block-2<BR><BR>2的冥数:要熟练掌握2^8(256)以内的2的冥数的十进制数,如128=2^7,64=2^6....,这可使我们立即推算出Subnet_block和IP_block数.<BR><BR>现在我们举一些例子:<BR><BR>一,已知所需子网数12,求实际子网数<BR><BR>解:这里实际子网数指Subnet_num,由于12最接近2的冥数为16(2^4),既Subnet_block=16,那么Subnet_num=16-2=14,故实际子网数为14.<BR><BR>二,已知一个B类子网每个子网主机数要达到60X255(约相当于X.Y.0.1--X.Y.59.254的数量)个,求子网掩码<BR><BR>解:1. 60接近2的冥数为64(2^6),即IP_block=64<BR><BR>2. 子网掩码M=256-IP_block=256-64=192<BR><BR>3. 子网掩码格式B类是:255.255.M.0,所以子网掩码为:255.255.192.0<BR><BR>三.如果所需子网数为7,求子网掩码<BR><BR>解:1. 7最接近2的冥为8,但8个Subnet_block因为要保留首,尾2个子网块,即8-2=6&lt;7,并不能达到所需子网数,所以应该取2的冥为16,即Subnet_block=16<BR><BR>2. IP_block=256/Subnet_block=256/16=16<BR><BR>3. 子网掩码M=256-IP_block=256-16=240<BR><BR>四.已知网络地址为211.134.12.0,要有4个子网,求子网掩码及主机段<BR><BR>解:1. 211.Y.Y.Y是一个C类网,子网掩码格式为255.255.255.M<BR><BR>2. 4个子网,4接近2的冥是8(2^3),所以Subnet_block=8,Subnet_num=8-2=6<BR><BR>3. IP_block=256/Subnet_block=256/8=32<BR><BR>4. 子网掩码M=256-IP_block=256-32=224<BR><BR>5. 所以子网掩码表示为255.255.255.224<BR><BR>6. 因为子网块中的可分配主机又有首,尾两个不能使用,所以可分配6个子网块(Subnet_num),每块32个可分配主机块(IP_block) 即:32-63,64-95,96-127,128-159,160-191,192-223<BR><BR>首块(0-31)和尾块(224-255)不能使用<BR><BR>7. 每个子网块中的可分配主机块又有首,尾两个不能使用(一个是子网网络地址,一个是子网广播地址),所以主机段分别为:33-62,65-94,97-126,129-158,161-190,193-222<BR><BR>8. 所以子网掩码为255.255.255.224 &nbsp; 主机段共6段为:211.134.12.33--211.134.12.62;<BR><BR>211.134.12.65--311.134.12.94;211.134.12.97--211.134.12.126;211.134.12.129--211.134.12.158;<BR><BR>211.134.12.161--211.134.12.190;211.134.12.193--211.134.12.222 &nbsp; 可以任选其中的4段作为4个子网.<BR><BR>介绍子网掩码的两种简便算法<BR><BR><BR>IP地址是32位的二进制数值，用于在TCP/IP通讯协议中标记每台计算机的地址。通常我们使用点式十进制来表示，如192.168.0.5等等。<BR>每个IP地址又可分为两部分。即网络号部分和主机号部分：网络号表示其所属的网络段编号，主机号则表示该网段中该主机的地址编号。按照网络规模的大小，IP地址可以分为A、B、C、D、E五类，其中A、B、C类是三种主要的类型地址，D类专供多目传送用的多目地址，E类用于扩展备用地址。A、B、C三类IP地址有效范围如下表：<BR><BR>类别 网络号 /占位数 主机号 /占位数 用途<BR>A 1～126 / 8 0～255 0～255 1～254 / 24 国家级<BR>B 128～191 0～255 / 16 0～255 1～254 / 16 跨过组织<BR>C 192～223 0～255 0～255 / 24 1～254 / 8 企业组织<BR><BR>随着互连网应用的不断扩大，原先的IPv4的弊端也逐渐暴露出来，即网络号占位太多，而主机号位太少，所以其能提供的主机地址也越来越稀缺，目前除了使用NAT在企业内部利用保留地址自行分配以外，通常都对一个高类别的IP地址进行再划分，以形成多个子网，提供给不同规模的用户群使用。<BR><BR>这里主要是为了在网络分段情况下有效地利用IP地址，通过对主机号的高位部分取作为子网号，从通常的网络位界限中扩展或压缩子网掩码，用来创建某类地址的更多子网。但创建更多的子网时，在每个子网上的可用主机地址数目会比原先减少。<BR>子网掩码是标志两个IP地址是否同属于一个子网的，也是32位二进制地址，其每一个为1代表该位是网络位，为0代表主机位。它和IP地址一样也是使用点式十进制来表示的。如果两个IP地址在子网掩码的按位与的计算下所得结果相同，即表明它们共属于同一子网中。<BR><BR>在计算子网掩码时，我们要注意IP地址中的保留地址，即“ 0”地址和广播地址，它们是指主机地址或网络地址全为“ 0”或“ 1”时的IP地址，它们代表着本网络地址和广播地址，一般是不能被计算在内的。<BR><BR>下面就来以实例来说明子网掩码的算法：<BR><BR>对于无须再划分成子网的IP地址来说，其子网掩码非常简单，即按照其定义即可写出：如某B类IP地址为 10.12.3.0，无须再分割子网，则该IP地址的子网掩码为255.255.0.0。如果它是一个C类地址，则其子网掩码为 255.255.255.0。其它类推，不再详述。下面我们关键要介绍的是一个IP地址，还需要将其高位主机位再作为划分出的子网网络号，剩下的是每个子网的主机号，这时该如何进行每个子网的掩码计算。<BR><BR>一、利用子网数来计算<BR><BR>在求子网掩码之前必须先搞清楚要划分的子网数目，以及每个子网内的所需主机数目。<BR>1)将子网数目转化为二进制来表示<BR>2)取得该二进制的位数，为 N<BR>3)取得该IP地址的类子网掩码，将其主机地址部分的的前N位置 1 即得出该IP地址划分子网的子网掩码。<BR>如欲将B类IP地址168.195.0.0划分成27个子网：3)将B类地址的子网掩码255.255.0.0的主机地址前5位置 1，得到 255.255.248.0<BR>即为划分成 27个子网的B类IP地址 168.195.0.0的子网掩码。<BR>1)27=11011<BR>