首页 > 其他分享 >你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)

你以为键入网址后只是等待吗?惊!原来网页显示背后隐藏着这些奇妙步骤(上)

时间:2023-11-09 21:01:22浏览次数:36  
标签:协议 HTTP 浏览器 URL 键入 奇妙 网页 IP地址 服务器

当键入网址后,到网页显示,其间发生了什么

在面试过程中,很可能会遇到一个常见的问题,即"当输入一个网址后,到网页显示之间发生了什么"。这个问题的确非常常见,我也喜欢问这个问题,因为它可以帮助我了解面试者对网络部分的应用知识的掌握情况,同时也能够基本囊括网络通信的整个过程。

接下来,为了更好地探究这个问题,我将以一个简单的网络拓扑模型为例,来详细解释在键入网址后到网页显示之间具体发生了什么。

image

探究HTTP

在浏览器中,第一步的工作是解析URL。这意味着将URL分解成不同的元素,以便发送给Web服务器的请求信息。下面是一个具有较长URL的示例,我们来看看其中的各个元素代表什么。

image

因此,根据图中的长URL,我们实际上是在请求服务器中的文件资源。如果省略了图中的蓝色URL元素,那么实际上是在请求根目录下事先设置的默认文件,例如/index.html或/default.html等文件,这样可以避免混乱。

在解析URL之后,浏览器会确定Web服务器和文件名,然后根据这些信息生成HTTP请求消息。

image

一个孤独的HTTP数据包,仿佛在无边无际的网络中迷茫着。它小小的身躯,没有亲人也没有朋友,只是被发送到广袤的网络中,不知道有谁会注意到它。它心中充满了疑问,不知道有谁能给它提供一层保护,帮助它到达目的地。它不停地前进,毫不停歇,继续踏上这个充满未知的征途!

真实地址查询-DNS

当浏览器解析URL并生成HTTP消息后,下一步就是委托操作系统将消息发送给Web服务器。然而,在发送之前,还有一项重要的任务需要完成,那就是查询服务器域名对应的IP地址。因为在委托操作系统发送消息时,必须提供通信对象的IP地址。

可以将这个过程类比为打电话,当我们打电话时,必须知道对方的电话号码。然而,由于电话号码往往难以记忆,我们通常会将对方的电话号码和姓名保存在通讯录中以便快速拨号。

同样地,存在一种服务器专门用于保存Web服务器域名与IP地址的对应关系,它被称为DNS服务器。DNS服务器的作用就是为我们提供域名到IP地址的转换服务。当我们在浏览器中输入一个域名时,浏览器会向DNS服务器发送查询请求,以获取与该域名对应的IP地址。一旦获取到IP地址,浏览器就可以将HTTP消息发送给正确的Web服务器了。

指南好帮手-协议栈

通过 DNS 获取到 IP 后,我们可以将 HTTP 的传输工作交给操作系统中的协议栈。协议栈由多个部分组成,每个部分承担不同的任务。这些部分之间存在一定的层次关系,上层部分会将工作委托给下层部分,下层部分则接收并执行委托的工作。

image

应用程序(例如浏览器)通过调用 Socket 库来委托协议栈工作。协议栈的上半部分包括负责收发数据的 TCP 和 UDP 协议。这两个协议接收应用层的委托,并执行数据的传输操作。

协议栈的下半部分是由 IP 协议控制网络包的收发操作。在互联网上传输数据时,数据会被切分成一块一块的网络请求包(具体细节已经在之前的章节讨论过,这里不再赘述),而将这些网络包发送给对方的操作由 IP 协议负责。

此外,IP 协议还包括 ICMP 协议和 ARP 协议。

  • ICMP 协议用于传送网络包传输过程中产生的错误信息和各种控制信息。
  • ARP 协议用于根据 IP 地址查询相应的以太网 MAC 地址。

在 IP 协议下方是网卡驱动程序,其功能是负责控制网卡硬件。而最底层的网卡则负责实际的收发操作,即执行对网线中信号的发送和接收操作。

总结

在键入网址后到网页显示之间的过程中,首先浏览器会对URL进行解析,并生成相应的HTTP请求消息,以确定要请求的Web服务器和文件名。接下来,浏览器会通过DNS服务器进行查询,以获取服务器域名对应的IP地址。整个过程中涉及到URL解析、DNS查询和HTTP请求。在后续的章节中,我们将进一步介绍TCP/IP、MAC地址、网卡和路由器等内容,以更全面地了解网络通信的细节。敬请期待后续章节的更新!

