我想澄清一个疑问,这是困扰我后,学习DNS。
我将把它简单地写成一个问题。一位用户正在youtube上观看一段视频,用户使用的DNS服务器(主dns和替代dns)突然中断。从DNS的角度来看,我能理解的是用户应该能够继续观看youtube,因为DNS已经解决了。但实际发生的是,youtube视频在播放缓冲视频之后停止播放,youtube不再播放。
你能给我解释一下基于OSI层的工作原理吗?
发布于 2020-09-12 14:09:21
关于OSI模型,HTTP并不在DNS之上,但两者都是独立的应用层协议,在下面都有自己的OSI模型栈。他们可以共享相同的电缆和网络连接,但在此基础上,他们使用不同的TCP/UDP连接从不同的IP地址获取数据。

尽管HTTP在缓存主机名后独立于DNS工作,但使用HTTP协议的现代服务的这些实现细节使事情变得更加复杂。特别是像YouTube这样的全球流行的流媒体服务,根本不能服务于单个服务器或IP地址的内容,而是需要一个内容分发网络(,CDN),多个服务器共享负载。
当您从YouTube观看视频时,实际上并不是从www.youtube.com下载缓冲的视频流,而是使用对主机名(如r2---sn-xap5-ixaz.googlevideo.com )的附加请求。使用开发人员工具,您可能会看到它们是不断请求的相当小的块:

ipconfig /displaydns:R2--sn-xap5-ixaz.googlevisual.com。。。。:R2--sn-xap5-ixaz.googlevisual.com记录类型。。。。。5“活下去”。。。。587个数据长度。。。。。*8科。。。。。。。回答CNAME记录。。。。:r2.sn-xap5-ixaz.googlevisual.com记录名。。。。。:r2.sn-xap5-ixaz.googlevisual.com记录类型。。。。。1“活下去”。。。。587个数据长度。。。。。*4科。。。。。。。*回答A(东道国)记录。。。* 193.229.108.205发布于 2020-09-12 13:15:58
我不认为OSI分层真的是这个问题的一个因素。
在这个问题中列出的假设对于有缓存的琐碎场景似乎基本上是正确的。
也就是说,如果已经缓存了相关的DNS数据,并且一直在请求相同的名称,理论上的新DNS查找不会工作,因为没有进行查找,这没有任何区别。
我更希望这些假设实际上不适用于你在浏览器中的Youtube播放器的不平凡的现实世界场景。Ie,我希望所需的DNS数据没有被实际缓存(足够长吗?)或者在整个播放过程中正在查找新的/附加的名称。
您可能希望同时跟踪浏览器正在做什么(开发人员控制台?)和缓存状态来确定这个特定的场景。
发布于 2020-09-12 12:20:16
您关于IP被计算机缓存的断言是错误的(几乎一直都是这样)。IP可以动态变化,用户可以在Youtube视图中间改变IP。计算机开始缓存IP以允许DNS出现小问题。但是如果DNS服务器长时间关闭(30?更多?(我不知道),当会话几乎完成时,将完成一个新的DNS请求。而DNS不接,客户端将停止通信。去年开始了一个新的DNS RFC,以便在这种情况下继续工作,但实际上并没有部署它。
https://serverfault.com/questions/1033639
复制相似问题