2007年3月19日

TCP协议理解之二

原来看到的一篇文章,个人感觉比较好,转一下。

首先,TCP协议在能够发送数据之前就建立起了“连接”。要实现这个连接,启动TCP连接的那一方首先将发送一个SYN数据包。这只是一个不包含数据的数据包,然后,打开SYN标记。如果另一方同时在它收到SYN标记的端口通话,它将发回一个SYN+ACK:SYN和ACK标志位都被打开,并将ACK(确认)编号字段设定为刚收到的那个数据包的顺序号字段的值。接下来,连接发起方为了表示收到了这个SYN+ACK信息,会向发送方发送一个最终的确认信息(ACK包)。这种SYN、SYN+ACK、ACK的步骤被称为TCP连接建立时的“三次握手”。在这之后,连接就建立起来了。这个连接将一直保持活动状态,直到超时或者任何一方发出一个FIN(结束)信号。
  任何一方都可以关闭一个TCP连接,要求双方发送一个FIN信号关闭自己的通讯频道。一方可以在另一方之前关闭,或者双方同时关闭TCP连接。因此,当一方发送一个FIN信号时,另一方可发送“FIN+ACK”,开始关闭自己一方的通信并且确认收到了第一个FIN信号。发送第一个FIN信号的人接下来再发送一个“FIN+ACK”信息,确认收到第二个FIN信号。另一方就知道这个连接已经关闭了,并且关闭了自己的连接。发送第一个FIN的人没有办法收到最后一个ACK信号的确认信息。这时它会进入“TIME_WAIT”(等待时间)状态并启动一个定时器,防止另一方没有收到ACK信息并且认为连接仍是打开的。一般来说,这个状态会持续1至2分钟。
  现在,我们来讨论一个问题。如果有人(假如一个黑客)在你的Web服务器上留下一个半开或者半关的连接,那就是一个坏消息。每一个连接都要消耗内存,打开数千个虚假的TCP连接可能导致服务器瘫痪。当然,你实际上不可能在不影响TCP正常工作的情况下调整TCP定时器。如果你听说过TCP SYN 攻击的话,那就是这个意思。为了防止出现这种情况,大多数操作系统都要限制半开连接的数量。例如,Linux默认的限制一般是256个。
  下面我们将讨论关于持续流控制问题。TCP中实现它的机制是TCP滑动窗口机制。TCP协议使用“重新发送与正向ACK”来保证数据传输的可靠性。发送方将等待一段时间,如果没有收到其发送的数据包的ACK确认信息,发送方就要重新发送。顺便说一下,TCP协议中有许多定时器。这只是其中一个定时器。ACK的概念对于流控制是非常重要的,因为TCP滑动窗口协议使TCP的往复确认变得更有效率。如果TCP要发送一个数据包并且等待每一个ACK确认信息,它实际上就把数据吞吐量削减了一半。
