📄 0110network_basic.htm
字号:
IP 实在太重要了,所以我们将他独立出一个小节来继续介绍。当然,底下就独立的来介绍与IP 相关的一些概念,包含了 Netmask, Broadcast, Gateway 以及网域的概念等等。</ul><hr width="100%"><a name="IP"></a><font size="+1" color="#000099">InternetProtocol, IP 概念</font><ul>认识了最底层的网络共享媒体与数据链路层的 ARP 及 MAC 概念之后,接下来要跟大家介绍的就是那个可爱又可恨的网络门牌『<font color="#000066">InternetProtocol, IP</font>』了,IP 是所有网络的基础,没有了他,您的网络将只是一堆废铁啊!赶紧来认识一下吧!<br> <br><hr width="100%"><a name="IP_component"></a><font color="#000099">IP 的组成:</font><br> <br>我们目前在网络上使用的 IP 协议是第四版,也就是被称为<font color="#000066">IPv4 </font>的一个协定。在这个协议当中,最重要的就是 IP 的组成了。<font color="#000066">IP主要是由 32 bits 的资料所组成的一组数据</font>,也就是 32 组 0 跟 1 所组成的数据数据,因为只有零跟一,所以IP 的组成当然就是计算机认识的二进制的表示方式了。不过,因为人类对于二进制实在是不怎么熟悉,所以为了顺应人们对于十进制的依赖性,因此,就将32 bits 的 IP 分成四小段,每段含有 8 个 bits ,将 8 个 bits 计算成为十进制,并且每一段中间以小数点隔开,那就成了目前大家所熟悉的IP 的书写模样了。如下所示:<br> <table bgcolor="#000000" border="1" cols="1" width="400"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">IP 的表示式:</font><br><font size="-1" face="SimSun"><font color="#ffffff">00000000.00000000.00000000.00000000</font><font color="#ffff00">==>0.0.0.0</font></font><br><font size="-1" face="SimSun"><font color="#ffffff">11111111.11111111.11111111.11111111</font><font color="#ffff00">==>255.255.255.255</font></font></td></tr></tbody></table> <br>所以 IP 最小可以由 0.0.0.0 一直到 255.255.255.255 哩!事实上, IP 的组成当中,除了以32 bits 的组成方式来说明外,还具有所谓的『网域』的概念存在。底下就来谈一谈什么是网域吧!<br> <br><hr width="100%"><a name="IP_Networking"></a><font color="#000099">网域的概念</font><br> <br>事实上 IP 的 32 bits 数据中,可以分为 HOST_ID 与 Net_ID 两部份,我们先以192.168.0.0 ~ 192.168.0.255 这个 C Class 的网域当作例子来说明好了:<br> <table bgcolor="#000000" border="1" cols="1" width="400"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">192.168.0.0~192.168.0.255这个 C Class 的说明:</font><br><font size="-1" color="#ffffff" face="SimSun">11000000.10101000.00000000.00000000</font><br><font size="-1" color="#ffffff" face="SimSun">11000000.10101000.00000000.11111111</font><br><font size="-1" color="#ffff00" face="SimSun">|----------Net_ID---------|-host--|</font></td></tr></tbody></table> <br>在 C Class 的范例当中,前面三组数字 (192.168.0) 称为 Net_ID,最后面一组数字则称为Host_ID。同一个网域当中的定义是『<font color="#000066">在同一个物理网段内,主机的IP 具有相同的 Net_ID ,并且具有独特的 Host_ID</font>』,那么这些 IP 群就是同一个网域内的IP 网段啦! ( <i><font color="#000066">注:什么物理网段呢?举例来说,上图二所有的主机都是使用同一个网络媒体串在一起,这个时候这些主机在实体装置上面其实是联机在一起的,那么就可以称为这些主机在同一个物理网段内了!同时并请注意,同一个物理网段之内,可以依据不同的IP 的设定,而设定成多个『IP 网段』喔! </font></i> ) 例如上面例子当中的192.168.0.1, 192.168.0.2, ...., 192.168.0.255 这些 IP 就是同一个网域内的IP 群(同一个网域也称为同一个网段!),请注意,同一个 Net_ID 内,不能具有相同的Host_ID ,例如上图二当中, PC 1 与 PC 5 不能同时具有 192.168.0.1 这个 IP,否则就会发生 IP 冲突,可能会造成两部主机都没有办法使用网络的问题!那么同一个网域该怎么设定,与将IP 设定在同一个网域之内有什么好处呢?<br> <ul><li><font color="#000066">在同一个网段内,Net_ID 是不变的,而 Host_ID 则是不可重复,此外,Host_ID 在二进制的表示法当中,不可同时为 0 也不可同时为 1 ,例如上面的例子当中,192.168.0.0 ( Host_ID 全部为 0 )以及 192.168.0.255 ( Host_ID 全部为 1 )不可用来作为网段内主机的 IP 设定,也就是说,这个网段内可用来设定主机的IP 是由 192.168.0.1 到 192.168.0.254;</font></li><li><font color="#000066">在同一个网域之内,每一部主机都可以藉由<a href="#Networklayer_data_link_logical_broadcast">逻辑广播( logical broadcast )</a> 取得网域内其它主机的 MAC 对应 IP;</font></li><li><font color="#000066">由上面的逻辑广播动作取得 MAC 之后(亦即 <a href="#Networklayer_data_link_ARP">ARP</a>协议),在同一个网域之内,主机的数据可以直接透过彼此的 NIC ( Network InterfaceCard, 网络卡 ) 进行传送;</font></li><li><font color="#000066">在同一个物理网段之内,如果两部主机设定成不同的 IP网段,则两部主机无法直接以逻辑广播进行数据的传递 ( 在没有设定特殊 route规则的情况下 )。</font></li></ul> <br>所以说,我们家里的所有计算机当然都设定在同一个网域内是最方便的,因为如此一来每一部计算机都可以直接进行数据的交流,而不必经由Router ( 路由器 ) 来进行封包的沟通呢!( Router 这部份在后续才会提及! )。好了,刚刚我们上面说的是C Class 的网域,那么有没有其它 Class 的网域呢?而且他们又是怎么区分的呢?目前Internet 将整个 IP 简单的方类成为三个网段,分别设定为所谓的 A, B, C 三个Class ,他们的分类原则如下:<br> <table bgcolor="#000000" border="1" cols="1" width="500"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">以二进制说明Network 第一个数字的定义:</font><br><font size="-1" face="SimSun"><font color="#ffffff">A Class : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx </font><font color="#ffff00">==>开头是0 </font></font><br><font size="-1" color="#ffff00" face="SimSun"> |--net--|---------host------------|</font><br><font size="-1" face="SimSun"><font color="#ffffff">B Class : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx </font><font color="#ffff00">==>开头是10</font></font><br><font size="-1" color="#ffff00" face="SimSun"> |------net-------|------host------|</font><br><font size="-1" face="SimSun"><font color="#ffffff">C Class : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx </font><font color="#ffff00">==>开头是110</font></font><br><font size="-1" color="#ffff00" face="SimSun"> |-----------net-----------|-host--|</font><br><font size="-1" color="#ffff00" face="SimSun"> </font><br><font size="-1" color="#ffffcc" face="SimSun">以十进制说明Network 的定义:</font><br><font size="-1" color="#ffffff" face="SimSun">A Class :  0.xx.xx.xx ~ 126.xx.xx.xx</font><br><font size="-1" color="#ffffff" face="SimSun">B Class : 128.xx.xx.xx~ 191.xx.xx.xx</font><br><font size="-1" color="#ffffff" face="SimSun">C Class : 192.xx.xx.xx~ 223.xx.xx.xx</font></td></tr></tbody></table> <br><a name="IP_Networking_loopback"></a>在上表中,可能您会觉得很奇怪,咦!那个127.xx.xx.xx 怎么不见了?!他应该也是 A Class 的一段吧?!没错,是不见了,因为这个网段被拿去给操作系统做为<font color="#000066">内部循环网络( loopback )</font> 之用了!在各个操作系统当中,不管该主机的硬件有没有网络卡,为了让作业确认自己的网络没有问题,所以将127.xx.xx.xx 这个 A Class 的网段拿到操作系统当中,来做为内部的回路测试!所以啦,这个127.0.0.1 就不可以用来做为网络网域的设定了。<br> <br><hr width="100%"><a name="IP_Netmask"></a><font color="#000099">Netmask的用途 (效能) 与子网络的切分</font><br> <br>在上一小节当中提到的 A, B, C 三个层级的网域是由 IP 协定预设分配的,在这样的层级当中,我们可以发现A Class 可以用于设定计算机主机的 IP 数量 ( Host ) 真的是很多,在同一个 AClass 的网域内,主机的数量可以达到『 <font color="#000066">256 X 256 X256 - 2(HostID全为0或1) = 16777214</font>』,不过,这样的设定情况对于一般网络的效能却是不太好的!为什么呢?让我们回到OSI 七层协议里面的<a href="#Networklayer_physical">共享媒体</a>上面,还记得共享媒体上面主机A 要发送数据出去的时后,需要先进行『<a href="#Networklayer_physical_broadcast">物理广播</a>』来确认媒体上面没有人在使用吧?而其它的主机在接收到这样的物理广播封包之后,就得要先将手边关于网络的工作停顿下来等主机A 将动作做完之后,其它的主机才能进行下一次的物理广播。所以如果我们是以A Class 的架构来架设我们的网络的话,那么当一部主机要传送数据时,其它的所有主机都得要停顿的吶!而且,如此大型的网域内,肯定更容易发生<a href="#Networklayer_physical_collision">封包碰撞( Collision ) </a>的问题,而且在进行<a href="#Networklayer_data_link_logical_broadcast">逻辑广播</a>的时后,响应的计算机主机数量也实在是太多了!如此一来,整个网络的效能将会变的很糟糕!所以,一般来说,我们最多都仅设定C Class 做为整个局域网络的架构,其实就连 C Class 也都太大了!不过不打紧,只要记得一个网域内不要超过30 部以上的主机数量,那样网络的效能就会比较好一点~<br> <br>其实,除了 C Class 之外,我们还是可以继续将网络切的更细的!上个章节我们提到IP 分为 Net_ID 与 Host_ID,其中 C Class 的 Net_ID 占了 24 bits ,而其实我们还可以将这样的网域切的更细,就是让第一个Host_ID 被拿来作为 Net_ID ,所以,整个 Net_ID 就有 25 bits ,至于 Host_ID则减少为 7 bits 。在这样的情况下,原来的一个 C Class 的网域就可以被切分为两个子网域,而每个子网域就有『<font color="#000066">256/2- 2 = 126</font> 』个可用的 IP 了!这样一来,在这个网域当中的主机在进行逻辑广播时,响应的主机数量就少了一半,当然对于网络的效能多多少少有点好处的啦!<br> <br>好了,知道了子网络切分的大致情况后,现在要谈的是,那么到底是什么参数来达成子网络的切分呢?呵呵!那就是Netmask ( 子网掩码 ) 的用途啦!这个 Netmask 是用来定义出网域的最重要的一个参数了!不过他也最难理解了~@_@。为了帮助大家比较容易记忆住 Netmask 的设定依据,底下我们介绍一个比较容易记忆的方法。同样以192.168.0.0~192.168.0.255 这个网域为范例好了,如下所示,这个 IP 网段可以分为Net_ID 与 Host_ID,既然 Net_ID 是不可变的,那就假设他所占据的 bits 已经被用光了( 全部为 1 ),而 Host_ID 是可变的,就将他想成是保留着 ( 全部为 0 ),所以,Netmask 的表示就成为:<br> <table bgcolor="#000000" border="1" cols="1" width="400"><tbody><tr><td><font size="-1" color="#ffffcc" face="SimSun">192.168.0.0~192.168.0.255这个 C Class 的说明:</font><br><font size="-1" color="#ffffff" face="SimSun">11000000.10101000.00000000.00000000</font><br><font size="-1" color="#ffffff" face="SimSun">11000000.10101000.00000000.11111111</font><br><font size="-1" color="#ffff00" face="SimSun">|----------Net_ID---------|-host--|</font><br><font size="-1" color="#ffff00" face="SimSun">11111111.11111111.11111111.00000000 <== Netmask 二进制</font><br><font size="-1" color="#ffff00" face="SimSun">  255  .  255   .  255  
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -