温故知新,小网吧改造实例

  看到周围的网吧火得不得了,老张也投资搞了一个。于是有了下面的故事:

  老张借钱开网吧,火了!

  电脑不够添新的,买了!

  组成网络不通畅,傻了!

  ……

  时间就是金钱!怎么办呢?老张急忙托人找到了俺这个“世外高人”。俺也没有辜负“大虾”这个荣誉称号,不到一小时就全部搞定。也许您会问,原因出在哪儿?又是如何解决的呢?别忙,且听俺慢慢道来。

  老张的网络是这样的

  为了最大限度地节约前期投入,老张全部采用的是廉价的集线器(也称Hub),这种组网方式在理论上称之为共享网络。所谓共享网络,就是由网络内的所有电脑共享网络带宽的网络。例如,集线器的端口速率为10Mbps,24个端口上都连接有电脑,那么,每个端口所获得的传输速率其实只有10 Mbps的1/24。老张的网吧拥有40多台电脑,上网速度慢、电脑之间的连接性能相对较差也就在情理之中了。


图1 集线器A与集线器C间的连接速率只有10Mbps的1/256!

  值得注意的是,该网吧集线器间的连接也有问题(如图1所示)。当集线器为16端口时,集线器A与集线器B间的连接速率只有10Mbps的1/16,而集线器B与集线器C的连接速率也是10Mbps的1/16,那么,集线器A与集线器C间的连接速率就将只有10Mbps的1/256!当集线器C和集线器A的电脑间进行通讯时,不慢才怪!另外,由于用于共享Internet接入的代理服务器也位于集线器A,所以,集线器C上电脑访问Internet时让人难以忍受也就在情理之中了。若欲提高网络性能,必须采用如图2所示的连接方式,从而使得任意两个集线器间的连接速率都保证为10Mbps的1/16,并且使所有电脑与代理服务器之间的连接都能有较高的速率保证。


图2 若欲提高网络性能,必须采用如图所示的连接方式.

某种程度上得到保障

 添电脑,添烦恼

  速度慢的问题总算是基本解决了。可是,为什么增加一些电脑后彼此之间就无法通信,而且再也无法接入Internet了呢?


图3 错误的连接方式。

  原因很简单,为了将增加的电脑连入网络,就必须再添加新的集线设备。不幸的是,老张依然采用了集线器,而且依然采用了级联的方式连接将第4台集线器串接起来(如图3所示),从而违反了10Base-T的5-4-3规则,导致网络通讯失败。所谓10Base-T,是指构建10Mbps双绞线以太网的国际标准,不过,经常被用于指代10Mbps双绞线网络。10Base-T规定双绞线的最长传输距离为100米。

  所谓10Base-T的5-4-3规则,是指任意两台电脑间最多不能超过5段线(既包括集线器到集线器的连接线缆,也包括集线器到电脑间的连接线缆)、4台集线器,并且只能有3台集线器直接与电脑等网络设备连接。如图4所示即为10Base-T网络所允许的最大拓扑结构,以及所能级联的集线器层数。其中,位居中间的集线器是网络中惟一不能与电脑直接连接的集线器。5-4-3规则的采用与网络所允许的最大延迟有关。电脑发送数据后,如果在一定的时间内没有得到回应,那么,将认为是数据发送失败,而不断地重复发送,但对方却永远无法收到。数据在网络中的传输延迟,一方面受网线长度的影响,另一方面也受集线设备的影响,因此,双绞线网络不仅对电缆的传输距离有限制,而且也限制了集线器的数量。


图4 10Base-T网络所允许的最大拓扑结构以及所能级联的集线器层数。

  在老张的连接方式中,虽然电脑之间既没有超过5段线,也没有超过4台集线器,但是4台集线器却都连接了电脑,所以,仍然违反了5-4-3规则。因此电脑之间无法进行通讯也就成为了必然。通过代理服务器接入Internet也就是不可能的了。


图5 多个集线器应该这样连接。

  难道网络就不能再扩大了吗?当然能。只需将其他三台集线器都连接在同一台集线器上即可,如图5所示。这样做,不仅严格遵守了5-4-3规则,而且网络的通讯效率也会在某种程度上得到保障。

更好的组网方案

  通过上面的描述,我们可以看到共享式网络的通信效率比较差,网络越大,每台电脑所能分配的有效带宽就越小,无法用于构建大规模或超大规模网络。那么,就没有有效地补救措施吗?当然有。

  一、提高集线器的传输速率

  从可提供的网络带宽来看,除了10Mbps集线器外,还有100Mbps和10/100Mbps自适应集线器可以选择。当然,网卡的传输速率也可与之相适应,否则将徒劳无功。不过,既然共享网络中是共享带宽,那么,集线器传输速率的提高并不能明显改善因网络数量过多而造成的传输效率的低下。因此,单纯提高集线器的传输速率的方式只适用于用户数量较小的网络。

  二、升级至交换式网络

  当网络中的电脑数量较多,通讯效率明显下降时,可以考虑采用交换机来升级网络。如果对网络的传输速率要求并不太高,可以只增加一台交换机,然后将集线器和服务器连接至该交换机(如图6所示),连接至不同端口的集线器间可以同时通讯,从而提高网络传输效率。当然,如果有条件,可以将所有的集线器全部更换为交换机,网络通讯效率将得到迅速飞升!