理想的情况是,我们能够一次发送许多数据包,然后等待收到一个确认收到全部数据包的ACK信息,而不用对方发来更多的数据。但是,我们如何知道发送了多少个数据包呢?TCP窗口尺寸可以控制在“已发送但是没有确认”的状态下能够容纳多少个数据包。如果这个窗口尺寸很大,我们不必等待ACK信息就可以发送大量的数据包。这实际上就是流控制。
  接收方就是控制窗口大小的那一方。如果接收方将窗口大小设为“0”,那么,发送方根本就不能发送任何数据。如果这个窗口的尺寸是“1”,那么,我们就回到了简单的“发送和等待ACK”的协议。如果最后的窗口尺寸是“0”,发送者将发出一个探测信号以搞清这个窗口什么时间再次打开。如果发送方从来没有收到ACK信息,它就一直不断地重试,直到定时器过期。请记住,这个窗口尺寸在TCP头中是一个16位字段。如果你要一个窗口尺寸(按字节计算)大于16位可以表示的容量(2的16次方个字节),还可以使用一个名为“窗口缩放”的TCP协议选项。这个选项允许窗口尺寸乘以比例因子。如果没有极大的窗口尺寸,TCP协议就就无法充分利用GB级别的高速连接。这也是我们需要针对这些新的高速连接调整TCP参数的原因,
  关于TCP流控制的问题,我们不能不提一下Nagle算法。如果我们在一个telnet连接上使用一个大的TCP窗口会发生什么事情呢?你会输入一个指令(例如敲了一个字母),然后一直等待回应它却迟迟不出现在终端回显上。这对于实时通信来说是一个大问题。而且,telnet也会增加网络的阻塞度,因为一个字节的数据(例如我们的一次击键)需要40个字节的包头。于是RFC 896定义这个Nagle算法,用以消除小的数据包。这个思路是我们应该在数据发送之前给先把小数据集中起来然后一次性发送,以便提高效率。为了更有效率,它还限定只允许存在一个未经确认的数据段,你在得到确认信息之前不能发送更多的数据。Telnet和互动SSH连接使用TCP_NODELAY套接口选项启用这个功能,这样当你按下一个按键的时候,你能够立即得到一个回应。
  当然,我们仍是忽略了有关TCP协议的许多事情。然而,通过这两篇文章的了解,你应该能够理解其它一些更专业的TCP著作。阻塞控制与流控制不同,本文没有讨论。如果你真的对了解TCP协议的全部工作原理感兴趣,你可以详细阅读TCP RFC。
  小结
  TCP协议非常善于解决流控制问题,因此非常适应于许多应用程序。TCP协议中的流控制的含义是:“在收到对发送的数据的确认信息这前,我可以发送多少数据?”这就是TCP窗口。需要指出的是,在TCP协议之下连接速度开始很慢,然后速度逐渐加快。这个做法并不总是最理想的。

2007年3月17日

Bash下生成随机数的小脚本

近日工作需要遂研究,现共享之:

#!/bin/sh
while true
do
# get 0-30 rand num
SLEEP_TIME=`expr $RANDOM % 30`
echo $SLEEP_TIME
sleep 1
done

#^_^

Google Rebang!?

近日在google黑板报上看到了一些关于google热榜的介绍,过去看看后发现是一个类似分类的Zeitgeist+Trend服务,是否以后能够添加诸如:个人热帮榜的个性化功能呢?呵呵~~看来google在不断的提供给广大的中国用户大杂烩式的服务的同时在极力的寻找打开中国市场的最好方法。记住:用户就是一切呀!!

新兴的社会化交友社区

据称是去年亚洲区google搜索排行榜第二名:http://www.friendster.com/。看来市场的根本规律就是需求决定一切呀!!

介绍一个比较好的欧美电影评论网站

在这里:http://www.slashfilm.com/
网站主要介绍欧美流行电影,评论,片花介绍等,个人感觉基本与目前影片拍摄同步,并且在上映后还有介绍哪里可以免费xxx。呵呵~~去看看吧。

2007年3月16日

SEO指南系列1: 15分钟SEO>>1-1关键词优化

近日看到一系列介绍有效检查影响网站在主流搜索引擎排名的文章,特翻译并共享之^_^
系列一:15分钟SEO

下面是关于可能影响你在Google,MSN,Yahoo!排名的检查清单。清单中包含正确的,错误的,以及一些中立的要点,因为这些都是真实存在的。绝大多数要点都使用于Google,部分适用于MSN,Yahoo!以及其他的非主流搜索引擎。
更多的细节我会在稍后的翻译文章中进行详细介绍敬请期待"SEO 指南系列二"^_^

第一部分:关键词优化


注:权重代表此项对于搜索引擎的效果,当分数为正时分越过说明越重要,当分数为负时分数越低说明负面效果越大,分数为0是表示中立/不确定结果。

编号:1
要点:Keywords in title tag
内容:这是放置关键词最重要的位置之一,因为所有在“title”标志里面写的都将以你的页面标题显示在搜索结果中。标题必须简洁,至多6到7个单词,并且标题要尽量靠近页面开始的地方。
权重:+3

