IM基础

腾讯QQ 1.4 亿在线背后的技术架构 本文还有配套的精品资源,点击获取 简介:腾讯 QQ 作为全球领先的即时通讯软件,其 1.4 亿同时在线用户背后,隐藏着强大的技术架构和创新。本 PPT 文件深入探讨了 QQ 在服务器设计、网络优化、并发处理、数据存储、负载均衡等方面的技术攻关过程,揭示了其如何支持如此庞大的用户规模。 1. 分布式架构 分布式架构是一种将系统功能模块分布在多个计算机或服务器上... 阅读详情
最近做IM的项目,由于在大四的时候曾经开发过一简单的QQ聊天机,现在想把它完善,使之尽量能够用于实际应用中。
   在开发之前,自己想(推理)了一下QQ的工作原理和一些实现细节,发现自己想的、推理的和网上搜索到资料以及师兄的回答几乎一致。
   下面就是我在网上所搜索的资料


一、IM技术概念

  IM技术全称Instant Messaging,中文翻译“即时通讯”,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,是电子邮件发明以来迅速崛起的在线通讯方式。IM的出现和互联网有着密不可分的关系,IM完全基于TCP/IP网络协议族实现,而TCP/IP协议族则是整个互联网得以实现的技术基础。 最早出现即时通讯协议是IRC(Internet Relay Chat),但是可惜的是它仅能单纯的使用文字、符号的方式通过互联网进行交谈和沟通。随着互连网变得高度发达,即时通讯也变得远不止聊天这么简单,自1996年第一个IM产品ICQ发明后,IM的技术和功能也开始基本成型,语音、视频、文件共享、短信发送等高级信息交换功能都可以在IM工具上实现,于是功能强大的IM软件便足以搭建一个完整的通信交流平台。目前最具代表性的几款的IM通讯软件有MSN、Google Talk、Yahoo、Messenger 、腾讯QQ等。 

 二、IM技术原理和工作方式

  典型的IM工作方式如下:登陆IM通讯中心(IM通讯服务器),获取一个自建立的历史的交流对象列表(好友列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流,  从技术上来说,IM的基本技术原理如下:  IM服务器  登陆或注销 登陆或注销  用户A通过列表找到B,用户B获得的消息并与之交谈  通过IM服务器指引建立与B单独的通讯通道  第一步,用户A输入自己的用户名和密码登录IM服务器,服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(Online Presence)。  第二步,根据用户A存储在IM服务器上的好友列表(Buddy List),服务器将用户A在线的相关信息发送给也同时在线的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口(Port)号等,IM好友的客户端收到此信息后将在予以提示。  第三步是IM服务器把用户A存储在服务器上的好友列表及相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。  


 三、IM通讯方式  
1.在线直接通讯  如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不再IM服务器中转,而是直接通过网络进行点对点的通讯,即对等通讯方式(Peer To Peer)。  
2.在线代理通讯  用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢,IM服务器将会主动提供消息中转服务,即用户A和用户B的即时消息全部先发送到IM服务器,再由服务器转发给对方。 
3.离线代理通讯  用户A与用户B由于各种原因不能同时在线的时候,如此时A向B发送消息,IM服务器可以主动寄存A用户的消息,到B用户下一次登陆的时候,自动将消息转发给B。  
4.扩展方式通讯  用户A可以通过IM服务器将信息以扩展的方式传递给B,如短信发送方式发送到B的手机,传真发送方式传递给B的电话机,以email的方式传递给B的电子邮箱等。  早期的IM系统,在IM客户端和IM服务器之间通讯采用UDP协议,UDP协议是不可靠的传输协议,而在IM客户端之间的直接通讯中,采用具备可靠传输能力的TCP协议。随着用户需求和技术环境的发展,目前主流的IM系统倾向于在IM客户端之间、IM客户端和IM服务器之间都采用TCP协议。  即时通讯相对于其他通讯方式如电话、传真、email等的最大优势就是消息传达的即时性和精确性,只要消息传递双方均在网络上可以互通,使用即时通讯软件传递消息,传递延时仅为1秒种  


四、兴起的嵌入式IM工具。 
   传统的IM在统治了互联网即时通讯领域长达十年之久,以其日趋稳定的定能,与较强的用户黏着度,至今仍统治着这个巨大的市场。然而,软件行业的技术精英们,并不满足于此。他们厚积薄发,一直致力于开发出性能更为优越的即时通讯工具。当然,在功能上的不断完善,自然是一个必然的发展方向,在Web2.0时代,如何大力增强用户对网站的黏着度,而不仅仅是对于IM的拥附,已经成为他们的主攻方向了。于是,嵌入式IM工具,应运而生了。  

  相对以往的传统的即使沟通工具,它们需要用户下载软件包,需要用户进行安装。对于拥有IM产品的网站而言,用户在登陆网站后,不能直接使用其IM工具,对于流量与用户的黏着度,都是有一定影响的。因此在IM与网站相互依存的今天,没有哪家网络公司,愿意将IM工具孤立开来。    于是,目前,一种新型的嵌入式IM工具就应运而生了。这种IM工具,不需要下载安装,当用户登陆网页后,该IM直接嵌套在网页中,可以直接使用。   
 而在功能上,则一点也不输于传统的IM,无论是传统的文字沟通的速度与效率,还是近年来越来越成为IM工具必备的音频/视频功能,这种嵌入式IM都能提供非常稳定的传输。更值得一提的是,因为嵌入式IM是嵌套在网页上的,软件供应商,可以根据网站需求,设计出适合网站风格的IM产品。而不是像传统的IM工具,千篇一律,毫无个性可言。   
 目前,这类嵌入式IM在社区、交友、社团及协作等类型的网站上,应用已经较为广泛。在Web2.0时代,将发挥越来越重要的作用。 

QQ的交流通信原理,深入剖析QQ运行机制 QQ是如何通信的,是如何交流的?QQ的通信交流原理。深入剖析QQ的运行机制 立即下载

相关推荐

QQ工作原理--开发IM即时通讯工具

QQ工作原理--开发IM即时通讯工具

QQ原理

 QQ原理   最近开始准备用Java开发QQ,由于在大四的时候曾经开发过一简单的QQ聊天机,现在想把它完善,使之尽量能够用于实际应用中。   在开发之前,自己想(推理)了一下QQ的工作原理和一些实现细节,发现自己想的、推理的和网上搜索到资料以及师兄的回答几乎一致。   下面就是我在网上所搜索的资料一、IM技术概念   IM技术全称Instant Messaging,中文翻译“即时通讯

onezeros的专栏 2323

CloudCompare里那个CSF地面滤波插件,到底怎么用?手把手教你分离点云里的地面

本文详细介绍了如何在CloudCompare中使用CSF地面滤波插件分离点云中的地面数据。通过解析布料模拟滤波算法的核心参数,如布料刚度和网格分辨率,并提供不同地形(城市、丘陵、山地)的适配策略,帮助用户高效处理复杂点云数据。文章还包含实战案例和优化技巧,确保滤波结果的精度和可靠性。

weixin_42548708的博客 221

即时通讯软件(QQ)的工作原理

即时通讯软件(QQ)的工作原理 像QQ一样的聊天软件,这个软件能够发送聊天信息,并且可以编辑聊天内容,而且还要有广告的展示界面以及功能菜单等等。 QQ这个重量级的程序会很复杂么? 其实,只要找到这条主线,那么就清晰多了

大道无形——菜鸟有多菜 高手有多高 3132

Comsol固体力学仿真﹣﹣受均匀内压的厚壁球壳弹塑性分析(加载卸载全流程)

COMSOL固体力学及结构力学仿真较少,故而查询了有关资料,才建立了如下模型。图4 加载卸载全历程中的冯米塞斯应力变化。该有限元模型是通过扫掠而得的结构化网格。图2 加载卸载全历程中的塑型区域变化。图3 加载卸载全历程中的位移应力变化。图6 关键节点第一,第三主应力分布。图5 关键节点应力场与塑性区分布。《弹塑性力学》大作业,记录一下。图1 球体的有限元网格模型。

weixin_62236383的博客 1484

基于Arduino与Velostat的智能鞋垫:DIY足底压力监测系统全解析

压力传感器是物联网和健康监测领域的基础元件,其核心原理是将物理压力转换为可测量的电信号。通过压阻效应,材料的电阻值随压力变化,从而实现压力感知。这项技术为低成本、定制化的健康监测方案提供了可能,尤其在运动分析和康复训练中具有重要价值。本文聚焦于利用Velostat压敏材料和Arduino平台,详细解析如何从传感器制作、信号调理到无线数据传输,构建一套完整的足底压力监测系统。文中深入探讨了传感器阵列构建、信号滤波等关键技术,并针对常见问题提供了实用的解决方案,为创客和开发者实现可穿戴健康监测设备提供了清晰的工

weixin_32818781的博客 400

QQ通信原理及QQ是怎么穿透内网进行通信的?

转载自:http://f543711700.iteye.com/blog/978044 QQ是一个基于TCP/UDP协议的通讯软件 发送消息的时候是UDP打洞,登陆的时候使用HTTP~因为登陆服务器其实就是一个HTTP服务器,只不过不是常用的那些,那个服务器是腾讯自行开发的!!! 一、登录 QQ客户端在局域网内,当你打开QQ登录到QQ服务器时,通过外网,你的客户端与

压碎起重机 2165

2025美赛C题奥运奖牌榜模型(附代码+全保姆教程)Models for Olympic Medal Tables

伟大教练”效应的测量方法定义奖牌变化率:−−​如果变化率显著为正,且超出历史平均增长率,则认为存在“伟大教练”效应。使用统计方法(如t检验)验证教练到来是否带来显著性差异。

博客 6371

AI创作系列第26篇:搭建属于你的IM系统,海狸IM零基础教学视频助你圆梦

海狸IM的零基础教学视频,为每一个想要实现IM搭建梦想的人打开了大门。无论你是经验丰富的开发者,还是完全没有技术背景的普通人,都能通过这套教程,成功搭建属于自己的即时通讯系统。现在就开始行动吧!📺 观看教学视频,学习搭建技巧🛠️ 动手实践操作,体验搭建过程🚀 部署上线系统,实现社交梦想🌟 分享使用体验,帮助更多人记住:你的社交梦想,就在眼前!海狸IM - 让每个人都能拥有属于自己的即时通讯系统零基础教学,从软件安装开始,助你实现IM搭建梦想。

Robert_rh的博客 1043

华为OD机试 - 开源项目热度榜单(Java 2025 C卷 100分)

H = Wwatch X#watch + Wstar X#star +Wfork X#fork +Wissue X#issue +Wmr X#mr H表示热度值,Wwatch、Wstar、Wfork、Wissue、Wmr分别表示5个统计维度的权重,#watch、#star、#fork、#issue、#mr分别表示5个统计维度的统计值。

学Java,找哪吒 1755

【QT开发】web开发,内嵌网页展示和交互工具QWebEngineView类详解及实战应用

QWebEngineView 类为 Qt 应用提供了强大的网页展示和交互能力。通过合理运用其方法、属性和事件,能够创建出功能丰富、用户体验良好的网页浏览界面。在开发过程中,要注意处理常见问题,以确保网页的正常展示和交互效果。

科技改变人类,技术成就未来 2004

IM基础概念和原理

IM基础概念和原理即时通信是什么? 把一个人要发送给另外一个人的消息对象(文字,音视频,文件)通过消息通道(C/S实时通信)进行传输的服务. IP TCP UDP Socket HTTP XMPP的概念 TCP/IP:即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准 TCP UDP :TCP和UDP是传输层协议。 TCP:面向连接,安全可靠,效率稍低。通过三次握手

__Chen的博客 3263

【立创EDA-PCB设计基础】4.模块化布局

本文对本专栏绘制的原理图进行模块化布局,首先进行预布局(将每个模块放一起),然后进行精细化布局(按照原理图来精细化布局)。

嵌入式阿齐Archie 3万+

《程序员的IM之路(一) 基础篇》

1.聊聊通信2.what’s IM?3.基础知识介绍4.IM核心技术介绍5.架构预览6.技术选型1.聊聊通信  什么是通信?我认为,但凡是通信双方通过直接使用器官交流的方式都不是通信,只有通信双方通过某种媒介发生交流才能算通信。按照这个定义,那么,面对面交谈,隔山喊话,打手势都不属于通信的范畴。但是如果借助某种媒介来进行交流,比如纸,电波,光纤,甚至是人,只要符合借助媒介的交流方式,那就是通信。

Mrgong0811的博客 1036

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 286

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

im服务器开发系列,零基础IM开发入门(三):什么是IM系统的可靠性?

本文编写时引用了“聊聊IM系统的即时性和可靠性”一文的部分内容和图片,感谢原作者。1、引言上一篇《零基础IM开发入门(二):什么是IM系统的实时性?》讲到了IM系统的“立足”之本——“实时性”这个技术特征,本篇主要讲解IM系统中的“可靠性”这个话题,内容尽量做到只讲原理不深入展开,避开深层次的技术性探讨,确保通俗易懂。阅读对象:本系列文章主要阅读对象为零IM基础的开发者或产品经理,目标是告诉你“I...

weixin_42321075的博客 504

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于Tars高并发IM系统的设计与实现-基础篇1

InstantMessaging 即时通讯、实时传讯,能以最快的速度把信息从一方传递到另外一方。即时通信系统(IM,Instant Messenger)是一款跨平台(Linux Server,Windows Server),可定制的 P2P 即时通信系统(集成多人视频会议功能),为各行业门户网站和企事业单位提供“一站式”定制解决方案,打造一个稳定,安全,高效,可扩展的即时通信系统.

lanhy999的专栏 1066

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

AI创作系列第25篇:海狸IM视频教程系列 - 从0基础到完整IM系统部署上线

本文介绍了海狸IM视频教程系列,这是一套从零基础到完整部署IM系统的教学资源。教程采用循序渐进的方式,覆盖移动端、PC端、服务端和管理后台的全栈开发,包含详细的操作演示和通俗易懂的讲解。特色包括零基础友好设计、实战项目驱动和技术栈全面覆盖,帮助学习者掌握Go语言微服务、Vue.js框架等核心技术。无论是对IM开发感兴趣的初学者、有创业想法的非技术人员,还是希望提升全栈能力的技术人员,都能通过这套教程实现自己的社交梦想。教程还提供完整的配套资源和社区支持,未来将持续更新优化,跟进技术发展趋势。

Robert_rh的博客 760

私有化IM:企业数据主权基础设施

随着数据泄露频发、法规趋严,企业IM选型从功能丰富度转向数据主权归属。私有化部署可确保数据可控、可审计、可销毁,正成为企业数字化基础设施的标配,并推动信创生态深度融合。

XiaolLinlaile的博客 167

零基础即时通讯IM开发入门(一):什么是IM聊天系统?

本文将带你快速了解一个主流IM系统的应用场景、典型架构、技术特点和功能组成,帮你快速建立对IM系统的主观认知。

75

Android 极光IM-基础篇

本篇为基础篇,这里我就来给大家演示一下如何 完成自定义聊天界面和相关 SDK对接 还有高级篇,为一个功能完整的项目,可供看官选择 首先,我要说极光IM好坑,界面需要自己画,自己去对接API。虽然他给了一个demo,但是那个demo太大,而且不好移植到其他项目里。 这是效果图,画的一般大家见谅,毕竟是我亲手设计 1.配置环境 这一步不是本文重点,我这里只给个链接,大家按照官方文...

z979451341的博客 5019

uniapp app & 腾讯云 IM 基础用户登录发送文本消息

腾讯云 IM 通讯 和 uniapp app的文档理解和项目demo描述

1473

零基础IM开发入门(五):什么是IM系统的端到端加密?

本篇将通俗易懂地讲解IM系统中的端到端加密原理,为了降低阅读门槛,相关的技术概念会提及但不深入展开。

hellojackjiang2011的博客 226

RV32IM指令集:从基础整数运算到高效乘除扩展

本文深入解析RV32IM指令集,涵盖基础整数运算RV32I和高效乘除扩展M。通过实际案例和优化技巧,展示其在嵌入式系统中如何提升运算效率,特别适合传感器数据处理和实时控制应用,体现RISC-V模块化设计的优势。

d6e7f8的博客 933

我的IM - 基础篇[2] - 基于UDP通讯的IM设计[开篇]

我的IM - 基础篇[2] - 基于UDP通讯的IM设计[开篇]

cpcpc的专栏 2003

服务器im协议设计,IM服务器设计-基础

IM做为非常经典的服务器系统,其设计时候的考量具备代表性,所以这一次花几个篇幅讨论其相关设计。主要内容相当部分参考了 一套海量在线用户的移动端IM架构设计实践分享一文,在此之上补充了更好的消息存储设计以及集群设计。整体架构以上架构图中,分为几个部分:客户端:支持IOS、Android系统。接入层:负责维护与客户端之间的长连接。逻辑层:负责IM系统中各逻辑功能的实现。存储层:存储IM系统相关的数据,...

weixin_35860326的博客 1192
上一篇: 关于做Android+J2ee系统集成开发的一点心得
下一篇: Java 线程池的原理与实现
coding_or_coded
博客等级 码龄16年 216粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值