




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、QQ传输文件原理参考QQ传输文件原理参考2010-11-02 14:31QQ传输文件原理参考(来自互联网)QQ的文件发送是怎样的过程呢?通常,发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机,当接收计算机同意接收的确认消息反馈到消息服务器后,消息服务器将据此设置好文件传输对话。随即,发送计算机与接收计算机就会在确定好的端口范围内,建立起TCP或UDP连接开始文件的检索与传输。在默认状态下,QQ优先采用了UDP(User Data Protocol,用户数据报协议)协议传送数据,而对可靠性要求高的数据通讯系统往往使用TCP协议传输数据。与TCP协议不同,UDP协议并不提供数据传送
2、的验证机制-在整个文件传输过程中如果出现数据报的丢失,协议本身并不能作出任何的检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。UDP协议适用于无须应答、要求时效的软件使用,这样的设计正好与QQ追求的目标相符,所以QQ优先使用了此协议进行一切功能应用。但是,由于UDP协议具有不可靠性,常会因种种原因导致消息或数据的发送失败(很多时候会发现发送文件给对方接收时,对方根本收不到要求接收文件的消息。或是发送聊天消息时,对方根本没有收到过消息)。显然,UDP协议由于排除了信息可靠传递机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。QQ在数据传输上更注重实际
3、性能,为了获得更好的使用效果,往往可以牺牲一定的可靠性。因此,使用QQ来传输数据,在很多时候就成了一个不错的选择。一般内网传输首选QQ,速度最快,QQ的文件传输是直接个人对个人,采用P2P的传输方式,具有不需中转的优势。外网速度传输比较强的有网易泡泡、QQ,建议网友们在需要传输文件时选用这两款软件,毕竟它们的服务器都在国内,传输性能要高于外国IM软件。网易泡泡的传输模式为P2S2P(从个人到服务器,再由服务器转发到个人)。这种传输方式虽然需要中转,但是其出色的表现还是不得不让我们用户另眼相看。MSN现在在文件传输方面还是赶不上国产QQ,UC等软件。另外,双方在互传文件时,会受到不同外网的限制(
4、比如电信跟网通),即使在同一局域网内,也会因防火墙设置不同而影响速度,不过QQ自称能穿透一切防火墙,从实际来看,这方面的能力确实不错。笔者一般传文件,首选QQ。总的来说,不管什么软件来传输,都要受到时段的限制。至于双方传送速度不同,原因很多,我由于不太清楚也无法准确回答。你可以根据实际情况分析一下,估计应该和双方各自的防火墙设置及其他环境有关吧。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次对话才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你
5、只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:我想给你发数据,可以吗?,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:可以,你什么时候发?,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:我现在就发,你接着吧!,这是第三次对话。三次对话的目的是使数据包的发送和接收同步,经过三次对话之后,主机A才向主机B正式发送数据。UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过
6、去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用ping命令来测试两台主机之间TCP/IP通信是否正常,其实ping命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次ping操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高
7、。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。tcp协议和udp协议的差别TCP UDP是否连接面向连接面向非连接传输可靠性可靠不可靠应用场合传输大量数据少量数据速度慢快QQ传输文件原理参考(来自互联网)QQ的文件发送是怎样的过程呢?通常,发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机,当接收计算机同意接收的确认消息反馈到消息服务器后,消息服务器将据此设置好文件传输对话。随即,发送计算机与接收计算机就会在确定好的端口范围内,建立起TCP或UDP连接开始文件的检索与传输。在默认状态下,QQ优先采用了UDP(User Data Protocol,用户数据报协议)协议传
8、送数据,而对可靠性要求高的数据通讯系统往往使用TCP协议传输数据。与TCP协议不同,UDP协议并不提供数据传送的验证机制-在整个文件传输过程中如果出现数据报的丢失,协议本身并不能作出任何的检测或提示。因此,通常人们把UDP协议称为不可靠的传输协议。UDP协议适用于无须应答、要求时效的软件使用,这样的设计正好与QQ追求的目标相符,所以QQ优先使用了此协议进行一切功能应用。但是,由于UDP协议具有不可靠性,常会因种种原因导致消息或数据的发送失败(很多时候会发现发送文件给对方接收时,对方根本收不到要求接收文件的消息。或是发送聊天消息时,对方根本没有收到过消息)。显然,UDP协议由于排除了信息可靠传递
9、机制,将安全和排序等功能移交给上层应用来完成,极大降低了执行时间,使速度得到了保证。QQ在数据传输上更注重实际性能,为了获得更好的使用效果,往往可以牺牲一定的可靠性。因此,使用QQ来传输数据,在很多时候就成了一个不错的选择。一般内网传输首选QQ,速度最快,QQ的文件传输是直接个人对个人,采用P2P的传输方式,具有不需中转的优势。外网速度传输比较强的有网易泡泡、QQ,建议网友们在需要传输文件时选用这两款软件,毕竟它们的服务器都在国内,传输性能要高于外国IM软件。网易泡泡的传输模式为P2S2P(从个人到服务器,再由服务器转发到个人)。这种传输方式虽然需要中转,但是其出色的表现还是不得不让我们用户另
10、眼相看。MSN现在在文件传输方面还是赶不上国产QQ,UC等软件。另外,双方在互传文件时,会受到不同外网的限制(比如电信跟网通),即使在同一局域网内,也会因防火墙设置不同而影响速度,不过QQ自称能穿透一切防火墙,从实际来看,这方面的能力确实不错。笔者一般传文件,首选QQ。总的来说,不管什么软件来传输,都要受到时段的限制。至于双方传送速度不同,原因很多,我由于不太清楚也无法准确回答。你可以根据实际情况分析一下,估计应该和双方各自的防火墙设置及其他环境有关吧。TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立
11、可靠的连接。一个TCP连接必须要经过三次对话才能建立起来,其中的过程非常复杂,我们这里只做简单、形象的介绍,你只要做到能够理解这个过程即可。我们来看看这三次对话的简单过程:主机A向主机B发出连接请求数据包:我想给你发数据,可以吗?,这是第一次对话;主机B向主机A发送同意连接和要求同步(同步就是两台主机一个在发送,一个在接收,协调工作)的数据包:可以,你什么时候发?,这是第二次对话;主机A再发出一个数据包确认主机B的要求同步:我现在就发,你接着吧!,这是第三次对话。三次对话的目的是使数据包的发送和接收同步,经过三次对话之后,主机A才向主机B正式发送数据。UDP(User Data Protoco
12、l,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去!UDP适用于一次只传送少量数据、对可靠性要求不高的应用环境。比如,我们经常使用ping命令来测试两台主机之间TCP/IP通信是否正常,其实ping命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息及时反馈回来,那么网络就是通的。例如,在默认状态下,一次ping操作发送4个数据包(如图2所示)。大家可以看到,发送的数据包数量是4包,收到的也是4包(因为对方主机收到后会发回一个确认收到的数据包)。这充分说明了UDP协议是面向非连接的协议,没有
13、建立连接的过程。正因为UDP协议没有连接的过程,所以它的通信效果高;但也正因为如此,它的可靠性不如TCP协议高。QQ就使用UDP发消息,因此有时会出现收不到消息的情况。tcp协议和udp协议的差别TCP UDP是否连接面向连接面向非连接传输可靠性可靠不可靠应用场合传输大量数据少量数据速度慢快主题:信p2p者,得永生(一)开篇此文章的题目来自于当下的两哥之争,本意有调侃之意,但是用在本文,却无此意,我以十分真诚并且后知后觉的态度认定,p2p是未来的主要计算模型。尤其是在视频音频领域,但是将来,p2p一定会拓展到普通的计算上。要解释清楚这个问题,我们得从当下最流行的音频视频p2p软件聊起。先来说说
14、较为简单的一个音频p2p软件,酷狗。酷狗的原型应该是来自于一个国外的公司,名字我已忘记,那家公司也是通过mp3的p2p下载作为主要业务,不过可惜的是在美国mp3因为版权问题非常严重,所以那家公司的最终结局只有一个,就是关门。但是在中国就不一样了,版权问题没有这么严重,或者说相当的不严重,所以酷狗活得很好。这就是国情啊(理论上来讲,酷狗应该也有一些版权问题,可能跟版权商有合作关系,不过大多数的音频应该没有版权问题,这种情况和视频网站是类似的)。下面让我们来看看酷狗的技术实现。以下都是ahuaxuan的猜测,供大家讨论,未必完全正确,也未必完全错误,拿出来和大家探讨。酷狗应该是采用中心的目录服务器
15、结构来实现p2p的功能,也就是说,所有的音频文件的基本信息都会注册到酷狗的中心目录服务器上,那么酷狗的客户端需要下载某个视频的时候,则从中心目录服务器上查找,找到相信的音频信息,每个音频信息都会对应一堆地址,这些地址是其他的拥有该音频的客户端ip。让我们用一张图来描述一下这个问题:这样我们就可以虚拟一个流程出来:1.1号客户端请求中心目录下载服务器,要求下载。2.中心目录服务器通过搜索引擎分词,查询之后,得到一堆id。3.中心目录服务器根据id查找id对应的ip。显然一个id拥有多个ip,是1:n的关系。(很不巧,这首歌2,3号客户机上都有,当然这里并不是应该返回所有的ip地址,而是应选择最短
16、路径的地址返回。让我们来怀念一下dijikstra。4.中心目录服务器返回音频文件的ip列表。5.1号客户机得到两个ip地址,然后分别2号机请求音频的第一段,从3号机请求音频的第二段。即多地址多线程分段下载。6.1号机下载完成之后通知中心目录服务器,这样中心目录服务器关于这个视频又多了一个ip地址供其他客户端下载。这个应该是最概要的流程,接着可以在这个流程上细化。从上图我们可以看到,任何一个客户机既是client,又是server。作为client,它从其他server上下载数据,作为server,它提供数据给其他client下载。所以当我们开着酷狗听歌的时候,其实你的机器就变成了下载服务器了
17、,同样,如果你用的是迅雷,而且一直不把迅雷关掉,那么你的机器就成为专职的下载服务器了。看到这里,我们有理由相信,如果掌握了下列技术,做一个酷狗不是什么难事,括号后面是ahuaxuan的选型。1.搜索技术(lucene)-服务器端2.音频管理系统(java,同时涉及到缓存和数据库系统)-服务器端3.客户端ui编程(最好是mfc之流)-客户端4.下载服务器(c,对windows的io比较熟悉)-客户端正如前面所说,这个只是非常高层次的设计,而且对于有过大型网站系统经验的人来说,1,2点是没有问题的。然后3,4点需要对c/c+比较熟悉的人来做,当然btcomet据说是python写的。所以我也在思考
18、python+c实现客户端的可行性。上面讲到的是基本的整个软件的结构体系,或者称为架构,在high level层面还有一个问题,就是协议的问题,客户端之间相互下载应该使用说明协议,以及客户端和服务器端的交互应该使用什么协议,目前ahuaxuan选择的是bt协议。利用成熟的协议可以减少很多的工作量。或者电驴的协议应该也不错,不过没有深入研究过。tcp udp的区别文章分类:JavaEye TCP-传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据
19、能从一端传到另一端。UDP-用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。UDP与TCP的主要区别在于UDP不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误地到达目的地。UDP在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用UDP。ICQ短消息使用UDP协议发送消息。许多程序将使用单独的TCP连接和单独的UDP连接。重要的状
20、态信息随可靠的TCP连接发送,而主数据流通过UDP发送。TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。记住,较低的网络层会将每个数据包视为一个独立的单元,因此,数据包可以沿完全不同的路径发送,即使它们都是同一消息的组成部分。这种路由与网络层处理分段和重新组装数据包的方式非常相似,只是级别更高而已。为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即ACK)。如果在某个时限内未收到相应的ACK,将重新传送数据包。如果网络拥
21、塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。TCP与UDP的选择如果比较UDP包和TCP包的结构,很明显UDP包不具备TCP包复杂的可靠性与控制机制。与TCP协议相同,UDP的源端口数和目的端口数也都支持一台主机上的多个应用。一个16位的UDP包包含了一个字节长的头部和数据的长度,校验码域使其可以进行整体校验。(许多应用只支持UDP,如:多媒体数据流,不产生任何额外的数据,即使知道有破坏的包也不进行重发。)很明显,当数据传输的性能必须让位于数据传输的完整性、可控制性和可靠性时,TCP协议是当然的选择。当强调传输性能而不是
22、传输的完整性时,如:音频和多媒体应用,UDP是最好的选择。在数据传输时间很短,以至于此前的连接过程成为整个流量主体的情况下,UDP也是一个好的选择,如:DNS交换。把SNMP建立在UDP上的部分原因是设计者认为当发生网络阻塞时,UDP较低的开销使其有更好的机会去传送管理数据。TCP丰富的功能有时会导致不可预料的性能低下,但是我们相信在不远的将来,TCP可靠的点对点连接将会用于绝大多数的网络应用。QQ通信原理-我研究的是QQ2007beta4版本的通信原理,相信之后的版本暂时也不会有改动。1、登陆。不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态。这个TCP连接的远
23、程端口一般是80,采用UDP方式登陆的时候,端口是8000。因此,假如你所在的网络开放了80端口(80端口是最常用端口。就是通常访问Web的端口,禁掉它的话,你的网络对你来说价值已经不大了),但没有屏蔽腾讯的服务器IP,恭喜你,你是可以登陆成功QQ的。2、聊天消息通信。采用UDP协议,通过服务器中转方式。因此,现在的IP侦探在你仅仅跟对方发送聊天消息的时候是无法获取到IP的。大家都知道,UDP协议是不可靠协议,它只管发送,不管对方是否收到的,但它的传输很高效。但是,作为聊天软件,怎么可以采用这样的不可靠方式来传输消息呢?于是,腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海京东代播合同标准文本
- 与拆迁公司拆迁合同样本
- 购房合同范本标准版
- 古诗《宿建德江》教案新部编本
- 危险化学品采购运输装卸储存使用及报废安全管理制度
- 五年级信息技术上册教学计划
- 文明在你我心中主题班会教案
- 燃气工程竣工验收报告
- 科达纪委谈话系统行业解决方案
- 仓房买卖合同样本
- 【行政管理社会调查计划+调查记录表+调查报告5600字】
- 心肺复苏+AED操作考核评分表
- 我的家乡东营广饶旅游宣传介绍
- 英语48个国际音标课件(单词带声、附有声国际音标图)
- 电商运营总监工作的岗位职责与电商运营经理岗位的具体职责
- 国家开放大学国开电大《电商数据分析》终考考核
- 教科版科学四年级下册第二单元《电路》单元作业设计
- 吊篮施工安全管理培训课件
- 《用户体验设计导论》第14章-用户体验质量的测试与评价课件
- 圆的面积(全国一等奖)
- 我国优抚安置政策法规考试试题
评论
0/150
提交评论