博文

代理服务器(Proxy)完全解析(转帖)(2007-10-12 21:45:00)

摘要:代理服务器(Proxy)完全解析
2002-01-04 10:07:00· 约翰牛· linkwan
http://www.yesky.com/20011130/207727.shtml 相信,提起代理服务器(Proxy)还是有非常多的人关注的,因为无论是在线论坛(bbs)或者是新闻组里面,作为一个撰稿人,我的信箱里也经常收到询问代理服务器为何物,或者如何设置代理服务器这类的问题,所以,我觉得有必要总结一下,把我对代理服务器的认识和在实际应用中各种相关网络应用软件的代理服务器设置告诉大家,这就是本文写就的来由了。    什么是代理服务器(Proxy)?   什么是代理服务器呢?   如果我告诉你,用代理服务器可以免费访问Internet,可以加速访问速度,可以访问无法直接访问的站点,可以部分解决网络IP地址紧缺的问题……,您一定认为,天下哪有这等美事?如果您能耐心看完冗长的本文,您就会确信我说的话毫不夸张,如果应用得当,可以每月为您节省一笔可观的上网费用,就用不着每个月战战兢兢的跑到电信局一五一十的把"血汗钱""捐献"给ISP了。   代理服务器的工作机制   代理服务器的工作机制很象我们生活中常常提及的代理商,假设你自己的机器为A机,你想获得的数据由服务器B提供,代理服务器为C,那么具体的连接过程是这样的。   首先,A机需要B机的数据,A直接与C机建立连接,C机接收到A机的数据请求后,与B机建立连接,下载A机所请求的B机上的数据到本地,再将此数据发送至A机,完成代理任务。   代理服务器存在的理由   或许你要问了,何必这么麻烦呢?A机与B机直接建立不是很好么?请耐心听我讲完,使用代理服务器当然有其存在的合理理由:   1、局域局内没有与外网相连的机器通过内网的代理服务器连接到外网。这个例子,最有说服力的就是小办公室的上网解决方案了,利用办公室原有的局域网,只要简单的利用一根电话线、一个合法帐号(在ISP初申请得到拨号号码和用户名和密码),加上一个简单的代理软件(如Sygate,WinGate,Winrouter)就可以方便的以最小的花费将整个办公室的电脑与互联网络相连接。   2、为了获得更大的速度,通过频宽较大的proxy与目标主机连接。访问台湾部分站点的速度大家相必已经领教过了,如果我们使用一......

阅读全文(4525) | 评论:1

什么是端口?(转帖)(2007-10-12 21:04:00)

摘要:什么是端口?     可以这样说:端口便是计算机与外部通信的途径,没有它,计算机便又聋又哑。     在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由 器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。     那么TCP/IP协议中的端口指的是什么呢?如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口 可以有65536个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。     端口有什么用呢?我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、ftp服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。     需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则 可能使用“3457”这样的端口,如图1所示。   图1     按对应的协议类型,端口有两种:TCP端口和UDP端口。由于TCP和UDP 两个协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突。     现在讲一下什么是端口号,一个端口就是一个潜在的通讯通道,也是一个入侵通道,开放一个端口就是一台计算机在网络上打开了一扇窗户,黑客入侵的方法就是用手工扫描或利用扫描软件找到服务器所开放的端口,去根据其相应的漏洞对服务器进行入侵或攻击,因此对端口的了解是非常重要的。    端口大概分为三类:   1:公认端口(well known ports):范围从0到1023,他们是绑定于一些服务。通常这些端口的通信明确表明了某种服务的协议。其中80端口......

阅读全文(4446) | 评论:2

如何隐藏自己的IP地址?(转帖)(2007-10-12 20:37:00)

