突然产生一个疑问,请教一下:
所有连上Internet的pc,不管通过路由器还是直接通过modem上网,都可以通过qq聊天,也就是这些pc之间可以互相通信,那么理论上讲他们应该可以互相ping通的,但实际上大多时候通过路由器上网的pc是不能被ping到的。由于知识有限,这中间我考虑到两个问题,但想不明白。
1)腾讯qq服务器是怎么处理相互之间聊天通信的,我觉得有点像邮件服务器;
2)通过路由器上网是要进行nat转换的,qq是怎么找到对方局域网内机器的,而ping却不行。
突然产生一个疑问,请教一下:
所有连上Internet的pc,不管通过路由器还是直接通过modem上网,都可以通过qq聊天,也就是这些pc之间可以互相通信,那么理论上讲他们应该可以互相ping通的,但实际上大多时候通过路由器上网的pc是不能被ping到的。由于知识有限,这中间我考虑到两个问题,但想不明白。
1)腾讯qq服务器是怎么处理相互之间聊天通信的,我觉得有点像邮件服务器;
2)通过路由器上网是要进行nat转换的,qq是怎么找到对方局域网内机器的,而ping却不行。
1,QQ是UDP连接,每个数据包都要带目的地址和原地址,这和邮件是有点差不多`由于UDP不保证发送的安全,所以有可能消息收不到
2,NAT地址转换有3种形式,QQ用的是同一IP,不同端口对应内网的不同IP,所以,QQ消息发送的消息目的地址都是带端口号的,如果你用过显IP的QQ版本或外挂,你会发现网吧用户的IP都是X。X。X。X:XXXX,后面这个XXXX就是端口号,在NAT中对应的不同的内网IP,而ping只能pingIP,不能ping端口``
1、QQ是基于UDP通信的 是不可靠的 所以速度快 但可能有掉包 就是朋友发了信息给你但你没收到
2、QQ是把信息都给了你的路由器 具体给谁是你的路由器处理的 总的来说就是你们局域网里都是使用外网IP出去的 QQ某种意义上认为是一个人 发下来后路由器根据内网IP再确定是谁的信息