编号:2
要点:Keywords in URL
内容:在URL中的关键词效果也非常明显例如:http://domainname.com/seo-services.html,“SEO services”在关键词中表达了你试图得到好的排名,当然,如果你的页面中并不包含这个词,那么不要过分依赖于它(有可能被搜索引擎认为刻意作弊)
权重:+3

编号:3
要点:Keyword density(密度) in document text
内容:另一个你需要注意的因素是关于关键词密度的。. 通常密度在3-7 %是最合适的。
权重:+3

编号:4
要点:Keywords in anchor(锚) text
内容:还有需要特别注意的是站内连接的锚文字,由于假如你有一个包含关键字的锚连接被别人引用了,那么按照规则不仅是你的网站得到了一个投票,而且还包括其中的关键词!!!
权重:+3

编号:5
要点:Keywords in headings (H1, H2, etc. tags)内容:另外一个对于关键词来说非常有意义的地方。但是请小心:你的页面应该的确是关于关键词细节的内容的。
权重:+3

编号:6
要点:Keywords in the beginning of a document
内容:同样也有一定的价值,虽然不如象锚文字或标题之类那么重要,然而也没有必要刻意的去追求段首关键词,重要是在于合理。例如,如果你使用的是表格,那么第一段的文字可能位于表格的中部了。
权重:+2

编号:7
要点:Keywords in alt tags
内容:爬虫是不会理解图像的,但是它的确会在“alt”标记中读取图像的文本描述。
权重:+2

编号:8
要点:Keywords in metatags
内容:更加的不重要,特别是对于google来说。Yahoo! 和MSN却仍然依靠这个东西。所以,如果你需要优化Yahoo!和MSN的搜索就需要考虑这个了。当然,无论如何适当的填写这个也不会对你有所损害,所以最好还是顺便了吧。
权重:+1

编号:9
要点:Keyword proximity
内容:关键词亲近程度主要是度量关键词之间的关联是否很大。最好的情况是关键词之间是可以被理解或有承上启下作用并且他们之间没有其他干扰词语连接。比如:假设你有“dog”在第一段,而“food”在第三段中,这虽然也有一定价值,但是比他们连接在一起的效果就差远了(dog food)。关键词亲近主要在有2个以上关键词组成的关键词短语中。
权重:+1

编号:10
要点:Keyword phrases
内容:出了关键词之外,你可以优化由几个词组成的关键词短语 – 例如:“SEO services”。最好是你所优化的关键词短语目前非常流行,这样你可以使搜索引擎在非常精确的结果中将你显示在其中。
权重:+1

编号:11
要点:Secondary keywords
内容:优化次要关键词可能会成为一个非常有价值的金矿!!因为当所有人都在优化首要关键词是,这里的竞争更小同时可能得到更多展示/点击的机会。例如:“real estate new jersey”可能比 “real estate”只少几千次点击但是如果你在 New Jersey进行优化,你会得到更少,但是却十分精确的目标流量。
权重:+1

编号:12
要点:Keyword stemming(填充)
PS:这里翻译为前缀或者关联词
内容:对于英语来说并不那么重要,因为英语大都有相同的词根(e.g. dog, dogs, doggy, etc.)如果你的页面中有 “dog” ,那么同时你也将从“dogs” 或者“doggy”的查询中得到点击,而如果是其他预言(特别是中文)那么关键词本身和加上其他前缀或关联词语后意思将完全不同,这点要十分牢记!!!(例如:小花和礼花就是截然不同的)
权重:+1

编号:13
要点:Synonyms(同义词)
内容:除了主关键词外还要记得优化关键词的同义词语。这对于英语网站十分有效,同样对那些能够识别同义词的搜索引擎也十分有效。不过中文吗~~~做总是没有坏处的。
权重:+1

编号:14
要点:Keyword Mistypes(拼写错误)
内容:拼写错误十分常见并且如果你知道虽然错误但是已经成为通俗用法的话例如:Christmas and Xmas。你当然可以使用错误的拼写去试着优化它。这也许会得到与正确拼写相比更意想不到的流量(当然也可能更少,这取决于词本身的流行程度)
权重:0

