Shell's Home

Sep 30, 2006 - 2 minute read - Comments

网络性能测试和标准

前两天弄有线通的事情弄的郁闷了,所以就研究了网络性能测试。以后不用也是浪费,大家需要就看看吧。 1.目标 测试目的往往是测试清楚几个值,包括:IP包传输往返时延(RTT),IP包时延变化(抖动),IP包丢失率(Lost rate),IP业务可用性,还有带宽(Bandwidth)。 2.适用标准 RFC 1242, RFC1944, RFC2285, RFC2432。 ** 中华人民共和国信息产业部令第36号(http://www.chinanetcom.com.cn/mj/dxsc.asp?Unid=3810) ** IP网络技术要求– 网络性能参数与指标(YD/T 1171-2001) 3.测试平台和工具 我们假定基于POSIX兼容平台测试,演示用的例子来自Debian Etch/Kernel 2.6.17-2-686。Windows下所需要工具可以参考移植工具。 iperf 网络带宽测试工具 paratrace 被动路由测试工具 hping2 网络联通和时延测试工具 wireshark(ethereal) 抓包分析工具 p0f 被动指纹分析工具 4.测试对象,方法,和结果分析 以下为实例测试,参数需要根据具体情况变化。 4.1.测试网络带宽 在服务器端运行iperf -s。 在客户端运行iperf -c 192.168.0.2 100Mbps网络环境下,得到结果为92.6Mbps,折合为11.5MB/s。即数据极限传输速度。 4.2.测试网络IP包传输往返时延(RTT)和IP包时延变化(抖动) 分主动被动方法,被动方法用wireshark抓包分析。下面主要介绍主动方法: 运行hping2 www.google.com -p 80。得到 56 packets transmitted, 56 packets received, 0% packet loss round-trip min/avg/max = 242.5/269.9/381.1 ms 即在主动建立的到www.google.com的TCP连接中(默认为TCP,可以使用UDP,ICMP,IP,具体请看hping2 –help),丢包率为0。平均传输延迟为269.9,抖动为138.6。 注:按照《中华人民共和国信息产业部令第36号》,往返时延平均值≤200毫秒,时延变化平均值≤80毫秒。此处已经超标。但因为测试环境和适用条件不完全吻合,因此无法作为有效证据。 4.3.IP包丢失率(Lost rate) 也分主动方法和被动方法,主动方法见上。被动方法是用wireshark抓包后,通过tpc.analysis.lost_segment标志分析丢包数量和总体数量。具体为。 用wireshark抓包。 用( tcp.srcport == 7007 || tcp.

Sep 30, 2006 - 1 minute read - Comments

从踢牙老奶奶到火星文,从火星文到人工智能

先复制一个小的密码—— £³¨Ç£ê£±£¬£µ¨É¨Ù¨Ó¡££±¨Ð¨Ç¨Í£¬£±¨Ð£ä¨Ê¡£ ¨×£²£ä£´£¬¨ß¨Ç¨Ñ¨È¡£¨ÙYA¨È£ã£¬£ê£±£´¨Ø¡£ £´¨Ñ£´£õ£¬£â£ã£â¨Ó¡££±£ã£±¨É£¬¨Í¨Ø£´¨Ó¡£ 看的出来的——请和火星总部联系。 很多朋友可能不知道一个事情,不过不少人应该听说过无冬城之夜。台湾版的无冬城之夜本地化(l10n)中有一个重大bug。俗称踢牙老奶奶。 原文是:我看到一位老奶奶慈祥的脸——我抓住她的手,但是她竟然一脚踢到我的牙齿。 估计所谓踢牙,应当是英文kicked my teeth in,指漠视。最后应当是她竟然无视我。这是典型的一个翻译错误,而且估计可能是机器辅助翻译没有修润的结果。这个错误和当年大菠萝的温暖骷髅情况不一样,没有任何一个电脑会把蠕虫骷髅(wormskull)错成温暖骷髅(warmskull)。 由此肇因产生了很多火星文,例如说:这个游戏里面到处是踢牙老奶奶。 不过,无论是机器翻译不完善造成的火星文,还是人造的火星文。其实都是一个核心问题,NLP。 机器可以理解形式化的编程语言,并且转换为机器代码。是因为语言是具备一定的形式(form)的,或者叫做范式(pattern)。而例如说可以借助符号来做唯一分割(语法树的生成,或者说波兰树的生成),符号的唯一性。(所谓重载,是用将参数等重载辨识元素附加在名字里面,导致名字的定义仍旧唯一,详细大家可以看有做对象导出的库的导出符号表)然而自然语言本身分割未必唯一,符号也是和上下文相关的。例如最有名的例子,中国队大败美国队获得冠军。(中国队大败美国队获得冠军。和中国队大败美国队获得冠军。前一句中的败是动词,后一个应当是使动用法)这句同时出现了非唯一分割和符号歧义,即使对于人来说,也是具备歧义句特征的。只有在特定的语境中,歧义才会消除。例如如果在表扬中国队表现的文章中,那应当是后面一个解释。 对于自然语言的理解,人工智能中叫做NLP问题(Nature Language Precess)。首先要处理的就是断词和消除歧义。其中涉及的问题到不繁复,但是很庞大。最关键就在于数据量上。 断句的话,一般简单的都采用HMM算法,这就需要有前后词或者词组的衔接概率作为基础。中文又具备一个恶心的特性,就是假借。尤其在口语和古语方言一类的东西里面,倒置使动频繁。所以单纯做HMM还不完全解决问题。现在有很多分词软件,是基于HMM的。拿古文上去试试就知道是不是了,例如:古之人诚不余欺也。 至于消除歧义,更是麻烦的要死的东西。要消除歧义,只有把所有歧义可能全部列举出来。然后查看上下文中相关词汇出现的频率,选择比较高的一个。然而对于上面那个使动用法的例子,两者相关词汇的频率应当差不多。而电脑又不会像人一样判断语境,因此要误判就不奇怪了。 还有一个就是上面踢牙老奶奶出现的原因,俗语(idiom)或者叫俚语。例如百口莫辩,如果不加处理,至少也是can’t argue with one hundred mouth(people)。事实上比较恰当的翻译应当是unable to give a convincing explanation for self-defense。当然,NLP的目的未必是翻译,因此可能出现别的错误。不过错误的原因是一样的,就是俗语不了解。这个问题人也会出现,只是人的智能就比电脑高一些。百口莫辩不知道典故错误翻译过去还算难免,买椟还珠这种东西即使知道椟怎么翻译,在真的翻译前也会问问典故的吧。

Sep 27, 2006 - 1 minute read - Comments

玉女穿梭

今天弄了一个好玩的东西,esound4win。 现在在我的linux和windows上面有一堆穿来穿去的协议,大家看看实现方法,然后头晕不头晕。 首先是VNC,在windows上面安装RealVNC,启动服务。然后用linux的xvncviewer访问,就可以无缝在linux上面访问windows。 然后是Xming,这个是Cygwin的一个部分。可以在windows上启动X服务,这样我们可以运行一个远程跨平台的图形界面。在我的Debian上面是这样的。 用一个tty登录进去,然后 $export DISPLAY=192.168.0.X:0 $/etc/X11/Xsession & 这样就完成了完整的一个界面,界面控制是在windows下,但是程序是在linux下跑。和VNC不一样的是,windows的前端在操作的时候,其他的前端可以同步操作。 再然后是esound,这也是Cygwin的一个部分。可以在windows上开启一个esound daemon。方法是运行。 esound -tcp -public 在linux下面,esound可以跨站传输,方法是设定。 $export ESPEAKER=192.168.0.X:16001 当然,监听端口可以自行设定。 这样,就完成了从linux上将声音输出到windows听的功能。 最后,我讲讲我的实现。我先开了一个VNC穿到windows上操作,然后启动Xming。按F8退出到本地,用Ctrl+Atl+F2切换到tty登录,并且连接上Xming的前台X。然后Atl+F7返回GUI,F8返回VNC全屏模式。在Xming里面,开了个term。export了参数后启动xmms,并且切换到esound输出。再在windows下面运行esound4win,插上耳机。最后我点了下VNC中的Xming中的xmms的播放,声音出来了——世界多么奇妙?

Sep 26, 2006 - 1 minute read - Comments

电脑程度测试

随便写了点问题玩玩——大家开心就好哦—— 1.电脑开机和关机一样简单 2.会按照标准流程关机 3.非常习惯的在关机的时候点关机去 4.电脑不经常关机 5.为啥要关机? 1.不知道啥叫重装系统 2.定期找人重装系统 3.会自己重装系统 4.用过windows以外的系统 5.用的是自己定制的系统 1.从来都只在网络上听歌而不下载 2.没有用过CMD窗口下的命令 3.会按照网络上的说明调整系统 4.中了木马会手工查找 5.经常在自己的论坛或者wiki上写东西 1.看到弹出一个对话框就习惯的按回车 2.删除错误了去回收站里面找 3.文件按照分类摆放 4.经常写两个脚本用用 5.经常猜到将来会流行什么类型的软件 1.电脑里的软件都是中文的 2.可以用一些英文软件 3.偶尔自己装几个软件试用一下 4.经常试用各种软件 5.一般只用自己熟悉的软件 1.出现异常的时候手足无措 2.出现异常时候的反应是,中病毒了 3.出现异常会去论坛上提问 4.出现异常会提交报告 5.出现异常会条件反应出出错的原因 评: 5-8分:您是标准的电脑白痴,除非有人帮忙,否则电脑就是废物。 9-12分:您刚刚学会用电脑,不过还不是很熟练 13-16分:您的电脑还算不错 17-20分:已经算是个高手了 21-25分:对您来说,用电脑和呼吸一样自然,你是神吗?

Sep 12, 2006 - 1 minute read - Comments

上海有线通网络封锁解析

OK,今天贝壳稍微辛苦了点。给用有线通的朋友们准备了份礼物。 贝壳今天解析了有线通的抓包,发现了有线通限制P2P的方法,那就是,丢包。 TCP传输的时候,会有一定几率的丢失部分或者全部传输的数据,对方会根据你的SEQ和checksum来分析是否接收到了所有的包,并且返回一个包,告诉你报文状况。一般来说,丢包率都是很小的,大约是0.1%以下。丢包太多往往意味着各种网络异常,例如抢占MAC的sniffer方式就会有大量的丢包。这里是丢包率的详细解释。 贝壳刚刚截取了32秒的数据,总共传输3082个,丢包率是ED数据丢失119个,其余总共丢失2个,总丢包率3.9%。图片内有相应的截图,并且贝壳可以提供多次的抓包分析证明。 贝壳又做了一次分析,这次贝壳从skycn.com上面下载directx9c,同时保持ED通信。ED是7K上传40K下载的样子,HTTP是15K的样子。在60秒内总共是16763个包,其中ED相关丢包321个,非ED相关丢包13个,丢包率1.99%。 通过这个就可以证明,即使不说有线通封锁P2P的问题,有线通的网络服务质量也存在硬性问题。

Sep 11, 2006 - 1 minute read - Comments

X system 配置文件执行流程分析

1.startx启动流程 /usr/bin/startx +->/etc/X11/xinit/xinitrc |->/etc/X11/Xsession |->~/.xinitrc |->/etc/X11/xinit/xserverrc |->/usr/bin/X11/X ->~/.xserverrc startx脚本会分析用户主目录下是否存在特殊配置文件,如果不存在则使用系统默认脚本。默认脚本分两个部份,xinitrc启动客户端部份,xserverrc启动服务器端部份。 xserverrc内容仅为启动X。xinitrc会执行/etc/X11/Xsession,而后进入session分析。 2.Xsession /etc/X11/Xsession -> /etc/X11/Xsession.d/* /etc/X11/Xsession和/etc/init.d/rc很类似,是用来循环依次启动其他脚本的控制脚本。他负责启动/etc/X11/Xsession.d/下的所有文件。其中50xfree86-common_determine-startup文件会依次检测以下3个文件,并且设置到STARTUP变量中。x-session-manager;x-window-manager;x-terminal-emulator;最后99xfree86-common_start文件会执行exec $STARTUP;完成整个系统的启动过程。 3.gdm gdm服务被/etc/init.d/gdm启动,而后读取/etc/gdm/gdm.conf配置自身。后面是基于理论分析,没有加以验证。 |-gdm---gdm-+-Xorg | `-x-session-manag-+-scim | `-ssh-agent 上面是pstree的结果,第1个gdm是/etc/init.d/gdm,第2个gdm是/usr/bin/gdm。gdm先启动一个X作为服务端,否则自身也无法以图形方式显示登录界面。而后gdm成为此X界面的唯一用户,显示登录系统。在用户登录后,gdm启动/etc/gdm/Xsession。这个脚本的内容和/etc/X11/Xsession非常类似,我怀疑为什么他们不用链接的方式(可能是因为包的关系?)。这时整个启动活动就结束了。

Sep 11, 2006 - 1 minute read - Comments

Linux配置文件测序

CopyRight: Written by Shell.E.Xu. Published under GPL. KeyWord: Linux bash profile 配置文件。 Abstract: 利用变量声明次序测定多个配置文件是否被调用以及调用的次序。 环境: Debian/GNU Linux starg 3.1 Kernel:2.6.16-686-2 测定方法,加入变量TEST=XXX。此方法可能被某些变量解除函数解除,因此不予执行的反应未必是真,不过执行次序一般假不了。 1.tty登录时 /etc/environment;/etc/profile;~/.bash_profile->~/.bashrc->/etc/bashrc; /etc/environment;/etc/profile;~/.bash_login /etc/environment;/etc/profile;~/.profile 当上级启动过程中文件不存在时,才进行下面的过程。 2.GDM登录时 /etc/environment 3.新启动bash时 /etc/bash.bashrc;~/.bashrc->/etc/bashrc; 4.~/.inputrc 根据文档,这个函数在readline函数初始化时启用。 5.结论 如果需要有效执行命令,需要同时修改/etc/profile和/etc/bash.bashrc。因为GDM登录的时候不执行登录脚本顺序,所以仅仅修改/etc/profile会造成对GUI下面开的term无效。虽然/etc/bashrc在理论上也有效,但是一旦~/.bashrc中没有引用,则无效(例如Debian中的root,由于安装系统的时候没有copy skel,所以缺少很多.XX文件)。如果仅仅是设定变量,可以用/etc/environment。该文件没有找到资料,其中仅可以设定变量(不用export,应当是被某程序作为配置读取而非脚本执行),据分析是登录时当即起效。

Sep 9, 2006 - 1 minute read - Comments

有线通封锁变通办法

虽然决定不用有线通了,但是还是要熬到年费结束。所以稍微研究了有线通的封锁方法,看看有没有变通方案。根据我上面的研究,有线通浦东地区封锁的是协议。所以我实验打开了BT和ED两个协议。结果证实,这两个协议同时打开对于单个协议的速度稍微有影响,估计是TCP的优先相应问题。不过总体速度比单个协议高了很多。昨天打开的时候,ED是30下载5上传,没有BT。今天同时打开的结果是BT45下载10上传,ED17下载10上传。总体来说有62下载20上传左右,高了很多。 其中针对BT说一句。之所以有这么高的速度,主要因为打开了BT中的加密协议头优先。这样在某些传输中就被当作HTTP连接,这个速度就是赚到的。不过现在不多,因此也没有太高的提升。不过总体下来不无小补,所以提供给继续要受到有线通荼毒的人士用用。 另外,有线通对HTTP下载不限速。大家可以把HTTP下载速度降低到不影响P2P连接的水平(例如用flashget的限制速度功能),慢慢下。这样你的总体平均流速是最大的,同时对于有线通的杀伤也是最大的。

Sep 8, 2006 - 1 minute read - Comments

音乐文件转换技巧和脚本

好久没动手写啥东西了,最近在准备LPIC1考试。Will everyone keep finger cross 4 me?嘿嘿—— 这个题目是个大家伙,反正每天写一点,也不忙在一时。大家有啥需要了解的,也可以问在下面。我会更新的。 copyright: 本文所提到各种软件版权归各个软件开发者所有。文章内容及所有附属脚本为独创,按照GPL发布。 keyword: 音乐 格式 转换 脚本 标签 bash shell script mp3 midi ape flac cue toc directory: 1.文件格式解说 1.1.mp3/ogg 1.2.midi 1.3.ape 1.4.flac 1.5.cue/toc 1.6.wav 1.7.iso 2.文件转换 2.1.wav/mp3 2.2.wav/ape 2.3.wav/flac 2.4.midi2wav 2.5.iso/wav 3.转换细节问题 3.1.按照cue切割 content: 1.1.mp3/ogg 这两个是非常有名的音乐压缩文件,其中MP3是mepg II layer 3。不要以为是mpeg III。一般来说,MP3都被认为是一种小巧但是音质比较差的格式。不过事实上,要指摘MP3的音质前,你先自己找找是否满足了一定条件。周围是否安静,没有噪音。音源是否高清晰(拿MP3还原出来的CD是没意义的)。声音设备是否足够好(至少也要是高质量的音响或者高档耳机,耳塞或者200-300的所谓音箱根本不用说)。如果没有上述条件,那么MP3的音质也算过的去的。MP3格式的压缩比值大约是10:1,和wav相比。另外,如果有CD的话,最好使用lame进行适当压缩。而不要为了方便随便使用一个压缩工具。压缩最好使用VBR格式。这种格式本质上没有什么变化,只是在信息流高的地方使用高的编码格式,以获得最高的质量/空间比值。ogg具体情况没有研究,不过使用上和MP3没有区别。 1.2.midi midi是所有格式中唯一不记录音频数据的音乐格式。midi记录的实质上是发声事件,简单来说就是什么时候鼓响了一下,什么时候钢琴的哪个键被按下了。因此midi也是没有立体声效果的。除非你使用特殊的软件指定某个乐器演奏时候的位置,然后根据环境生成出相应的音乐文件。midi文件在当前主要是两个用途。一个是midi记录了乐手演奏时候的指法细节,也记录了曲子的曲谱。midi本质上就是谱子。另外一个是midi的超小体积使得在某些嵌入系统(例如手机)上面可以作为背景音乐。 1.3.ape ape是一种无损压缩格式,你可以把ape看成是一种只能对wav作用的zip文件。压缩比一般是2:1。 1.4.flac flac和ape基本差不多。 1.5.cue/toc cue/toc不是音乐文件,他们是用于flac/ape等光盘的音轨定义。一个CD可以有多个音轨,iso会记录下音轨的切分方式。但是ape就不行了。于是eac等抓轨软件生成cue来切分音乐文件。往往看到ape的发行方式是一个ape和一个cue,直接打开ape往往是一首非常长的歌曲。其实切分信息在cue里面。虚拟光驱使用的bin文件也是一样,会有配套的cue文件。两者可以用cuetools和mkcue互相转换。 1.6.wav wav文件又叫做PCM编码格式。这是一切音乐的基础。无论你是哪种格式,最后都会被还原成wav的某种格式或者变形,才能够从声卡中播放出去。当然,midi的情况特殊,不在此列。 1.7.iso iso也不是音乐文件,但是和音乐的关系非常密切。大家都知道iso是光盘的镜像,其实说的还不确切。iso本身就是光盘内容严格1字节比1字节复制的结果。至于有的为什么有其他格式。那就涉及光驱设备工作和数据流/加解密的问题了。 另外说一个iso的问题,大家知道linux下面挂载iso的指令是 # mount -t iso9660 -o loop file /mnt 这其实是两个步骤,一个是

Sep 5, 2006 - 1 minute read - Comments

上海有线通,不爽

最近贝壳要换ISP了。大家知道,贝壳用了5年多的上海有线通。虽然速度不快,偶尔还有降到半速的现象,但是总体来说还是不错的。TTL跃点主要在12到16上下(经过12-16个路由器),极限上传一般在55K/s上下。虽然说和标称有一定区别,不过考虑IP封包头问题,也还可以。只是最近有线通不怎么像话,封了P2P不说,还不告知。去询问,又不承认。幸好贝壳两个月后包年到期,到时就跑了结束。 开始(8.30左右)贝壳的ED速度突然从50K/s持续上传下跌到7K/s持续上传。贝壳以为是电信故障维修,造成数个连线失效,路由重生成后形成瓶颈。这现象照理不会在电信这种大公司发生。不过按照莫菲定律,什么坏事都可能发生。就随他去了。24小时以后,贝壳打电话到96877报修。对方开始说会不会是系统问题,windows新出病毒云云。贝壳两台电脑,平台不一样(Intel和AMD64),系统不一样(WindowsXP和Debian/GNU Linux),所用软件不一样(eMuleVC,BC0.70和aMule)。不会都是出这个问题吧?再说windows出病毒,关linux啥事情? 维修人员看看没法说的通,换了口风。说这种问题不能算是问题,他需要“提交”一下。OK,你本身做维护的,还向谁提交问题?我也不管他,这几天忙,没空和他唠叨。说好好,你提交下看看。 过两天空了,看问题照旧,贝壳坐不住了。莫非我碰到了P2P封锁?贝壳先查看了网络上的评论,说上海有线通有这问题,已经有人在315网上提交了抱怨。贝壳下面做了几个测试。 首先将eMule复制一份,保留原先的配置。然后关闭所有共享,只共享一个文件。名字起的奇怪点,这样就没有别的下载客户了。然后找一个朋友来做下载,速度是5K上下,而且一般有下没上。 然后贝壳打开apache2,共享同一个文件,打开端口映射(ED等软件的端口映射也是做好的,经EtherReal核查没有问题)。下载速度是50K上下,一般有上没下。 再打开BT,勾选其中“加密数据包头”为“优先”。然后在传输测试中,多数客户的速度是2K-3K,但是一个也是BC0.70的客户,本地发起连接,速度高达50K。后面偶尔也会出现这样的客户,估计是因为不是所有BT客户端全支持加密数据包头的。 最后,测试Debian/GNU Linux从ftp.linuxforum.net下载更新的速度。这是ftp和http混用协议,一般在70K以上,最高甚至达到120K。 至此,基本可以下结论,有线通封锁了P2P类软件的使用。 最可笑的是,我再次打电话过去。他们的服务人员开始还跟我念叨机器问题等等。然后我把测试方法一说,他们立刻改口,说从不保证任何P2P类软件的稳定。只保证Http协议的传输速度。什么时候宽带还有条款,说只能保证Http协议的速度了?如果说只衡量HTTP协议速度,那条款应该重新修订。如果说网络速度,一般都是指IP封包的传输速度。或者放松说,底层网络封包的传输速度。有线通此举就是明显的侵权。上述电话可以向有线通查询的,工号7061。 任何愿意起诉有线通的同志,贝壳这里免费提供技术支持,提供有线通的网络数据统计(ntop统计结果)。大家高兴起诉的,贝壳提供声援和支持。并且贝壳郑重表示,有生之年,见到用有线通的就游说用别的宽带,即使他道歉并且解除封锁也不例外。自10月底有线通到期后,贝壳即抽空银行资金,签订解约协议,改用ADSL。