摘要:首先说说隐藏真实IP的方法,最简单的方法就是使用代理服务器。与直接连接到Internet相比,使用代理服务器能保护上网用户的IP地址,从而保障上网安全。代理服务器的原理是在客户机和远程服务器之间架设一个“中转站”,当客户机向远程服务器提出服务要求后,代理服务器首先截取用户的请求,然后代理服务器将服务请求转交远程服务器,从而实现客户机和远程服务器之间的联系。很显然,使用代理服务器后远端服务器包括其它用户只能探测到代理服务器的IP地址而不是用户的IP地址,这就实现了隐藏用户IP地址的目的,保障了用户上网安全。而且,这样还有一个好处,那就是如果有许多用户共用一个代理器时,当有人访问过某一站点后,所访问的内容便会保存在代理服务器的硬盘上,如果再有人访问该站点,这些内容便会直接从代理服务器中获取,而不必再次连接远端服务器,因此可以节约带宽,提高访问速度。
    建议您最好用免费代理服务器,寻找免费代理服务器的方法有很多,你可以试试用ProxyHunter(代理猎手),它能自动为您搜索出多个免费代理服务器,并验证各个服务器的连接速度,从而让你选择最佳途径。更重要的是,代理服务器不仅支持浏览软件,而且支持电子邮件、FTP、下载、离线浏览等功能软件,可谓无所不在。【点击下载代理猎手 3.1】。不过这种方法比较费时、费事,建议不到万不得以时还是不用为好。最好的方法是使用现成的免费代理服务器,现在网上有不少网站定期提供最新的免费代理服务器,如这里提供的代理服务器的更新速度就非常快,而且各种类型的代理都有:http://www.emaga.net/8341/myann/index.asp 。建议大家把这个网页放入你的收藏夹,这样你就再也不用为找不到好的免费代理服务器而发愁了。
    找到免费代理服务器后,就可以使用它了。以IE浏览器为例,运行IE,点击“工具”→“Interner选项”,在弹出的“Interner选项”对话框中选择“连接”标签,再点击“设置”按钮,在弹出的对话框中把“对此连接使用代理服务器”前面的框勾选上,然后在“地址”和“端口”栏中填入你找到的代理服务器IP和所用端口即可。
    同时在“高级”设置中你还可以对不同的服务器,例如HTTP、FTP设定不同......

阅读全文(2880) | 评论:0

特殊用途的IP地址介绍(转帖)(2007-10-12 20:26:00)

摘要:特殊用途的IP地址介绍 一、0.0.0.0     严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。       二、255.255.255.255     限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。       三、127.0.0.1     本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。       四、224.0.0.1     组播地址,注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果你的主机开启了IRDP(Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该有这样一条路由。       五、169.254.x.x     如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Wingdows系统会为你分配这样一个地址。如果你发现你的主机IP地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。     ......

阅读全文(1915) | 评论:0

什么是IP地址?(转帖)(2007-10-12 20:25:00)

摘要:随着电脑技术的逐步普及和因特网技术的迅猛发展,学习因特网、利用因特网已不再是那些腰缠万贯的大款和戴者深度眼睛的专业技术人员的专利,它已作为二十一世纪人类的一种新的生活方式而逐步深入到寻常百姓家。谈到因特网,IP地址就不能不提,因为无论是从学习还是使用因特网的角度来看,IP地址都是一个十分重要的概念,INTERNET的许多服务和特点都是通过IP地址体现出来的。   一、IP地址的概念     我们知道因特网是全世界范围内的计算机联为一体而构成的通信网络的总称。联在某个网络上的两台计算机之间在相互通信时,在它们所传送的数据包里都会含有某些附加信息,这些附加信息就是发送数据的计算机的地址和接受数据的计算机的地址。象这样,人们为了通信的方便给每一台计算机都事先分配一个类似我们日常生活中的电话号码一样的标识地址,该标识地址就是我们今天所要介绍的IP地址。根据TCP/IP协议规定,IP地址是由32位二进制数组成,而且在INTERNET范围内是唯一的。例如,某台联在因特网上的计算机的IP地址为: 11010010 01001001 10001100 00000010    很明显,这些数字对于人来说不太好记忆。人们为了方便记忆,就将组成计算机的IP地址的32位二进制分成四段,每段8位,中间用小数点隔开,然后将每八位二进制转换成十进制数,这样上述计算机的IP地址就变成了:210.73.140.2。   二、IP地址的分类     我们说过因特网是把全世界的无数个网络连接起来的一个庞大的网间网,每个网络中的计算机通过其自身的IP地址而被唯一标识的,据此我们也可以设想,在INTERNET上这个庞大的网间网中,每个网络也有自己的标识符。这与我们日常生活中的电话号码很相像,例如有一个电话号码为0515163,这个号码中的前四位表示该电话是属于哪个地区的,后面的数字表示该地区的某个电话号码。与上面的例子类似,我们把计算机的IP地址也分成两部分,分别为网络标识和主机标识。同一个物理网络上的所有主机都用同一个网络标识,网络上的一个主机(包括网络上工作站、服务器和路由器等)都有一个主机标识与其对应。IP地址的4个字节划分为2个部分,一部分用以标明具体的网络段,即网络标识;另一部分用以标明具体的节点,即主机标识,也就是说某个网络中的......

阅读全文(2514) | 评论:0

灌水问题——经典智力题推而广(转帖)(2007-04-10 10:36:00)

摘要:原文地址http://www.oursci.org/ency/math/002.htm
倒水问题的经典形式是这样的:

  “假设有一个池塘,里面有无穷多的水。现有2个空水壶,容积分别为5升和6升。问题是如何只用这2个水壶从池塘里取得3升的水。”

  当然题外是有一些合理的限制的,比如从池塘里灌水的时候,不管壶里是不是已经有水了,壶一定要灌满,不能和另一个壶里的水位比照一下“毛估估”(我们可以假设壶是不透明的,而且形状也不同);同样的,如果要把水从壶里倒进池塘里,一定要都倒光;如果要把水从一个壶里倒进另一个壶里,也要都倒光,除非在倒的过程中另一个壶已经满了;倒水的时候水没有损失(蒸发溢出什么的)等等等等。

  事实上,要解决上面这题,你只要用两个壶中的其中一个从池塘里灌水,不断地倒到另一个壶里,当第二个壶满了的时候,把其中的水倒回池塘里,反复几次,就得到答案了。以5升壶(A)灌6升壶(B)为例:

     A  B
     0  0 
     5  0  A→B 
     0  5 
     5  5  A→B 
     4  6 
     4  0  A→B 
     0  4 
     5  4  A→B 
     3  6

  现在我们问,如果是多于2只壶的情况怎么办(这样一来就不能用上面的循环倒水法了)?如何在倒水之前就知道靠这些壶是一定能(或一定不能)倒出若干升水来的?试举数例:
  1) 两个壶:65升和78升,倒38升和39升。
  2) 三个壶:6升,10升和45升,倒31升。

  我们可以看到,在1)中,65=5×13,78=6×13,而39=3×13。所以如果把13升水看作一个单位的话(原题中的“升”是没有什么重要意义的,你可以把它换成任何容积单位,毫升,加仑——或者“13升”),这题和最初的题目是一样的。而38升呢?显然是不可能的,它不是13的倍数,而65升和78升的壶怎么也只能倒出13升的倍数来。也可以这样理解:这相当于在原题中要求用5升和6升的壶倒出38/39升来。

  那么2)......

