目录

​编辑

前言

开篇

概念补充

直播原理

真实场景

总结


前言

大家好哇!我是爷爷的茶七里香,发现一个很有意思的现象,想必大家也遇到过,我是在跟朋友同时看LOL总决赛直播的时候发现的,当时我跟他连的明明是同一个网络,就不明白他为什么进度比我快,这个时候我的好胜心来了:“不行,我一定要比他快!”,我就刷新了一波,有点效果,但始终没他的快,放弃了,哈哈~

开篇

想必大家对以上说的情况已经是见怪不怪了,今天呢我们就一点一点去挖掘下背后的运作方式,通只有了解了背后的运作原理才能解释这种现象!

概念补充

需要大家明白一个概念(这里就拿百度举例):

大家都熟知www.baidu.com,但肯定不知道182.61.200.7,当我们在地址栏输入182.61.200.7的时候也能访问到百度,如图:

当我们访问www.baidu.com实际上访问的是182.61.200.7,那么问题来了:

1. www.baidu.com是什么呢?

答:www.baidu.com通俗的讲它是182.61.200.7的名字,这就好像是一个人的名字。

2. 为什么www.baidu.com能够跟182.61.200.7对应上?

答:这就要涉及另一个知识点了——DNS域名解析服务器,www.baidu.com就是一个域名,当我们在地址栏输入这个域名之后,先是在本机的缓存里边找有没有这个域名对应的IP地址,如果没有那就需要向DNS服务器发送请求,请求什么呢?当然是请求182.61.200.7这个IP地址啦!在找到了这个IP地址之后它就会返回给我们的浏览器,浏览器再拿着这个IP地址访问百度的服务器!

直播原理

我这里只是简单的说一下直播的大概原理,但并不是一些直播平台的做法!!!

主播在开了直播之后会向服务器发送直播相关的数据包,张三无聊了想养养眼,通过一个封面进入了直播间,在它进入这个直播间的过程中会走相应的DNS解析域名,然后才访问到对应的服务器拿到了直播的数据,嘿嘿嘿~流程如图:

在现实生活中的网络请求响应过程并没有图片中的那么简单,这个过程当中做了很多努力,如一个请求要经过很多台二层交换机、三层交换机等设备,因此部署链路是一个极其复杂的工程。

真实场景

在我们开始讲现实生活中直播平台的做法之前,需要理解一个概念 —— CDN,CDN也叫内容分发网络,那么它在网络中起着一个什么作用呢?

首先我们需要思考下直播为什么能保证那么多人同时观看,对这方面有了解的都知道一个服务器的访问量高与不高取决于这台服务器的配置以及带宽方面的问题,想要做到一台服务器能同时容纳100w用户的话投入比较大,企业没必要。那么企业是通过什么手段来做到的呢?没错,就是CDN,CDN是一个很重要的桥梁,而CDN指的是很多台不同地区的服务器,比如你在北京,那么你访问的ip其实就是北京所在的CDN服务器,如果是你人在上海,那么访问的ip就是上海所在的CDN服务器,前提是CDN厂商在该地区有自己的服务器,这么做可以提高访问速度,假设源服务器是在海外的,那么你的每次访问就要跑到海外去,但是使用了CDN之后就只会访问距离你最近的服务器了,访问速度也提高上去了。

那么问题来了,为什么我访问CDN的服务器能取到我想要的直播内容?因为CDN服务器已经把源服务器的直播数据给缓存下来了,只要源服务器交给了CDN去代理,那么它就会自己去请求源服务器然后把那些数据缓存起来,然后每个CDN服务器之间同步缓存的数据;这也就是为什么直播间能同时那么多人观看的原因了。

在使用了缓存这个概念提高了访问量的问题之后,它也出现了文章标题所说的问题了,就是明明是同一个网络下,为什么看到的直播进度不一样的问题,这就是缓存数据不是实时同步的,虽然是同一个网络下,但是两台设备请求的目标ip不一样,两台服务器缓存的数据也是不一致的,所以就造成了这种现象,造成这种现象的因素很多,更直接的原因还是网速的问题。

大致流程如图: 

总结

大家对DDOS攻击都不陌生,这种攻击手段基本上是无解的,那么我们当中的一个防御手段就是可以通过CDN进行防御, DDOS攻击就是对你的服务器传输大量数据包,直到超过服务器所能接受的量,而且在攻击过程中会导致用户无法正常访问你的产品(假如服务器上有部署的话),那么CDN是如何来进行防御的呢?当你使用CDN之后,用户的请求就不是直接通过访问你的服务器来拿到响应数据了,而是从CDN的服务器中取到缓存的数据。

总结下来CDN的好处还是挺多的,可以提高访问速度、并发数等等,CDN也能建立在这些优点上做出一些策略帮助你抵御DDOS攻击。

