以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监听的网络接口 - ...
随机推荐
- 网络密钥交换协议——Diffie-Hellman
Diffie-Hellman算法是一种交换密钥的算法. 它是眼下比較经常使用的密钥交换算法. 这样的算法的优点是能让两台计算机在不安全的网络环境中完毕密钥的交换. 下面是整个算法的过程.当中红色字体表 ...
- Tensorflow(一)
一.安装Ubantu环境 下载ios 网址:http://cn.ubuntu.com/download/ 2.配合虚拟机进行安装环境 虚拟机直接百度下载即可 虚拟机采用 3.配置 4.安装中 5.安装 ...
- RGB颜色参考
实色效果 英文名称 R.G.B 16色 实色效果 英文名称 R.G.B 16色 Snow 255 250 250 #FFFAFA PaleTurquoise1 187 255 255 #BBF ...
- [py]django上线部署-uwsgi+nginx+py3/django1.10
https://github.com/lannyMa/django-uwsgi-nginx.git 单机调试启动-确保项目代码没问题 - 克隆代码进入项目 git clone https://gith ...
- PAT 1045 Favorite Color Stripe[dp][难]
1045 Favorite Color Stripe (30)(30 分) Eva is trying to make her own color stripe out of a given one. ...
- HTTP 教程
HTTP 简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准. HTTP是一个基于 ...
- 机器学习理论基础学习3.4--- Linear classification 线性分类之Gaussian Discriminant Analysis高斯判别模型
一.什么是高斯判别模型? 二.怎么求解参数?
- 查询set、dict、dict.keys()的速度对比
查找效率:set>dict>list 单次查询中: list set dict O(n) set做了去重,本质应该一颗红黑树 (猜测,STL就是红黑树),复杂度 O(logn): dict ...
- JS的增删改查
1.查 <script type="text/javascript"> /** * 查找 已经在html代码中存在的元素 */ /** * document.getEl ...
- Docker深入浅出3-容器管理
docker客户端非常简单,我们可以直接输入docker命令来查看Docker客户端所有的命令项 [root@admin-fxr ~]# docker Usage: docker COMMAND A ...