以QQ举例 说明计算机网络中的一些概念区别(TCP与UDP,广播与单播)
QQ 中的 广播与单播
今天简单地学习了一下 广播和多播(组播) 的知识。关于 单播和多播 的概念,可以用 QQ 中的一些例子来解释。
单播,就像 两个人聊QQ 一样,信息的接收和传递只在两个节点之间进行。
多播(组播)。采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。
那么在QQ中,可以认为是 在QQ群中发送消息,将消息发送给群组里面所有的成员。而取代了 一个个地 向群组里的每一个成员 发送相同的消息。
QQ 中 TCP 与 UDP 的区别
TCP 和 UDP 简单的区别:
- 1.基于连接与无连接;
- 2.对系统资源的要求(TCP较多,UDP少);
- 3.UDP程序结构较简单;
- 4.流模式与数据报模式 ;
- 5.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
- 6.使用 UDP 传送数据 会快于 使用 TCP 传送数据。(UDP 没有三次握手,窗口机制等等TCP具有的机制)
QQ即时视频
QQ视频 是 QQ 开发的一种 即时通讯功能,通过摄像头完成 “面对面” 的交流。
那么,比如有两位:翔翔(是我的朋友) 和 他的女朋友(唉) 正在通过视频秀恩爱。
首先,翔翔 先发送视频请求,在一段时间之后,他的女朋友确认了,于是乎,他们开始了 “面对面的聊天”。
- 这里用到了 TCP 的相关内容:在收发数据前,必须和对方建立可靠的连接。它是 面向连接 的传输层协议。
于是乎,翔翔和他的女朋友愉快的开始了聊天。突然,翔翔发现 突然黑屏了一下。
这里突然黑屏,是 数据报丢失的结果,那么 这个时候 传输层协议 如果使用的是 TCP 或者 UDP,会是怎么样的场景?
使用TCP
翔翔:哎呀,怎么突然黑屏了,这下怎么办呀,我得等好久。
10min 过去了。(有些夸张,真实情况可能就2-3s,但是如果累积起来的话,就会出现很明显的延迟)
翔翔:终于恢复了,诶,老婆,我刚刚这里黑屏了。
然而,翔翔的女朋友好像在自顾自的说话,“喂喂?你在听吗” 之后挂掉了。
这个时候,翔翔收到了来自女朋友的QQ消息:你这么不在乎我,我们分手吧。
翔翔:5555
使用UDP
翔翔:哎呀,怎么突然黑屏了,这下怎么办呀,我得等好久。
然而,过了没多久,通信又恢复了。
翔翔:不好意思呀老婆,不知道为什么我刚刚这边视频卡住了,你能再说一遍吗?
于是,他们继续愉快的秀了下去。
- 读到这里,可以很明显的看到 UDP 和 TCP 的区别了。TCP 对数据的安全性可谓是做到了极致,但这并不是 即时视频所希望看到的:在 黑屏 也就是数据报丢失了之后,TCP 选择了重新发送,但是 当数据报重新到达的时候,造成了延迟。1s 2s 的区别可能不是很大,但是如果是 不断黑屏 慢慢积累起来的话,就会到人难以忍受的地步了。
- 而 UDP 就不是那么在意数据报的安全性了:丢了就丢了呗,我继续发送。这样的话,虽然丢失了一部分的数据,在例子中,翔翔没有听到那个时候女朋友说了什么,但是没有关系,可以继续愉快的聊下去。
- 因此,在即时数据的通信中,TCP数据的可靠性 反而成了缺点,而UDP这种“无赖式”的发送方法(发了就发了,丢了我不管) 深得开发者的喜爱。
QQ 上传文件
好了,翔翔成功的通过了视频聊天,把他的女朋友约了出来,去吃饭看电影,然后去逛街,压马路,去爬山。翔翔留下了 青春中 最美好的回忆,一起留下的,还有那些诉说着他们感情的照片。
但是,非常可惜的是,翔翔的手机 是 苹果6 16G的,拍了这么多张照片,导致内存已满。无奈的他想到了除了换手机之外,更好的方法:上传到空间相册里面去。
那么此时使用 UDP 和 TCP 的情况会是怎么样的呢?
使用 UDP
翔翔:哎呀,挺快的嘛,500+张照片这么快就传完了。让我看看。
翔翔:???怎么少了这么多张ヾ(。`Д´。) 不行,我一张都不能少!重来!
使用 TCP
翔翔:好慢啊···
1h 过去了
翔翔:终于传好了,让我看看。···恩我很满意,都传上来了,看到一张都没有少我很开心,这么长时间的等待是值得的!
- 上传文件,要确保的是,保证数据的完整性。时间 现在 相比较而言 看起来 并不是那么的重要(毕竟这可是翔翔宝贵的回忆啊,不能丢)。好了,现在 TCP 的 reliable 派上用场了,于是开发者此时选择了 TCP 作为传输层的协议,确保翔翔的照片 一张不落的 上传到空间相册中。而 不管数据丢失的 UDP 同学,就被冷落了。
小结
所以,我们能够从上面的 QQ即时视频 和 上传文件 看到 TCP 和 UDP 的区别:TCP 很可靠,它通过三次握手建立联系,在发送数据的时候在发送端复制一份保存,如果出现数据丢失,会进行重传,非常的可靠。但是 也正是因为它 实现可靠性 的机制太多,导致了速度相对 UDP 较慢一点。而 UDP 速度比起 TCP 来说是更快了,但是它只负责传输数据,并不保证数据能够安全无误的到达,丢了也不管。所以,在开发APP的时候,开发者会根据不同的需求(速度快,或者要求重传 等等) 对 UDP 和 TCP 进行选择。
2016/8/6 七夕前夕(唉)
以QQ举例 说明计算机网络中的一些概念区别(TCP与UDP,广播与单播)的更多相关文章
- TCP/IP中的传输层协议TCP、UDP
TCP提供可靠的通信传输,而UDP则常用于让广播和细节控制交给应用的通信传输. 传输层协议根据IP数据报判断最终的接收端应用程序. TCP/IP的众多应用协议大多以客户端/服务端的形式运行.客户端是请 ...
- 计算机网络中的TCP/UDP协议到底是怎么回事(一)
TCP/IP五层网络结构模型 物理层:物理层建立在物理通信介质的基础上,作为系统和通信介质的接口,用来实现数据链路实体间透明的比特 (bit) 流传输.只有该层为真实物理通信,其它各层为虚拟通信 数据 ...
- 在类似qq或者微信聊天中。如何根据不同的手机发送图片
原文:在类似qq或者微信聊天中.如何根据不同的手机发送图片 前一段时间,公司自己要求做多客服开发,但是对于发送图片这一块,当时很苦恼,我用自己的手机(米2)测试,不管是本地,还是云相册,最新照片. ...
- 《计算机网络 自顶向下方法》 第8章 计算机网络中的安全 Part2
SSL(使 TCP 连接安全) SSL(Secure Socket Layer),即安全套接字层,是对 TCP 的强化 HTTPS 使用 SSL,而 HTTP 不使用 SSL 通过采用机密性.数据完整 ...
- 举例讲解Python中的死锁、可重入锁和互斥锁
举例讲解Python中的死锁.可重入锁和互斥锁 一.死锁 简单来说,死锁是一个资源被多次调用,而多次调用方都未能释放该资源就会造成死锁,这里结合例子说明下两种常见的死锁情况. 1.迭代死锁 该情况是一 ...
- 利用三层交换机实现VLAN间路由(计算机网络中速率、带宽、吞吐量的概念)
1.速率 速率是指计算机网络中的主机在数字信道上,单位时间内从一端传送到另一端的数据量,即数据传输率,也称数据率或比特率.比特(bit)是数据量的最小单位,s(秒)是时间的最小单位.所以速率单位为bi ...
- 【极客思考】计算机网络:Wireshark抓包分析TCP中的三次握手与四次挥手
[摘要]本文重点分析计算机网络中TCP协议中的握手和挥手的过程. [前提说明] 前段时间突然看到了一篇关于TCP/IP模型的文章,心想这段时间在家里也用wireshark抓了点包,那么想着想着就觉得需 ...
- 计算机网络中的TCP/UDP协议到底是怎么回事(二)
上一篇博客阐述了TCP/IP五层网络结构模型以及一些关于TCP.UDP的基础知识,这篇博客会接着写一些关于TCP拥塞控制的算法以及对TCP中常有的疑问进行解答. TCP拥塞控制 首先了解几个概念,为下 ...
- 举例讲解Linux中tcpdump工具的应用
先来看一个比较基本的用法: tcpdump -i eth0 其中,eth0为参数值,表示需要抓包的网口,这是个必需参数哦. tcpdump的具体参数及意义: -i:指定tcpdump监听的网络接口 - ...
随机推荐
- PythonWeb 开发记录(一)
安装Django Sudo apt-get install python-django 验证安装Django成功 创建Django应用程式的方式 创建的是解决方案 ,然后创建的是Hi 模块 运行项目: ...
- jquery 实现iframe 自适应高度
转自: http://www.cnblogs.com/luluping/archive/2009/04/17/1437843.html 超级简单的方法,也不用写什么判断浏览器高度.宽度啥的.下面的两种 ...
- e.printStackTrace() ; 是什么意思?
catch(Exception e){e.printStackTrace() ;} 当try语句中出现异常是时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception ...
- 2.TypeScript 基础入门(二)
变量类型的那些事 1.基本注解 类型注解使用:TypeAnnotation 语法.类型声明空间中可用的任何内容都可以用作类型注解. const num: number = 123; function ...
- C#中DataTable
.C#中DataTable技术学习 2009-09-10 14:37:18 阅读1496 评论0 字号:大中小 订阅 . 1.在DataTable中执行DataTable.Select(" ...
- css样式表--样式表分类
样式表分类 1.内联式.写在body里.控制精确,可重复性差. <body> <div style="color:#90F">更好发挥的返回结果还 < ...
- sql server2012重复执行创建表视图sql及带行号的视图
1.可重复操作(创建表,视图)的sql语句判断 IF EXISTS ( SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[re ...
- ARM中的汇编指令
Arm指令,32位的指令集,一共有16条的基本指令,每条指令都可以按条件执行, 指令都是32bit的,高四位是条件码[31:28], Thumb指令,16位的指令集,执行效率比arm指令集要低,但是节 ...
- VS2010/MFC编程入门之五十二(Ribbon界面开发:创建Ribbon样式的应用程序框架)
上一节中鸡啄米讲了GDI对象之画刷CBrush,至此图形图像的入门知识就讲完了.从本节开始鸡啄米将为大家带来Ribbon界面开发的有关内容.本文先来说说如何创建Ribbon样式的应用程序框架. Rib ...
- 数据仓库基础(九)Informatica小技巧(1)
本文转载自:http://www.cnblogs.com/evencao/p/3148373.html link path:查看某个字段的来源去处,非常有参考的价值.右击你想要看的字段,选择 sele ...