图6 采用交换机的组网方案。

  交换机的传输机制与集线器完全不同。交换式网络中每个端口所能提供的传输速率就是网络标称的带宽。如果将共享式网络比喻为一条乡间小路的话,那么交换式网络就像是一座立交桥,无论数据来自何方以及走向何方,都可以在此高速同时通过。

  目前市场上主流的交换机品牌有Cisco(思科)、3Com、华为、神州数码、全向、实达、TP-Link等,这些厂商的8口10/100M交换机既有几百元的产品,也有数千元的产品。而对于网络中应用最多的24口10/100/1000M交换机,大致可分为三个档次,Cisco、3Com的价格普遍在万元左右,Intel的相应产品价位在6000~8000元,而国产品牌的价格一般在4000元以下,如神州数码、全向、实达、TP-Link等。对于一般应用的企业或事业单位来说,在价格档次比较明显的情况下,可以把眼光更多的投向国产品牌的产品。

(0)

相关推荐

  • 温故知新,小网吧改造实例

    看到周围的网吧火得不得了,老张也投资搞了一个.于是有了下面的故事: 老张借钱开网吧,火了! 电脑不够添新的,买了! 组成网络不通畅,傻了! -- 时间就是金钱!怎么办呢?老张急忙托人找到了俺这个"世外高人".俺也没有辜负"大虾"这个荣誉称号,不到一小时就全部搞定.也许您会问,原因出在哪儿?又是如何解决的呢?别忙,且听俺慢慢道来. 老张的网络是这样的 为了最大限度地节约前期投入,老张全部采用的是廉价的集线器(也称Hub),这种组网方式在理论上称之为共享网络.所谓共享网

  • 小项目改造快速引入 mybatis的流程分析

    目录 项目背景 开始改造 引入对应的 start 在 application.yml 中补充配置 补充文件夹 总结 项目背景 项目在最开始,定位为一个插件.功能补充,为现有的 OA 提供一个报表功能,用于统计各个流程的数据 功能方面非常简单,考虑到开发速度,直接按 springboot 项目进行开发,依赖方面仅仅使用 spring-boot-starter-web, spring-boot-starter-jdbc, sqljdbc4, lombook 通过 @Bean 的方式注入 sql 查询

  • 微信小程序 navbar实例详解

    微信小程序 navbar实例详解 实现效果图: data typeList: [ { name: "日报", id: "1" }, { name: "周报", id: "2" }, { name: "月报", id: "3" }, { name: "目录", id: "4" }] js that.setData({ dateValue: util.

  • 微信小程序 参数传递实例代码

    微信小程序 参数传递实例代码 1.通过事件传递参数 实例代码: <view data-id="103" bindtap="evenName"></view> Page({ evenName: function(e) { //获得点击事件传递的id console.log(e.target.dataset.id); })  2.通过页面跳转传递参数 页面1: wx.navigateTo({ url: '/pages/scan-order/sca

  • c语言实现输入一组数自动从大到小排列的实例代码

    如下所示: #include <stdio.h> main() { int x; printf("请输入要排序数字个数:"); scanf("%d",&x); int i,j,k,a,b,num[x]; printf("输入数据:"); for(i=0;i<x;i++) scanf("%d",&num[i]); for(j=0;j<x;j++) { for(k=j+1;k<x;k+

  • Python Pywavelet 小波阈值实例

    小波应用比较广泛,近期想使用其去噪.由于网上都是matlib实现,故记下一下Python的使用 Pywavelet  Denoising 小波去噪 # -*- coding: utf-8 -*- import numpy as np import pywt data = np.linspace(1, 4, 7) # pywt.threshold方法讲解: # pywt.threshold(data,value,mode ='soft',substitute = 0 ) # data:数据集,va

  • Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i,'=',i*j,end = ' ',sep='') # end默认在结尾输出换行,将它改成空格 sep 默认 j,'*',i,'=',i*j 各元素输出中间会有空格 print()#这里作用是输出换行符 i = 1 while i <= 9: j = 1 while j <= i: print(&

  • JS学习笔记之贪吃蛇小游戏demo实例详解

    本文实例讲述了JS学习笔记之贪吃蛇小游戏demo实例.分享给大家供大家参考,具体如下: 最近跟着视频教程打了一个贪吃蛇, 来记录一下实现思路, 先上代码 静态页 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>贪吃蛇</title> </head> <style> *{ mar

  • python英语单词测试小程序代码实例

    这篇文章主要介绍了python英语单词测试小程序代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 爬取了扇贝英语网,并制作了一个英语单词测试的小程序,还能生成错词本,一起来看下代码吧- import requests #扇贝网爬虫,获取英语单词 category_res=requests.get('https://www.shanbay.com/api/v1/vocabtest/category/?_=1566889802182') ca

  • python制作英语翻译小工具代码实例

    这篇文章主要介绍了python制作英语翻译小工具代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 用python爬虫可以制作英语翻译小工具.来看下代码吧- import requests,json #函数封装 def translator(): session=requests.session() i=input('请问你要翻译什么?') url='http://fanyi.youdao.com/translate' headers={

随机推荐