编号:15
要点:Keyword dilution(稀释)
内容:当你在优化的关键词过多时,特别是很多不相关的关键词时将使你的一些关键词在搜索中所发挥的作用大打折扣!!!
权重:-2

编号:16
要点:Keyword stuffing
内容:任何对于关键词人为的过度描述(10%或更多时)你可能被搜索引擎认为成恶意焦点!!!权重:-3

To Be Continued>>1-2连接优化
转载请留名,谢谢

2007年3月15日

个人网站常用小工具分享

呵呵~~本来决定每天就写1篇blog的,可是最近对这个比较上瘾,今天再写一篇吧:介绍一些经常使用的个人网站常用小工具^_^
废话少说,往下看:
1.GOOGLE 排名监测
http://www.cleverstat.com/google-monitor.htm
2.查询关键字使用频率
http://inventory.overture.com/d/searchinventory/suggestion
3.蜘蛛模似器
http://www.webconfs.com/search-engine-spider-simulator.php
4.关键词密度检查
http://www.seotoolkit.co.uk/keyword_density_analyser.asp
5.链接流行度 Link Popularity Checker http://www.seotoolkit.co.uk/link_popularity_checker.asp
6.PR值查询工具
http://www.webrankinfo.com/english/tools/pagerank.php
7.检查Google Dance(检查目前google是否出于每月一次的网页抓取大更新中)
http://www.webrankinfo.com/english/tools/googledance.php
8.Google链接广泛度检测器(Google Backlink Checker)
http://www.webconfs.com/Google-backlink-checker.php
9.搜索引擎抓取页面数量统计器(Search Engine Saturation)
http://www.marketleap.com/siteindex/
10.链接广泛度检测器(Link Popularity Check)
http://www.marketleap.com/publinkpop/
11.相似页面检测器(Similar Page Checker)
http://www.webconfs.com/similar-page-checker.php
12.AdWords关键字工具(查询特定关键词的常见查询及扩展匹配)https://adwords.google.com/select/KeywordSandbox
13.百度特定关键词查询(扩展匹配及查询热度)
http://www2.baidu.com/inquire/dsquery.php
14.关键字使用频率工具(英文)特定关键词的常见查询及被查询次数http://inventory.overture.com/d/searchinventory/suggestion
15.网易关键字搜索热度
http://adpsearch.163.com/find_price.php
16.搜狐关键字搜索热度
http://db.sohu.com/regurl/pv_price/query_consumer.asp
17.域名批量查询
http://www.whois.sc
18.IP转换成域名
http://www.whois.sc/members/reverse-ip.html
希望以上对大家有所帮助

Add the Cool Gadget To Your Blog

http://www.spotplex.com/ release a cool gadget for your blog(can show top5,10 news in blogs......for period of time), if you have been invited by spotplex(If you not, don't worry, send your request mail to him, and easy to get the invite^_^), open the main page of spotplex, click the button below snap:


and you will get this page:


Then decide your choose and click the button "get this widget", you'll get your gadget's code, copy and paste into your blog, finish!!!

上升很快的社会化网络社区

Original is here>>Go


介绍:
以下是目前主流的社会化网络列表:

以下是简单的分析:

上面表格列举了2007年2月上升最快的社会化网络社区,下面我们对其中一些重点进行一些数据分析:从2007年1月到2月间,MySpace的流量增大了10.2个百分点,全年更是增加了107.3个百分点!Buzznet和iMeem是所有20个之中增长最快的,分别达到惊人的148.4%和145.7%!!而这仅仅是从2007年1月到2月间的增长数据!!!另外一些增长比较迅速的还有如:Hoverspot (19.6%),Bebo (up 17.8%)。看来2007年不光是IPTV领域,战火已经迅速燃烧到了前几年还处于探索阶段的社会化网络服务方面,MySpace老大的地位似乎受到了极大的挑战呀~~

Google Talk Gadget


介绍:

Google最近发布了一个可以用于在个人主页服务上面进行聊天的gadget功能,该功能集成了Gtalk的所有Feature,只需简单的将其添加到你的个人主页服务上面就可以使用了。

截图: