Skip to main content

 路由器设置 > 新闻资讯 >

技术成长中难以忘记的“囧”与“惑”

2013-12-01 23:30 浏览:

 有人说技术圈也是一个江湖,技术中的高手就是大侠,弹指如飞气定神闲间化问题于虚无;而初入江湖的菜鸟,手足无措望问题而怯步。在行走江湖的过程中,我们不断积累功力,从菜鸟到技术牛人,经历了若干囧与惑,曾经让我们大惑不解的问题或许在现在看来很可笑,但正是这些问题成为我们成长中难以忘记的印记。
 

一、掩码之“惑”

   从事网络运维的朋友,对掩码是再熟悉不过了,这个看似简单的问题曾让很多人都困惑过。记得刚从事网络运维工作的时候,在一家系统集成公司,给甲方做项目。工作中经常会需要提交一些网络策略,网络策略的模板都是固定的,一般是写好后先发邮件给甲方的网络主管,审批后由甲方的网络工程师进行开通。一次提交网络策略的时候,对方的网络主管说你“这个掩码有问题,请细化”。我忙打开邮件,仔细看了看网络策略,没看出有什么问题。124624559.jpg

打电话与对方沟通,才明白对方认为这个源地址的掩码128太大,这样开策略会一下放行很多主机,所以需要细化缩小范围。晕!子网掩码是用来表明一个IP地址的哪些“位”标识的是主机所在的子网以及哪些“位”标识的是主机的位掩码。一个子网根据不同的划分可容纳的主机数是不同的,而且子网掩码不能单独存在,它必须结合IP地址一起使用。在这里对方显然是误解了掩码的含义,我们申请的策略只是开通“255.255.255.128”这个掩码所代表的子网段的10.4.21.33到“255.255.255.248”这个掩码所代表的子网段的10.4.119.17的TCP协议的22端口的访问权限,很细化也很明确,并不是他理解的开通这个“255.255.255.128”掩码段内的所容纳的126台主机的所有访问权限。随即打电话再次沟通解释这个问题,对方终于有点明白了,策略顺利开通,此事告一段落。

   在工作当中,发现网络不通是一种经常的现象,遇到这种现象,相信许多人都会将精力集中在网络线缆、网卡驱动、网络设备、网卡参数方面;而在检查网卡参数时,他们或许又将眼光聚焦在IP地址、网关地址、DNS服务器或DHCP服务器等重点参数上。事实上,还有一个网络参数——子网掩码,同样也是非常重要的,如果我们忽略了它的设置或将它设置错误,同样也会带来网络不通的故障。比如一台工作站的IP地址为10.192.0.1,对应的子网掩码地址为 255.255.255.0,另外一台工作站的IP地址为10.192.1.1,对应的子网掩码地址为255.255.255.0,那么他们就不处于相同的子网中,不能直接连通。因为通过子网掩码地址我们可以看出前一台工作站所处的子网网络号为10.192.0.0,后一台工作站所处的子网网络号为 10.192.1.0。再比方说,一台工作站的IP地址为10.192.0.1,对应的子网掩码地址为255.255.0.0,另外一台工作站的IP地址为 10.192.1.1,对应的子网掩码地址为255.255.0.0,那么他们就处于相同的子网中,因为通过子网掩码地址我们可以看出前一台工作站所处的子网网络号为10.192.0.0,后一台工作站所处的子网网络号也为10.192.0.0。子网掩码参数平时不被人重视,一旦由该参数引起网络不通故障,那么该故障的排除往往很容易让人多走弯路!

 

 子网掩码是网络中的一个重要的知识点,在工作中你还会接触到可变长子网掩码、超网、前缀表示法、子网聚合等,我们对子网掩码的认识和理解也是不断加深的,学无涯而知也无涯。

 

二、TELNET的“囧”

   telnet是大家很熟悉的一个程序,它是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。工作中,我们在终端电脑上使用telnet程序,可以很方便的连接到远端服务器执行操作,也可以用它来测试远端服务器端口的开放。

   09年的时候,我在一家上市公司做系统运维,当时一个项目需要分公司的系统管理员能用XMANAGER远程登录到总公司的一台服务器上用LINUX的远程图形化安装一个商业软件。我已在总公司的服务器上配置好了XMANAGER并在防火墙上放行了XMANAGER的UDP端口177,对端分公司的系统管理员只要测一下UDP端口 177是否通,连上就可以了。尼玛,结果分公司的管理员测了一下午都报XMANAGER端口不通。我纳闷了,怎么会呢?配置一点问题都没有,他到底是怎么测的?我问他你用什么工具测的端口,他说是TELNET,并发来截图

143017490.jpg

囧!TELNET只能测TCP端口,怎么能测UDP端口呢?UDP端口是否开放,可以用NC、端口扫描工具等来测试。

  NC来测试

[root@test ~]# nc -vuz 10.4.29.35  177
     Connection to 10.4.29.35 177 port  succeeded!
      结果证明UDP 177端口正常监听,可连通。

      或者直接用XMANAGER连上测一下

144258545.jpg

 

小的问题,小的细节,不容忽视,细节决定成败,做技术的一定要严谨和深入。

 

三、内存之争

   11年在一家电商公司工作时,曾有一段时间开发部和运维部争执内存的使用率问题,最后运维部大获全胜。事情起因,开发部任务很紧,需要在四个月内上线一套新系统。连续每月周末加班,加之代码测试工作没跟上,系统的BUG很多,到快上线的一个月,总感觉系统和前台运行慢,然后到处找原因。运维部连续几天监控和分析,发现是代码方面的问题,但还没上报技术总监。一日,一开发工程师似乎发现了问题的症结,向上面报告说是“系统内存占用率高,需要增加服务器内存”,并截图为证

150311613.jpg

内存使用率为:14873/16062=92.6% ,所以导致系统运行慢。开发部领导向技术总监汇报,说明情况并申请购买50根16G内存加到之前的服务器上。由于新购50根服务器内存,需要增加一笔费用,上面批复的流程又比较长,上线的时间又快近了,技术总监有点犹豫,问运维部怎么看这个问题。运维部拿出了几天来的分析结果,论证了是代码方面的问题,并就内存使用率向技术总监做了解释。

     LINUX是尽可能使用内存的原则,内核会把剩余的内存申请为cache,而cache不属于free范畴。当系统运行时间较久,会发现cached很大,对于有频繁文件读写操作的系统,这种现象会更加明显。直观的看,此时free的内存比较小,但并不代表可用的内存小,当一个程序需要申请较大的内存时,如果free的内存不够,内核会把部分cache的内存回收,回收的内存再分配给应用程序。所以对于linux系统,可用于分配的内存不只是free的内存,还包括cache的内存(其实还包括buffers)。第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是1188KB,第二行是从应用程序角度来看对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能当应用程序需要用到内存的时候,buffer/cached会很快地被回收。所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached.由此看来LINUX的内存使用率实际为1-(11289/16062)=30%,这样一分析,完全没有必要增加内存,主要还是要提升代码的质量和改善应用程序。

  
   这次内存之争,用公司同事的话说“运维部很拉风,开发部很伤神”(以前开发部的人都很神气,领导都是表扬)。经过开发部调整代码后,系统和前台运行都比以前快些和稳定了,运维部在公司一时人气大旺。

   

    技术离不开理论,但更需在实践中去分析和论证。

 

    每个问题,都有它的特点,或简单或复杂,同时我们对问题的思考是不断深入的,毕竟理性也是有一定局限性的。从菜鸟到技术大牛,我们成长的路上都会遇到这样那样的“囧”与“惑”,WINDOWS有WINDOWS的玄妙,LINUX有LINUX的精深,程序语言亦是如此。

 

    仰望星空,仍需脚踏实地。唯有深入思考和历练,我们才能不断跨越“囧”与“惑”,走向真正的技术大牛!

 

本文出自 “滴水穿石” 博客