以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监听的网络接口 - ...
随机推荐
- zookeeper java调用及权限控制
import java.io.IOException; import java.security.NoSuchAlgorithmException; import java.util.ArrayLis ...
- 智能指针 - 现代C++新特性总结
C++98中的智能指针通过一个模板类auto_ptr来实现,new操作符返回的指针可以交由它来管理,程序员不用再显式的调用delete,这在一定程度上避免了堆内存忘记释放的问题:不过auto_ptr有 ...
- Java多线程的下载器(1)
实现了一个基于Java多线程的下载器,可提供的功能有: 1. 对文件使用多线程下载,并显示每时刻的下载速度. 2. 对多个下载进行管理,包括线程调度,内存管理等. 一:单个文件下载的管理 1. 单文件 ...
- css定位浮动总结
定位:定位在中间,放大缩小时也不会跑偏. position:absolute; top: 50%; left: 50%; margin: -270px 0 0 -455px; 解释:定位后,设百分比的 ...
- !! A股历史平均市盈率走势图
http://value500.com/PE.asp 一. A股历史平均市盈率走势图 *数据来源:上海证券交易所 分享到: 354 - 上海A股 深圳A股更新时间 2017年6月7日 2017年6月7 ...
- HDU 4500 小Q系列故事——屌丝的逆袭(简单题)
http://acm.hdu.edu.cn/showproblem.php?pid=4500 AC代码: #include<math.h> #include<stdio.h> ...
- 020-安装centos6.5后的生命历程
01.配置网络.修改了ifcfg-eth0文件内容. 1)ifcfg-eth0原来的内容如下: 2)ifcfg-eth0配置后的内容如下: 3)然后重启网络服务: 4)测试网络是否可通: 5)查看 ...
- MFC CFile类读写文件详解
CFile类提供了对文件进行打开,关闭,读,写,删除,重命名以及获取文件信息等文件操作的基本功能,足以处理任意类型的文件操作. 一个读写文件的例子: 文件I/O 虽然使用CArchive类内建的序列化 ...
- Object-C-Foundation-NSDate
NSDate 表达日期表达时间的方法 NSDate *now=[NSDate date]; 获得当前日期 NSDate *tomrrow=[now dateByAddingTimeInterval:2 ...
- Data Center Drama 欧拉回路的应用
这题说的是给了n个点 和m条边, 这m条边是无向的,任务是将这些边变成有向的,并且添加最少的有向边使得这个图中每个点的入度为偶数, 出度为偶数. 我们可以考虑使用欧拉回路来解决这个问题,这样说,假如一 ...