QQ为何采用UDP协议?
https://blog.csdn.net/liusandian/article/details/52238939
登陆采用TCP协议和HTTP协议,
你和好友之间发送消息,主要采用UDP协议,
内网传文件采用了P2P技术。
QQ对于普通用户是采用UDP协议,对于会员用TCP协议
总来的说:
1.登陆过程,客户端client 采用TCP协议向服务器server发送信息,HTTP协议下载信息。登陆之后,会有一个TCP连接来保持在线状态。
2.和好友发消息,客户端client采用UDP协议,但是需要通过服务器转发。腾讯为了确保传输消息的可靠,采用上层协议来保证可靠传输。如果消息发送失败,客户端会提示消息发送失败,并可重新发送。
3.如果是在内网里面的两个客户端传文件,QQ采用的是P2P技术,不需要服务器中转。
具体的:
首先,QQ并不是完全基于UDP实现。
比如在使用QQ进行文件传输等活动的时候,就会使用TCP作为可靠传输的保证。
使用UDP进行交互通信的好处在于,延迟较短,对数据丢失的处理比较简单。
同时,TCP是一个全双工协议,需要建立连接,所以网络开销也会相对大。如果使用QQ语音和QQ视频的话,UDP的优势就更为突出了,首先延迟较小。最重要的一点是不可靠传输,这意味着如果数据丢失的话,不会有重传。因为用户一般来说可以接受图像稍微模糊一点,声音稍微不清晰一点,但是如果在几秒钟以后再出现之前丢失的画面和声音,这恐怕是很难接受的。
TCP和UDP都是传输层协议,QQ的消息为应用层内容,需要通过传输协议封装传输。
TCP为可靠的面向连接协议,建立TCP连接需要两端三次握手协商(双方在线)。
UDP为不可靠的无连接协议,数据传输出去,无需连接两端,确认是否到达(对端可以不在线)。
QQ采用UDP协议提高了消息传输的效率,无需两端建立连接,即使对端不在线也能传输消息。
UDP协议是无连接方式的协议,它的效率高,速度快,占资源少,但是其传输机制为不可靠传送,必须依靠辅助的算法来完成传输控制。QQ采用的通信协议以UDP为主,辅以TCP协议。
由于QQ的服务器设计容量是海量级的应用,一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用UDP协议与客户端进行通讯才能保证这种超大规模的服务。
QQ为何采用UDP协议?相关推荐
- QQ使用了什么通讯协议?为什么要这样做?为什么采用 UDP 协议,而不采用 TCP 协议实现?
登陆采用TCP协议和HTTP协议,你和好友之间发送消息,主要采用UDP协议,内网传文件采用了P2P技术. QQ对于普通用户是采用UDP协议,对于会员用TCP协议 总来的说: 1.登陆过程,客户端cli ...
- 采用UDP协议实现PIC18F97J60 ethernet bootloader
采用UDP协议实现PIC18F97J60 ethernet bootloader 了解更多关于bootloader 的C语言实现,请加我QQ: 1273623966 (验证信息请填 bootloade ...
- 从入门到入土:基于C语言采用UDP协议实现远程控制|详细说明|利用流套接字实现一个简单的远程控制系统|代码展示
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 从入门到入土:基于C语言采用UDP协议实现通信功能的程序
此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...
- 为什么聊天软件一般采用UDP协议
TCP是美国国防部设计的两种传输协议之一,另一种是UDP.UDP是一种不可靠的网络服务,负载比 较小,而TCP则是一种可靠的通信服务,负载相对而言比较大.TCP采用套接字(socket)或者端口 (p ...
- PC基于wifi采用UDP协议实现ESP32无线图传显示在1.44寸屏幕
开发环境:Ubuntu16.04 ESP32:Arduino PC图传:Python3.6.9 首先上python代码 import socket import cv2 import numpy as ...
- 模拟QQ聊天——采用TCP协议的C/S架构实现
模拟QQ聊天,一个服务器处理多个客户端的连接,同时要求各个客户端之间能够自由通信. 本程序采用C/S架构,利用多线程完成. 服务器端: a#include <stdio.h> #inclu ...
- 网络编程 day03 (linux) UDP 协议的传输 与函数 getsockopt setsockopt sendto(经socket传送数据)recvfrom
1.UDP协议的特点 UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议.在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输. 适用情况: 1.发 ...
- 简介 传输层协议——UDP协议
UDP协议: UDP:User Datagram Protocol 用户数据报协议 UDP简介: UDP是一种面向无连接的传输层协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可 ...
最新文章
- mysql数据库从删库到跑路之mysql完整性约束
- C# socket 解析http 协议
- win10雷电3接口驱动_雷电3 ,高速又多用,尽在一个接口
- SIGIR 2019 eBay高精度召回任务挑战赛冠军团队DeepBlueAI技术分享
- Same Sum Blocks
- 今天说说OPPO——OPPO 实时数仓揭秘:从顶层设计实现离线与实时的平滑迁移
- 牛客IOI周赛26-提高组(逆序对,对序列,未曾设想的道路) 题解
- 微信小程序 三元运算 checked
- kax格式怎么导入不了pr_pr如何导入.mogrt文件 pr模板导入教程
- 4-5:TCP协议之确认应答(ACK)机制和超时重传机制
- thymeleaf和freemarker比较
- Python提取.ipynb文件中的Python代码保存为.py文件
- 没有对应的Id ,报空指针异常
- TOB、TOC、TOVC
- Java 多线程:线程池实现原理
- 【LOJ】#3088. 「GXOI / GZOI2019」旧词
- activex 控件 过期,解决“无法注册Flash Player 的ActiveX控件”的问题
- ae怎么卸载已经安装的插件_ae红巨人插件卸载教程!
- 加权平均成本计算公式
- 判断char*是否为utf8编码