整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

在浏览器中输入网址到页面显示出来,这中间到底发生了什

在浏览器中输入网址到页面显示出来,这中间到底发生了什么?

、问题

在浏览器中输入网址,到页面显示出来,中间发生了什么?

二、解答

1、查询DNS,获取域名对应的IP。

(1)检查本地hosts文件是否有这个网址的映射,如果有,就调用这个IP地址映射,解析完成。

(2)如果没有,则查找本地DNS解析器缓存是否有这个网址的映射,如果有,返回映射,解析完成。

(3)如果没有,则查找填写或分配的首选DNS服务器,称为本地DNS服务器。服务器接收到查询时:

  • 如果要查询的域名包含在本地配置区域资源中,返回解析结果,查询结束,此解析具有权威性。
  • 如果要查询的域名不由本地DNS服务器区域解析,但服务器缓存了此网址的映射关系,返回解析结果,查询结束,此解析不具有权威性。

(4)如果本地DNS服务器也失效:

  • 如果未采用转发模式(迭代),本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后,会判断这个域名(如.com)是谁来授权管理,并返回一个负责该顶级域名服务器的IP,本地DNS服务器收到顶级域名服务器IP信息后,继续向该顶级域名服务器IP发送请求,该服务器如果无法解析,则会找到负责这个域名的下一级DNS服务器(如http://baidu.com)的IP给本地DNS服务器,循环往复直至查询到映射,将解析结果返回本地DNS服务器,再由本地DNS服务器返回解析结果,查询完成。如果采用转发模式(递归),则此DNS服务器就会把请求转发至上一级DNS服务器,如果上一级DNS服务器不能解析,则继续向上请求。最终将解析结果依次返回本地DNS服务器,本地DNS服务器再返回给客户机,查询完成。

2、客户机发送HTTP请求报文:

(1)应用层:客户端发送HTTP请求报文

(2)传输层:切分长数据,并确保可靠性。

(3)网络层:进行路由

(4)数据链路层:传输数据

(5)物理层:物理传输bit

3、服务器端经过物理层→数据链路层→网络层→传输层→应用层,解析请求报文,发送HTTP响应报文。

4、客户端解析HTTP响应报文

5、浏览器开始显示HTML

6、浏览器重新发送请求获取图片、CSS、JS的数据。

7、如果有AJAX,浏览器发送AJAX请求,及时更新页面。

——————————————————

微信搜索公众号【轮子工厂】,后台回复关键字:

1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;

2.回复【我要造轮子】:获取100多本我根据知乎上面关于计算机问题的高赞回答里面的介绍整理出来的书籍;

3.回复【内推】:可帮你内推到大厂工作。

4.回复【C】:可免费获得自制C语言教程。

于现代网民来说

饭可以不吃,网不能不上

聚会聊天已经变为聚会开黑

坐车等人不摸下手机浑身难受

洗完澡必须刷个抖音否则完全无法入睡

躺床上办公已经不再是梦,

这个时代靠着网络足以“坐井观天”!

互联网行业的发达带给人们前所未有的便捷,但是人们从没想过,万一哪天网络崩溃,自己还能否正确找到回家的路?

众所周知,浏览器是浏览网页的入口,当浏览网页的过程中出现了网页无法访问的时候,最常见的处理方式就是重启浏览器或者重启电脑,如果还不行很多人就不知道要如何处理了,尤其是一些相对特殊的网站,比如说政府或企业的采购网站,一旦访问不了,不管是对服务端还是客户端来说,造成的后果往往是比较严重的。

网络崩了你可不能崩

接下来我们就来盘点1下

访问http网页出错的常见原因和解决方案

DNS缓存问题

很多人知道有DNS缓存这个东西,但是并不知道这个东西是干什么用的。

首先我们要明白DNS和IP地址之间的关系,DNS即域名,相当于是各大网站在网络上的门牌,而IP地址则是具体的门牌号,通过DNS解析服务器对DNS进行解析,解析出IP地址之后才能进行访问。

DNS缓存的作用就是记录在一段时间之内解析过的域名及其对应的IP地址,如果在设定的时间之内再次访问这个网站,设备则不会再次进行解析,而是根据DNS缓存里的记录进行访问,提高访问效率。但是当DNS缓存过高的时候,经常会出现访问网站的时候解析失败,自然而然也就访问失败了。最经典的案例就是电脑能够登录QQ,同时CMD控制台也能ping通www.baidu.com,但是用浏览器访问百度的时候就是打不开,或者打开的速度极慢,此时通常都是DNS缓存出了问题。

解决DNS缓存问题的方法也很简单,对于电脑来说,可以重启电脑,或者通过运行—CMD—输入ipconfig/flushdns的方式进行DNS缓存列表重置,而对于路由器来说,可以直接重启路由器,或者减小DNS缓存的老化时间,让其缓存保留的时间缩短,以此方式控制DNS缓存在设备上的保留时间。


图1 重置电脑的DNS缓存

DNS服务器配置不当

DNS配置不当容易导致访问网页的速度极慢,甚至有可能无法解析,导致访问网页失败,比如办理的是电信的宽带线路,但是使用的是移动或者联通的DNS服务器,此时可能导致DNS解析失败,造成访问失败。

一般来说,办理宽带线路的时候,运营商已经设置好了账号对应的DNS地址,在光猫或者路由器拨号的时候就能获取到DNS服务器地址。但是有的用户可能会觉得运营商设置的服务器解析比较慢,喜欢自己配置速度比较快的服务器,但是配置不当反而导致解析速度降低。配置路由器的静态DNS也比较简单,可以通过网络配置—广域网—静态DNS自行配置,可以使用默认网关作为静态DNS,也可以使用国内免费通用的DNS地址,比如114.114.114.114等,路由器设置好之后,连接路由器的电脑直接动态获取就可以了。


图2 配置路由器的静态DNS

这里推荐一些常用的免费通用DNS服务器,以供参考:


图3 常用的免费通用DNS服务器

DNS劫持

正常来说,域名和IP地址是一一对应的关系,就像人跟身份证一样。访问网页的流程是当你输入想要访问的域名之后,本来DNS服务器解析出来并返回给你的地址为域名对应的IP地址,比如说为1.1.1.1,一旦DNS发生劫持,DNS服务器返回给你的地址或许就会是2.2.2.2,此时你访问到的网站将不再是你原来想要访问的那个网站,甚至DNS会进行判断,如果这个流量是DNS服务器不感兴趣的流量将直接被丢弃,导致没有地址返回给访问者,访问者没有接收到返回的IP地址,则导致无法访问。

针对这种问题,可以尝试换一个DNS服务器地址进行解析,也可以安装第三方杀毒软件进行防御和修复,或者在路由器上配置相关的DNS防御策略,通过行为管理—域名管理配置相关规则,过滤不安全的域名,提高防御级别。


图4 配置域名安全管理规则

上面说到的都是由于DNS导致网页无法访问的问题,判断是不是DNS导致网页无法访问,可以通过运行—CMD—ping DNS地址排查,如果ping DNS服务器的地址有回显数据,则说明问题并不在DNS,而是要排查浏览器和网站服务器的问题。


图5 ping DNS服务器地址,有回显数据则为正常

浏览器的代理服务器配置不当

很多人浏览网页的时候不希望别人可以通过抓包看到自己真实的IP地址,因此会设置一个代理服务器进行访问,代理服务器可以看作是一台路由器,访问网页的时候会通过设置的代理服务器地址进行访问,但是很多时候会由于配置不当导致访问的流量无法通过路由器,因此无法访问到网页。

此时可以通过打开IE—Internet选项—连接—局域网设置--代理服务器进行代理服务器的相关设置,设置完之后再次访问网页,则会以代理服务器的设置访问,而不是以主机获取到的IP地址进行访问。


图6 代理服务器设置

访问端口错误

http协议默认的监听端口为80,在输入网址的时候,浏览器会默认帮你添加80端口,因此在访问一般网页的时候也就不需要输入端口号。

但是有些比较特殊的网页在开发的时候,为了防止恶意访问,开发人员会设置特定的端口号,比如说维盟路由器默认WEB页面的访问端口号为80,维盟防火墙默认页的面访问端口号为9090,如果在登录的时候不手动输入端口也是无法进入登录页面的,端口号也可以通过登录路由器—高级配置—WEB访问配置—HTTP访问端口进行设置。


图7 WEB访问端口号配置

由于网站服务器的问题导致访问失败

很多时候会由于网站本身的服务器导致网页访问失败,比如说网站当前访问的用户数过多、在短时间内访问当前网站的次数过多等问题,服务器会为了保证其正常运行而拒绝这些用户的访问,导致访问失败。也有可能访问的网站根本就不存在,或者访问的htm文件已经被管理员删除了,也会导致访问失败,这种问题叫做目的地不可达,导致访问失败。

因为服务器导致网页无法访问的原因非常多,一般情况下浏览器也会根据访问失败的原因进行反馈,比如500、501、502、503等,其反馈的信息都是根据失败的原因进行回显,也可以通过打开浏览器—Internet选项—高级,取消“显示友好的http错误提示”,此时可以看到具体的错误提示,比如403错误,403.1为服务器拒绝访问等,每个代码都代表着不同的错误,得到具体的原因之后则可以对症下药,更高效地解决访问失败的问题。


图8 浏览器错误回显信息设置

由于客户端的问题导致访问失败

400、403和404是最经典的客户端问题导致访问失败的原因,400为请求失败,由于输入了错误格式的网址等原因导致无法解析;403为禁止访问,即服务器已经收到了访问请求,但是拒绝该请求;404为无法找到网页对应的htm文件。


关于403错误

小编在昨天遇到一个客户咨询:QQ可以正常登录,CMD控制台可以正常ping通百度,而且其他页面都可以访问,就只有他需要访问的页面出现403错误,此时路由器也可以ping通需要访问的地址,但是就是无法通过页面访问。

登录路由器查看访问控制的日志,发现没有任何拒绝该网站的日志,且路由器上没有做任何关于http协议的访问控制等策略,说明出现此错误并不是由于路由器的原因导致的。

最常见的403错误有禁止服务和账号信息调用错误,首先排查账号信息调用错误的问题,清空浏览器缓存、cookie和网站数据等,重启浏览器重新打开该网址,但是依然出现403错误。

此时怀疑是由于电脑的IP地址被服务器禁止访问该网站所导致,然后该用户将IP地址修改为与现有地址同网段的另一个地址,修改之后重新访问该网站,发现网站已经可以正常访问了,最后将问题锁定在访问被禁止的原因上,修改一个地址即可以访问。

关于访问网页出错的原因非常多,如果细说的话三天三夜都说不完,由于客户端导致的原因甚至要修改访问的证书等等。

各http错误回显码对应的网络故障

2xx 成功

200 正常;请求已完成。

201 正常;紧接 POST 命令。

202 正常;已接受用于处理,但处理尚未完成。

203 正常;部分信息 — 返回的信息只是一部分。

204 正常;无响应 — 已接收请求,但不存在要回送的信息。

3xx 重定向

301 已移动 — 请求的数据具有新的位置且更改是永久的。

302 已找到 — 请求的数据临时具有不同 URI。

303 请参阅其它 — 可在另一URI 下找到对请求的响应,且应使用 GET 方法检索此响应。

304 未修改 — 未按预期修改文档。

305 使用代理 — 必须通过位置字段中提供的代理来访问请求的资源。

306 未使用 — 不再使用;保留此代码以便将来使用。

4xx 客户机中出现的错误

400 错误请求 — 请求中有语法问题,或不能满足请求。

401 未授权 — 未授权客户机访问数据。

402 需要付款 — 表示计费系统已有效。

403 禁止 — 即使有授权也不需要访问。

404 找不到 — 服务器找不到给定的资源;文档不存在。

407 代理认证请求 — 客户机首先必须使用代理认证自身。

415 介质类型不受支持 — 服务器拒绝服务请求,因为不支持请求实体的格式。

HTTP 400 - 请求无效

HTTP 401.1 - 未授权:登录失败

HTTP 401.2 - 未授权:服务器配置问题导致登录失败

HTTP 401.3 - ACL 禁止访问资源

HTTP 401.4 - 未授权:授权被筛选器拒绝

HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败

HTTP 403 - 禁止访问

HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost

HTTP 403.1 禁止访问:禁止可执行访问

HTTP 403.2 - 禁止访问:禁止读访问

HTTP 403.3 - 禁止访问:禁止写访问

HTTP 403.4 - 禁止访问:要求 SSL

HTTP 403.5 - 禁止访问:要求 SSL 128

HTTP 403.6 - 禁止访问:IP 地址被拒绝

HTTP 403.7 - 禁止访问:要求客户证书

HTTP 403.8 - 禁止访问:禁止站点访问

HTTP 403.9 - 禁止访问:连接的用户过多

HTTP 403.10 - 禁止访问:配置无效

HTTP 403.11 - 禁止访问:密码更改

HTTP 403.12 - 禁止访问:映射器拒绝访问

HTTP 403.13 - 禁止访问:客户证书已被吊销

HTTP 403.15 - 禁止访问:客户访问许可过多

HTTP 403.16 - 禁止访问:客户证书不可信或者无效

HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效

HTTP 404.1 - 无法找到 Web 站点

HTTP 404 - 无法找到文件

HTTP 405 - 资源被禁止

HTTP 406 - 无法接受

HTTP 407 - 要求代理身份验证

HTTP 410 - 永远不可用

HTTP 412 - 先决条件失败

HTTP 414 - 请求 - URI 太长

5xx 服务器中出现的错误

500 内部错误 — 因为意外情况,服务器不能完成请求。

501 未执行 — 服务器不支持请求的工具。

502 错误网关 — 服务器接收到来自上游服务器的无效响应。

503 无法获得服务 — 由于临时过载或维护,服务器无法处理请求。

HTTP 500 - 内部服务器错误

HTTP 500.100 - 内部服务器错误 - ASP 错误

HTTP 500-11 服务器关闭

HTTP 500-12 应用程序重新启动

HTTP 500-13 - 服务器太忙

HTTP 500-14 - 应用程序无效

HTTP 500-15 - 不允许请求 global.asa

Error 501 - 未实现

HTTP 502 - 网关错误

遇到此类问题的时候,用户可以根据回显的信息进行故障排查和处理,也欢迎大家在公众号(woyaowifi)留言交流处理方式哦~

文由掘金@天行天忌授权发布,前端晚间课对其内容进行微改。


HTML,超文本标记语言,是一种用于创建网页的标准标记语言。自从引入 HTML 以来,它就一直用于构建互联网。与 JavaScript 和 CSS 一起,HTML 构成前端开发的三剑客。

尽管许多新技术使网站创建过程变得更简单、更高效,但 HTML 始终是核心。随着 HTML5 的普及,在 2014 年,这种标记语言发生了很多变化,变得更加友好,浏览器对新标准的支持热度也越来越高。而HTML并不止于此,还在不断发生变化,并且可能会获得一些特性来证明对 HTML6 的命名更改是合理的。

支持原生模式

该元素<dialog> 将随 HTML6 一起提供。它被认为等同于用 JavaScript 开发的模态,并且已经标准化,但只有少数浏览器完全支持。但这种现象会改变,很快它将在所有浏览器中得到支持。

这个元素在其默认格式下,只会将光标显示在它所在的位置上,但可以使用 JavaScript 打开模式。

<dialog>
  <form method="dialog">
    <input type="submit" value="确定" />
    <input type="submit" value="取消" />
  </form>
</dialog>

在默认形式下,该元素创建一个灰色背景,其下方是非交互式内容。

可以在 <dialog> 其中的表单上使用一种方法,该方法将发送值并将其传递回自身 <dialog>

总的来说,这个标签在用户交互和改进的界面中变得有益。

可以通过更改 <dialog> 标签的 open 属性以控制打开和关闭。

<dialog open>
  <p>组件内容</p>
</dialog>

没有 JavaScript 的单页应用程序

FutureClaw 杂志主编 Bobby Mozumder 建议:

将锚元素链接到 JSON/XML、API 端点,让浏览器在内部将数据加载到新的数据结构中,然后浏览器将 DOM 元素替换为根据需要加载的任何数据。初始数据(以及标准错误响应)可以放在标题装置中,如果需要,可以稍后替换。

据他介绍,这是单页应用程序网页设计模式,可以提高响应速度和加载时间,因为不需要加载 JavaScript。

这个是一个比较有意思的提案,就有点类似我们以前没有做前后端分离之前的混合编程的模式,HTML变成模板语言,通过JSON API请求数据,不一样的是变成浏览器来默认解析,浏览器内部加载数据到新的数据结构中,然后浏览器将按需加载到的数据替换成 DOM 元素

大家可以看一下InfoQ上的这篇文章《针对非正式 HTML6 提案“无需 JavaScript 的单页应用”引发的论战》,了解更多!

https://www.infoq.cn/article/2015/03/html6-without-javascript


自由调整图像大小

HTML6 爱好者相信即将到来的更新将允许浏览器调整图像大小以获得更好的观看体验。

每个浏览器都难以呈现相对于设备和屏幕尺寸的最佳图像尺寸,不幸的是,src 标签 img 在处理这个问题时不是很有效。

这个问题可以通过一个新标签 <srcset> 来解决,它使浏览器在多个图像之间进行选择的工作变得更加容易。

专用库

将可用库引入 HTML6 绝对是提高开发效率的重要一步。

微格式

很多时候,需要在互联网上定义一般信息,而这些一般信息可以是任何公开的信息,例如电话号码、姓名、地址等。微格式是能够定义一般数据的标准。微格式可以增强设计者的能力,并可以减少搜索引擎推断公共信息所需的努力。

自定义菜单

尽管标签<ul>、<ol>非常有用,但在某些情况下仍有一些不足之处。可以处理交互元素的标签将是一个不错的选择。

这就是创建标签 <menu> 的驱动力,它可以处理按钮驱动的列表元素。

<menu type="toolbar">
  <li><button>个人信息</button></li>
  <li><button>系统设置</button></li>
  <li><button>账号注销</button></li>
</menu>

因此 <menu>,除了能够像普通列表一样运行之外,还可以增强 HTML 列表的功能。

增强身份验证

虽然HTML5在安全性方面还不错,浏览器和网络技术也提供了合理的保护。毫无疑问,在身份验证和安全领域还有很多事情可以做。如密钥可以异地存储;这将防止不受欢迎的人访问并支持身份验证。使用嵌入式密钥而不是 cookie,使数字签名更好等。

集成摄像头

HTML6 允许以更好的方式使用设备上的相机和媒体。将能够控制相机、它的效果、模式、全景图像、HDR 和其他属性。

总结

没有什么是完美的,HTML 也不是完美的,所以 HTML 规范可以做很多事情来使它更好。应该对一些有用的规范进行标准化,以增强 HTML 的能力。小的变化已经开始推出。如增强蓝牙支持、p2p 文件传输、恶意软件保护、云存储集成,下一个 HTML 版本可以考虑一下。