标签:协议,HTTP,浏览器,URL,键入,奇妙,网页,IP地址,服务器
From: https://blog.51cto.com/StudiousXiaoYu/8285463

相关文章

  • 网页加速的14条优化法则 - 网站开发与优化
    网页加速的14条优化法则关键字:网页加速,Web优化,性能优化,YouMonitor.Us译自:http://developer.yahoo.com/performance/rules.html最近,YouMonitor.Us在做Web应用性能优化,在网上发现了文章HighPerformanceWebSites:TheImportanceofFront-EndPerformance,感觉其14条优化法则......
  • 如何优雅的控制网页请求的优先级
    如何优雅的控制网页请求的优先级?https://mp.weixin.qq.com/s/RH65MKqho4h-WdOlXafWBg如何优雅的控制网页请求的优先级?搜狐技术产品 2023-11-0907:30 发表于北京对于一个网页的性能和体验来讲,控制好请求发起的优先级是非常重要的,网络带宽是有限的,优先去加载重要的资源,让次要......
  • 运行Springboot测试类查询数据库数据显示白网页
    问题运行Springboot测试类时,查询数据库里面数据显示如下白网页程序报如下错误 解决方案 SpringBoot应用未能启动的原因是它没有找到合适的数据库配置具体来说,它需要一个数据源(DataSource),但未能在你的配置中找出,也没有找到任何嵌入式数据库(H2,HSQL或Derby)以下是几个......
  • centos安装httpd发布静态网页(一)
    html网页发布到服务器上,需要安装httpd或者nginx之类。本文以apachehttpd为例。安装[root@VM-0-5-centoszjd]#yuminstallhttpdLoadedplugins:fastestmirror,langpacksDeterminingfastestmirrorsdocker-ce-stable......
  • VUE监听网页关闭和隐藏显示(页签关闭调用某一个接口)
    mounted(){this.id=this.$route.query.id;window.addEventListener("beforeunload",async(e)=>awaitthis.beforeunloadHandler(e));window.addEventListener("unload",(e)=>this.unloadHandle......
  • 旅游管理与推荐系统Python+Django网页平台+协同过滤推荐算法
    一、介绍旅游管理与推荐系统。本系统使用Python作为主要编程语言,前端采用HTML、CSS、BootStrap等技术实现界面展示平台的开发,后端使用Django框架处理用户响应请求,并使用Ajax等技术实现前后端的数据通信。本系统主要功能有:系统分为两个角色:用户和管理员对于用户角色可以进行登......
  • 浏览器的网页格式出现问题,并且在别人的电脑上没问题,代码也没问题的解决办法
    https://baijiahao.baidu.com/s?id=1777341926071232063&wfr=spider&for=pc看起来像是浏览器设置的问题,可是浏览器设置为了100%,还是原来的情况。缓存清除了也没有用,最后问了同事才发现是电脑的显示设置原因。直接按鼠标缩放没有用。解决办法:右击桌面,显示设置,找到缩放和布局,将......
  • 为何网页上要用Battery电池状态API
    手机自身的电源管理已经相当不错了,那为何网页上还要增加一个HTML5Battery电池状态API呢? 随着HTML5以及CSS3技术支持与发展,以及手机越来越高性能带来的可行性。移动端的页面显然会越来越烧电。例如,流畅的动画效果,模糊阴影等视觉体验。因此可能会出现这样的情况,用户电量快不行了,又......
  • 网页CAD SDK 集成后怎么实现参数化绘图(在线编辑CAD)
    前言MxCAD 的WEBCADSDK提供了参数化绘图的功能,我们可以通过查看继承自McDbEntity的类的所有实例,它们都可以进行参数化的绘图。首先我们应该在页面上显示一张图纸,请根据mxcad入门文档的说明或者通过查看github|gitee存储的初始化各种示例项目查看代码来实现显示图纸的页......
  • 音乐推荐与管理系统Python+Django网页界面+协同过滤推荐算法
    一、介绍音乐推荐与管理系统。本系统采用Python作为主要开发语言,前端使用HTML、CSS、BootStrap等技术搭建界面平台,后端使用Django框架处理请求,并基于Ajax等技术实现前端与后端的数据通信。在音乐个性推荐功能模块中采用通过Python编写协同过滤推荐算法模块,实现对当前登录用户的个性......