阅读全文(2182) | 评论:0

编程语言的昨天、今天和明天(转帖)(2006-12-11 15:25:00)

摘要:编程语言的昨天、今天和明天 要明白计算机语言是怎么回事?它是不是就像我们平常说话那样的语言?计算机语言说白了就是我们与计算机打交道的一套规则而已。按这种规则计算机就能听你的话,否则它只能当你是个外国人,你说什么它都不会理你。
    计算机是靠无数的逻辑电路开开合合来运行的,稍微有些物理常识的人都知道,这些物理元器件根本没有智慧,它们识别的只是高、低电位,用二进制的方法来表示,刚好就是1和0。所有我们发给计算机的指令,以及我们保存在计算机内的数据,都要最终转换成一系列的由0和1组成数字串,计算机才看得明白。这些0与1构成的东东就是我们所说的机器语言。
  直接使用机器语言几乎是不可能的,人们于是用一些特定的符号来代替某些操作,然后由专门的转换程序将这些符号转换为机器语言。这种语言相对于机器语言来说,比较容易记忆和学习,被称为符号语言,或汇编语言。
  我们现在经常所说的编程语言,如VB等等,不属于上面所述的范畴,它们被称为高级语言。在这些语言中我们可以写这样的句子:c=a+b,一看就明白,就是将a与b相加,然后将结果给c,非常方便和自然。高级语言不再是面向机器的了。使用它,人们就不用考虑不同机器内部构造的细节,只需关心希望完成的任务的实现方法。显然,计算机肯定不能直接执行这些语言,这里需要编译程序来作转换工作,将这些语言写成的代码转换成机器指令,然后由计算机来执行。高级语言的出现使得计算机软件开发变得更容易,同时推动了计算机的普及。
  还有一种被称为第四代语言的程序语言,这种语言是非过程的。上面所说的几种语言都是过程化语言,意思就是说你想完成什么任务,怎么完成,加减乘除都需要你一步一步地写清楚。而非过程语言就是你只用说做什么,具体怎么做由它来完成。这种语言的代表就是数据库查询语言SQL。
  在基础知识内我们介绍了计算机语言的分类,实际上就是计算机语言的发展简史,这里着重介绍一下高级语言的发展历史。
  世界上最早出现的高级语言是FORTRAN,它适合于数值计算。对于很多初学者来说,这种语言或许非常陌生,高校也逐渐取消了FORTRAN语言的教学。后来出现了很多高级语言,比较流行的有BASIC、COBOL、PASCAL、PL/1和ADA等等,它们中有些只是用于大型机的。实际上在早期,根本......

阅读全文(3681) | 评论:1