同一个网络下两台设备看直播时,进度不是一致的?浅谈其运作原理相关推荐

  1. 关于非同一局域网下两台设备之间的网络通信(服务器的作用)

    看过很多关于局域网下的两台设备之间的通信方式,最多的就是通过socket进行tcp/ip通信.建立一个服务端,再建立一个客户端,客户端向服务端发起请求连接.然后再进行两端的通信.但发现其实这却存在着很 ...

  2. 同一无线网络下两台电脑无法Ping通

    今天在同一无线网络进行两台电脑的ping通测试时,两台电脑之间无法ping通,但是一台电脑可以访问另一台电脑上部署的web网页.查看两台电脑的ip,发现两台电脑均在同一个网络段下面,且网关设置一致. ...

  3. 看不到同一个网络下的其他计算机,看不到局域网其他计算机怎么办

    有些时候,我们在局域网看不到其他计算机,这是怎么回事呢?学习啦小编为大家整理了相关内容,供大家参考阅读! 局域网看不到其他计算机的解决方法 导致无法正常查看到局域网中其它计算机的重要原因是,本地计算机 ...

  4. ubuntu下搭建ad-hoc网络实现多台设备进行网络通信(通过图形界面+超级详细教程)

    通过配置文件详情请看博客:https://blog.csdn.net/weixin_44038165/article/details/88386051 最近实验室做的一些工作需要使用lattepand ...

  5. [ Ubuntu 使用技巧 ] 使用 Synergy 联接两台设备使用同一套键鼠操控

    §1. General Purposes: Why I wrote this? 最近开发中会有一些时候需要使用其他设备,比如 RK3399 的开发板.正常情况下,可以通过 ssh 命令登上去在 Ter ...

  6. 两台设备有三条链路,请问如何添加?

    两台设备有三条链路,请问如何添加? 添加一条线,再用"经过"功能. 默认情况下链路和节点的的中心点连接,因此,默认状态下两个节点间添加n条链路,都只能看到一条,之前的n-1条被最后 ...

  7. 不同网络下 一台电脑连接另一台电脑的mysql数据库

    不同网络下 一台电脑连接另一台电脑的mysql数据库 首先确保,两台电脑都已经有了基本配置好的可用的mysql数据库 确定一台电脑为服务端,再服务端数据库下,先授权可被其他电脑访问: 如果MySQL是 ...

  8. zeotero+oneDrive在两台设备pdf等附加文件无法同步的问题

    问题 因为实验室里的zotero论文都下载了pdf,但是回去打开笔记本的zotero,虽然论文名字同步过去了,但是像pdf这种文件同步不了,想看还得重新下载 webDAV的方式 换了好几种webDAV ...

  9. 如何判断两台设备是否在同一局域网内

    1. IP&MASK 查看两台设备的ip4地址和子网掩码. 若子网掩码不一样,则不在同一局域网内. 若一样,分别计算IP&MASK,若二者相同,则在同一局域网内,否则不在同一局域网. ...

最新文章

  1. python调用什么函数实现对文件内容的读取_如何使用python语言中的方法对文件进行读写操作...
  2. Python全局解释器锁GIL与多线程
  3. 五、队列(Queue)
  4. wxWidgets:窗口 ID
  5. xajax中的中文乱码问题
  6. c语言结构体定义字符串数组,C语言,结构体中字符串的声明(采用字符指针还是字符数组)...
  7. C++STL与泛型编程(3)容器之分类与测试
  8. system2之:4-LVM逻辑卷管理
  9. android短信验证码免费版,短信验证码功能-免费哦!亲测可用
  10. ttest函数使用方法_【Excel函数】TTEST函数 - 曹海峰个人博客
  11. iOS在服务器返回的JSON字符串带火星文乱码的处理
  12. vscode 编写html 浏览器显示 空白 白屏
  13. 【JavaScript】实现延时3秒刷新
  14. 智能汽车时代,OEM软件自研与供应链分工模式“待解”
  15. 2022年河北最新建筑八大员(材料员)模拟题库及答案
  16. JS获取各种屏幕的宽度和高度
  17. 专利一通回案实审是什么
  18. Data Analysis 软件(色谱质谱图分析软件)安装步骤
  19. unity三维云图_Unity3d温度云图shader
  20. 【项目精选】JAVA_JSP电子政务网(源码+视频+论文)

热门文章

  1. python利用flask搭建接口中转数据给DLL文件
  2. 面向对象的设计的7大原则
  3. 计算机 蚂蚁搬家 教案,幼儿园中班教案《蚂蚁搬家》含反思
  4. 计算机组成原理知识点汇总(考研用)——第七章:输入/输出系统
  5. VBoxManage常用命令用法
  6. Hive 中的wordCount、Hive 开窗函数
  7. gma 教程 | 栅格处理 | 栅格镶嵌
  8. 抖音开橱窗的三种方法
  9. 用java写qt界面_c++用Qt之后写图形界面是否比Java用swing简单
  10. Python实现监控电脑,CPU或者内存占用过高自动发提醒邮件