1、什么叫即时通信服务(网络安全)?
什么是即时通讯?IM是英文Instant Messaging的缩写,中文翻译成“即时通讯”,根据美国著名的互联网术语在线词典NetLingo的解释,其定义如下:“Instant Messaging(读成I-M)缩写为IM或IMing,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,被很多人称为电子邮件发明以来最酷的在线通讯方式,典型的 IM是这样工作的:当好友列表(buddy list)中的某人在任何时候登录上线并试图通过你的计算机联系你时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话并键入消息文字进行交流。 IM被认为比电子邮件和聊天室更具有自发性,甚至你能在进行实时文本对话的同时一起进行WEB冲浪(surf)。目前有多种竞争的IM服务,不幸的是没有标准:即你想与之进行即时通讯对话的人必须使用和你一样的IM系统。另一个不利因素是IM还没有为安全性使用目的而设计。”
除NetLingo的定义之外,还有一些其他定义,但由于NetLingo在互联网专业词汇释义方面具有比较大的影响,因此基本上都以此定义作为基础,同时NetLingo是在线更新的词典,它会经常针对互联网技术的变化对词汇释义进行修改,在本文中对即时通讯的定义就是最新的,以前的定义中并没有对标准化或者安全问题进行过相关说明。考虑到这些因素,本文将基于此定义进行研究。
即时通讯的出现和互联网有着密不可分的关系,从技术上来说,IM完全基于TCP/IP网络协议族实现,而TCP/IP协议族是整个互联网得以实现的技术基础,最早期的即时通讯雏形可以追溯到芬兰人Jarkko Oikarinen于1988年发明的一种网络聊天协议IRC(Internet Relay Chat),该协议仅支持文本聊天,并且也不支持好友列表的概念,1996年第一个 IM产品ICQ发明后,即时通讯的技术和功能开始基本成型,其工作原理开始被人们所了解,但不同厂商实现即时通讯技术原理时采用的协议却有较大的差异,甚至到目前为止世界主要的 IM服务运营商AOL(American Online:美国在线)仍然没有公布其主要即时通讯产品AIM(American Instant Messenger)的专用协议。虽然如此,但我们仍然可以从一个提供最基本服务的 IM系统开始来描述IM的技术原理,不管目前产品的新功能如何丰富,它必须遵循这些基本原理和结构。
首先,用户A输入自己的用户名和密码登录即时通讯服务器,服务器通过读取用户数据库来验证用户身份,如果用户名、密码都正确,就登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在 IM系统中的状态为在线(Online Presence)。
其次,根据用户A存储在IM服务器上的好友列表(Buddy List),服务器将用户A在线的相关信息发送到也同时在线的即时通讯好友的PC机,这些信息包括在线状态、IP地址、 IM客户端使用的TCP端口(Port)号等,即时通讯好友PC机上的即时通讯软件收到此信息后将在PC桌面上弹出一个小窗口予以提示。
第三步,即时通讯服务器把用户A存储在服务器上的好友列表及相关信息回送到他的PC机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的PC机上的IM客户端收到后将显示这些好友列表及其在线状态。
接下来,如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不通过 IM服务器中转,而是通过网络进行点对点的直接通讯,这称为对等通讯方式(Peer To Peer)。在商用即时通讯系统中,如果用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢, IM服务器还提供消息中转服务,即用户A和用户B的即时消息全部先发送到IM服务器,再由服务器转发给对方。早期的IM系统,在IM客户端和IM服务器之间通讯采用采用UDP协议,UDP协议是不可靠的传输协议,而在 IM客户端之间的直接通讯中,采用具备可靠传输能力的TCP协议。随着用户需求和技术环境的发展,目前主流的即时通讯系统倾向于在即时通讯客户端之间、即时通讯客户端和即时通讯服务器之间都采用TCP协议。
2、为什么登陆客户端 输入ID密码以后老是提示IM服务器连接失败,请检查网络连接呢?
1.网线或者锚可能没接好
2.路由器没设置好
3.网络连接属性没有设置对
第三个很多人都有遇到,在刚刚开始的时候。
4.主服务器还为与你那边连接上,需打电话到当地办理处咨询
3、如何搭建一个linux的im追踪服务器
1、检查系统密码文件首先从明显的入手,查看一下passwd文件,ls –l /etc/passwd查看文件修改的日期。
awk –F: ‘length($2)==0 {print $1}’ /etc/shadow
2、查看一下进程,看看有没有奇怪的进程
重点查看进程:ps –aef | grep inetd
inetd是UNIX系统的守护进程,正常的inetd的pid都比较靠前,如果你看到输出了一个类似inetd –s /tmp/.xxx之类的进程,着重看inetd –s后面的内容。在正常情况下,LINUX系统中的inetd服务后面是没有-s参数的,当然也没有用inetd去启动某个文件;而solaris系统中也仅仅是inetd –s,同样没有用inetd去启动某个特定的文件;如果你使用ps命令看到inetd启动了某个文件,而你自己又没有用inetd启动这个文件,那就说明已经有人入侵了你的系统,并且以root权限起了一个简单的后门。
输入ps –aef 查看输出信息,尤其注意有没有以./xxx开头的进程。一旦发现异样的进程,经检查为入侵者留下的后门程序,立即运行kill –9 pid 开杀死该进程,然后再运行ps –aef查看该进程是否被杀死;一旦此类进程出现杀死以后又重新启动的现象,则证明系统被人放置了自动启动程序的脚本。这个时候要进行仔细查找:find / -name 程序名 –print,假设系统真的被入侵者放置了后门,根据找到的程序所在的目录,会找到很多有趣的东东,
接下来根据找到入侵者在服务器上的文件目录,一步一步进行追踪。
3、检查系统守护进程
检查/etc/inetd.conf文件,输入:cat /etc/inetd.conf | grep –v “^#”,输出的信息就是你这台机器所开启的远程服务。
一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh 替换掉in.telnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。
4、检查网络连接和监听端口
输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。
输入netstat –rn,查看本机的路由、网关设置是否正确。
输入 ifconfig –a,查看网卡设置。
5、检查系统日志
命令last | more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。
在linux下输入ls –al /var/log
检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法。
6、检查系统中的core文件
通过发送畸形请求来攻击服务器的某一服务来入侵系统是一种常规的入侵方法,典型的RPC攻击就是通过这种方式。这种方式有一定的成功率,也就是说它并不能100%保证成功入侵系统,而且通常会在服务器相应目录下产生core文件,全局查找系统中的core文件,输入find / -name core –exec ls –l {} \; 依据core所在的目录、查询core文件来判断是否有入侵行为。
7、检查系统文件完整性
检查文件的完整性有多种方法,通常我们通过输入ls –l 文件名来查询和比较文件,这种方法虽然简单,但还是有一定的实用性。但是如果ls文件都已经被替换了就比较麻烦。在LINUX下可以用rpm –V `rpm –qf 文件名` 来查询,查询的结果是否正常来判断文件是否完整。
4、手机出现im服务器切换中
据我所知,在MSN系统中,Client首先会连接一个固定的服务器,此服务器会返回一个新的连接服务器地址给Client,而后Client会重新连接到新的务器地址并开始登录。我想这样做是服务器端做到一个负载平衡的功能,也就是说有一个负载平衡服务器,有多个登录服务器。最终Client保持连接的是登录服务鳌
但是如果ClientA连接的是登录服务器A,而CientB连接的是登录服务器B,而ClientA和ClientB是好友,他们的在线状态是怎么得到的?
如果Client的数量比较少,那么登录服务器之间可以传递消息告知对方。但是当上万或者更多的时候。就不应该这样处理了。
那么有什么方式来实现类似的服务器网络结构中Client之间在线状态的实时显示呢?
(wyu2000 AT gmail.com)
正是我现在要面对的问题.
我现在准备采取的策略是:
由客户端主动通知好友。
A 连接到 Login Server A 后。
我们假设A已经从主服务器获得了 好友列表,以及好友状态。
那么A可以主动发送LoginServerA 通知 在线好友B。
LoginServer的通知过程可以用如下方法:
ServerA,检索到好友B的登陆服务器(可以向主服务器请求Client B的登陆服务器,或者可以采用特定的ID算法,根据用户的ID计算出用户B的登陆服务器)
ServerA 发送一个ClientA登陆的消息给Server B,要求ServerB将该消息,转发给 Client B
大家给点意见。
目前我做的IM系统是通过服务器之间转发实现的,想想也没什么更好的办法,理论上每个Server可以达到几万,不过现实中,只有几十个用户/台。
引用
我提个方案:
首先做以下假设:
(1)维护100万在线用户的状态需要多大的内存空间?
(2)从100万在线用户中检索出自己需要的数据需要多少时间?
第一个问题我们可以这样来定性:
设每用户占用的内存空间为:
SessionID会话标识(int)+AccountID用户账号ID(int)+loginTime登录时间(long)+其它状态(假设用4个byte型幢昝4个状态)=20字节
100万用户*20字节=20,000,000(字节)=19,531.25K==19M(约)
注:一条记录就表示一个在线用户;
(我靠,我的计算是不是有错误,一台386的内存都够了.....)
看上去,似乎用一台服务器做状态服务器是没有什么问题的;
第二个问题,我们这样来定性:
假设在服务器端的内存中使用如hashTable这样的存储结构来保存用户的会话状态,hashTable的读操作为0/m复杂度,从100万个记录中读取一条锹嫉难爸肥奔淠鞘窍嗟钡目斓,快到无法用毫秒来计算,只能用tick(一个CPU的时钟滴答)来计算。1个毫秒=10,000个tick(毫微秒),(has环Table的操作平均值是多少我没有统计过不好意思。我就猜个值吧:假设平均为100个tick),如果每次存取hashtable要花费100Tick,另庠诩由弦恍┮滴翊淼氖奔洌桶床僮饕淮问荼硪1个毫秒来计算吧。
那么1秒钟的时间内就可以处理1000次用户的查询操作;
问题是如果100万用户同时来查询我们该怎么办?
我想可以做负载均衡及服务器集群,当然还要涉汲到网络接口的流量限制,说来就话很长了。
总之,第二个问题看起来,似乎是我们可以通过其它的手段将单台服务器无法处理的工作量分摊到多台服务器中去进行;
于是可以得出第一个背景结论:
设置一台服务器将其做为用户状态服务器,用于记录系统中所有用户是否在线等状态信息;通过对服务器制作集群来分摊访问压力;
现在我们就可以做以下比较形象的结论和假设了:
(1)一个用户要查询自己所有好友的在线状态,那么这个用户向刚才所说到的状态服务器发送一条查询消息,服务器可以很快的返回用户的状态给客户;
(2)用户在登录系统后通知状态服务器自己已经登陆了。
(3)用户如果从某台具体的功能服务器掉线后,则由这台服务器通知状态服务器用户掉线;
(4)用户可能会在多台功能服务器中来回切换,由客户端与服务器端共同协作以判断用户是为否掉线;
(5)用户定期向状态服务器报告自己的存活状态,如果长时间不报告,则状态服务器把用户从自己的内存状态表中删除;
以上我的瞎解,不一定对,必竞自己没有做过,仅供参考。
5、IM软件原来的测试IP 是127.0.0.1,我们要上服务器使用,请问这个域,怎么修改
127.0.0.1是保留地址,是每台机子的保留地址,客户端你测这个地址当然通了,因为每台机子都有这个保留地址,我不知道这个IM软件的用法,我觉得哥们你被骗了。
6、100万用户同时在线IM通讯系统需要多大容量服务器?服务器配置 购买服务器 服务器容量
100万人及以上的及时通信系统
对于服务器本身都的要求都不是最重要的了,那只是你的这个整体方案中的一部分了,最主要的就是整体系统的搭建
现在主流的这种网络应用解决方案主选品牌只有IBM DELL HP 三种
要搭建这个主要需要的设备有:1,中心数据存储,不建议光纤SCS数据传输方式,现在主流的这种类型主要都是使用ISCS链接,成本低速度也不逊色光纤;2,交换机;3,服务器;4,终端机
可以去www.dell.com.cn里面去看下各种产品的资料
因为我也只是比较了解戴尔的产品所以就简单的用戴尔的来介绍下
中心数据存储,如果预算充足是可以考虑下DELL的目前全球最先进的EQL系列产品,如果普通的话直接用MD3000I系列还是不错的,用MD3000I做数据储存阵列,利用ISCS 通过交换机链接到前段服务器,服务器可以考虑主流的R710系列或者更高端的R900
这样一套下来,如果还要做双机热备,容灾我想应该不用了,MD3000I按照8台来算,交换机4台,前段服务器至少10台,终端PC机器根据具体需求来配置,其中还要配置软件
这样预算下来的话大约在150万-180左右
其实这个只是一个大众化的解决方案
有兴趣了解的话可以留下你的联系方式,深入探讨下
7、什么是IM软件
IM是Instant Messaging的缩写,中文名:即时通讯软件。
即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:微信、QQ、百度HI 、Skype 、Gtalk、新浪UC、MSN等。
即时通讯功能,你可以知道你的亲友是否正在线上,及与他们即时通讯。即时通讯比传送电子邮件所需时间更短,而且比拨电话更方便,无疑是网络年代最方便的通讯方式。
(7)im服务器扩展资料
最早的即时通讯软体是ICQ,ICQ是英文中I seek you的谐音,意思是我找你。四名以色列青年于1996年7月成立Mirabilis公司,并在11月份发布了最初的ICQ版本,在六个月内有85万用户注册使用。
早期的ICQ很不稳定,尽管如此,还是受到大众的欢迎,雅虎也推出Yahoo! pager,美国在线也将具有即时通讯功能的AOL包装在Netscape Communicator,而后微软更将Windows messenger内建於Microsoft Windows XP作业系统中。
8、普通服务器可以作为im(即时通讯)服务器吗
可以啊,看您的需求,可以租用不同的配置,大部分需求都是可以满足的哦。我就是做服务器这款的
9、服务器的im是什么,在哪重启
stantMessaging(即时通讯,实时传讯)的缩写是IM,这是一种可以让使用者在网络上建立某种私人聊天室(chatroom)的实时通讯服务。大部分的即时通讯服务提供了状态信息的特性——显示联络人名单,联络人是否在线及能否与联络人交谈。目前在互联网上受欢迎的即时通讯软件包括百度hi、QQ、MSN Messenger、AOL Instant Messenger、Yahoo! Messenger、NET Messenger Service、Jabber、ICQ等。
天互数据 为您解答,希望能帮到你
10、请问架设一个支持1万用户同时在线的IM通信系统需要什么样的服务器?
普通配置即可,100M独享带宽足够,电信线路,这个就是基本要求.