计算机语言(转帖)(2006-12-11 15:14:00)

摘要:一篇介绍计算机语言比较好的文章!比较全面!现转载如下: 关键词: VF    VC    VB    Delphi    Java                                          

计算机语言

·VF:
  也写作VFP,Visual FoxPro的缩写,Visual在英语中意为“可视的”,Fox意为“狐狸”,原指美国狐狸数据库软件公司,该公司已被微软公司收购。Pro为Progress的略写,意为“更进一层”。Visual
FoxPro是由Microsoft在FoxPro的基础上推出的功能强大、可视化、面向对象的数据库编程语言,同时它也是一种强大的数据库管理系统。

·VC:
  Visual
C++,微软公司高级可视化计算机程序开发语言。C语言被人们称为近十年来对计算机程序设计最大的贡献之一。它有高级语言简单易用的特性,又可以完成汇编语言才能做的许多工作。因此,C语言特别适合用来编写各种复杂软件。如果说BASIC语言是初学者和业余爱好者的编程语言的话
,那么C语言就是专业人员的编程语言了。

·VB:
  Visual Basic的缩写,微软公司高级可视化计算机程序开发语言。BASIC是Beginner’s All-purpose Sybolic Instruction Code(初学者通用符号指令代码)的缩写,从BASIC开始相继推出了Quick BASIC、Ture BASIC等,目前最新的是Microsoft公司推出的Visual
Basic。这是一种功能极强的面向对象的可视化程序设计语言。

·Delphi:
  读音/′delfai/,特尔斐,古希腊城市名,被古希腊人当成世界的中心,因有阿波罗神殿而出名。在电脑英语中指美国宝兰(Borland)公司的一种可视化......

阅读全文(3987) | 评论:0

计算机语言的发展(转帖)(2006-12-11 15:12:00)

摘要:计算机程序设计语言的发展,经历了从机器语言、汇编语言到高级语言的历程。
1. 机器语言
电子计算机所使用的是由“0”和“1”组成的二进制数,二进制是计算机的语言的基础。计算机发明之初,人们只能降贵纡尊,用计算机的语言去命令计算机干这干那,一句话,就是写出一串串由“0”和“1”组成的指令序列交由计算机执行,这种语言,就是机器语言。使用机器语言是十分痛苦的,特别是在程序有错需要修改时,更是如此。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在另一台计算机上执行,必须另编程序,造成了重复工作。但由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。机器语言,是第一代计算机语言。
2. 汇编语言
为了减轻使用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“A D D”代表加法,“M O V”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。
3. 高级语言
从最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。经过努力,1 9 5 4年,第一个完全脱离机器硬件的高级语言—F O RT R A N问世了,4 0多年来,共有几百种高级语言出现,有重要意义的有几十种。
6 0年代中后期,软件越来越多,规模越来越大,而软件的生产基本上是人自为战,缺乏科学规范的系统规划与测试、评估标准,其恶果是大批耗费巨资建立起来的软件系统,由于含有错误而无法使用,甚至带来巨大损失,软件给人的感觉是越来越不可靠,以致几乎没有不出错的软件。这一切,极大地震动了计算机界,史称“软件危机”。人们认识到:大型程序的编制不同于写小程序,它应该是一项新的技术,应该像处理工程一样处理软件研制的全过程。程序的设计应易于保证正确性,也便于验证正确性。1 9 6 9年,提出了结构化程序设计方法,1 9 7 0年,第一个结构化程序设计语言—P a ......

阅读全文(4473) | 评论:0

如何阅读源代码之四(转帖)(2006-12-06 22:51:00)

摘要:在parse_record分析完数据之后,做日期的分析,把日志中的月份等数据转换成机器可读(可理解)的数据,并存入到log_rec中去。
if ((i>=12)||(rec_min>59)||(rec_sec>59)||(rec_year<1990))
{
total_bad++; /* if a bad date, bump counter */
if (verbose)
{
fprintf(stderr,"%s: %s [%lu]",
msg_bad_date,log_rec.datetime,total_rec);
......
如果日期,时间错误,则把total_bad计数器增加1,并且打印错误信息到标准错误输出。
good_rec = 1;

/* get current records timestamp (seconds since epoch) */
req_tstamp=cur_tstamp;
rec_tstamp=((jdate(rec_day,rec_month,rec_year)-epoch)*86400)+
(rec_hour*3600)+(rec_min*60)+rec_sec;

/* Do we need to check for duplicate records? (incremental mode) */
if (check_dup)
{
/* check if less than/equal to last record processed */
if ( rec_tstamp <= cur_tstamp&nbs......

阅读全文(2846) | 评论:0