访问网页的全过程(知识串联)

开发岗中总是会考很多计算机网络的知识点,但如果让面试官只靠一道题,便涵盖最多的计网知识点,那可能就是 网页浏览的全过程 了。本篇文章将带大家从头到尾过一遍这道被考烂的面试题,必会!!!

总的来说,网络通信模型可以用下图来表示,也就是大家只要熟记网络结构五层模型,按照这个体系,很多知识点都能顺出来了。访问网页的过程也是如此。

开始之前,我们先简单过一遍完整流程:

  1. 在浏览器中输入指定网页的 URL。
  2. 浏览器通过 DNS 协议,获取域名对应的 IP 地址。
  3. 浏览器根据 IP 地址和端口号,向目标服务器发起一个 TCP 连接请求。
  4. 浏览器在 TCP 连接上,向服务器发送一个 HTTP 请求报文,请求获取网页的内容。
  5. 服务器收到 HTTP 请求报文后,处理请求,并返回 HTTP 响应报文给浏览器。
  6. 浏览器收到 HTTP 响应报文后,解析响应体中的 HTML 代码,渲染网页的结构和样式,同时根据 HTML 中的其他资源的 URL(如图片、CSS、JS 等),再次发起 HTTP 请求,获取这些资源的内容,直到网页完全加载显示。
  7. 浏览器在不需要和服务器通信时,可以主动关闭 TCP 连接,或者等待服务器的关闭请求。

应用层

一切的开始——打开浏览器,在地址栏输入 URL,回车确认。那么,什么是 URL?访问 URL 有什么用?

URL

URL(Uniform Resource Locators),即统一资源定位器。网络上的所有资源都靠 URL 来定位,每一个文件就对应着一个 URL,就像是路径地址。理论上,文件资源和 URL 一一对应。实际上也有例外,比如某些 URL 指向的文件已经被重定位到另一个位置,这样就有多个 URL 指向同一个文件。

URL 的组成结构

  • 协议。URL 的前缀通常表示了该网址采用了何种应用层协议,通常有两种——HTTP 和 HTTPS。当然也有一些不太常见的前缀头,比如文件传输时用到的ftp:
  • 域名。域名便是访问网址的通用名,这里也有可能是网址的 IP 地址,域名可以理解为 IP 地址的可读版本,毕竟绝大部分人都不会选择记住一个网址的 IP 地址。
  • 端口。如果指明了访问网址的端口的话,端口会紧跟在域名后面,并用一个冒号隔开。
  • 资源路径。域名(端口)后紧跟的就是资源路径,从第一个/开始,表示从服务器上根目录开始进行索引到的文件路径,上图中要访问的文件就是服务器根目录下/path/to/myfile.html。早先的设计是该文件通常物理存储于服务器主机上,但现在随着网络技术的进步,该文件不一定会物理存储在服务器主机上,有可能存放在云上,而文件路径也有可能是虚拟的(遵循某种规则)。
  • 参数。参数是浏览器在向服务器提交请求时,在 URL 中附带的参数。服务器解析请求时,会提取这些参数。参数采用键值对的形式key=value,每一个键值对使用&隔开。参数的具体含义和请求操作的具体方法有关。
  • 锚点。锚点顾名思义,是在要访问的页面上的一个锚。要访问的页面大部分都多于一页,如果指定了锚点,那么在客户端显示该网页是就会定位到锚点处,相当于一个小书签。值得一提的是,在 URL 中,锚点以#开头,并且不会作为请求的一部分发送给服务端。

DNS

键入了 URL 之后,第一个重头戏登场——DNS 服务器解析。DNS(Domain Name System)域名系统,要解决的是 域名和 IP 地址的映射问题 。毕竟,域名只是一个网址便于记住的名字,而网址真正存在的地址其实是 IP 地址。

传送门:DNS 域名系统详解(应用层)

HTTP/HTTPS

利用 DNS 拿到了目标主机的 IP 地址之后,浏览器便可以向目标 IP 地址发送 HTTP 报文,请求需要的资源了。在这里,根据目标网站的不同,请求报文可能是 HTTP 协议或安全性增强的 HTTPS 协议。

传送门:

  • HTTP vs HTTPS(应用层)
  • HTTP 1.0 vs HTTP 1.1(应用层)
  • HTTP 常见状态码总结(应用层)

传输层 

由于 HTTP 协议是基于 TCP 协议的,在应用层的数据封装好以后,要交给传输层,经 TCP 协议继续封装。

TCP 协议保证了数据传输的可靠性,是数据包传输的主力协议。

传送门:

  • TCP 三次握手和四次挥手(传输层)
  • TCP 传输可靠性保障(传输层)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60523.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器硬件介绍

计算机介绍 现在的人们几乎无时无刻都在使用电脑!而且已经离不开电脑了。像桌上的台式电脑(桌机)、笔记本电脑(笔电)、平板电脑、智能手机等等,这些东西都算是电脑。 台式机电脑介绍 计算机又被称为电脑。台式机电脑主要分为主机和显示器两个部分&…

04-HTTP协议、请求报文、响应报文

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

基于Multisim人数出入加减计数统计电路(含仿真和报告)

【全套资料.zip】人数出入加减计数统计电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 设计两路光控电路,一路放置在入口,另一路设置在出口,当有人…

车机安装第三方软件实现打开软件全屏教程

简介 越来越多的车友实现安装第三方软件了,但是有的车机的状态栏或者导航栏会遮挡安装的第三方软件。这样的话,第三方软件就会显示不全,体验感非常不好。所以,下面我教一下大家如何使用东君应用管家来实现打开第三方软件全屏。 全…

CLion配置QT开发环境

一、将qmake工程转为cmake工程(方法一:用工具转换并做适当修改) 1、工具链接:链接:https://pan.baidu.com/s/1grW2QY3sW8X2JaHWM_ePPw 提取码:7at4 工具源码:https://github.com/milahu/qmake2cmake 2、执行…

第3章-需求 3.4 需求的合法合规性审查

3.4 需求的合法合规性审查 3.4.1 项目需求的合法性审查3.4.2 委托研发项目的法律问题3.4.3 项目实施过程中的知识产权问题1.开发成果的知识产权保护2.开发过程中的侵权风险防控 近年来随着依法治国的深度开展,企业合规的概念越来越多地出现在大众眼前,也…

怎么保护源代码,源代码防泄密的十种方法

在现代软件开发中,源代码被视为企业的“数字资产”,它不仅承载着企业的核心竞争力,更是推动技术创新和业务发展的基石。然而,随着信息技术的普及和开发环境的复杂化,源代码泄密的风险也在不断增加。保护源代码的安全已…

单相锁相环,原理与Matlab实现

单相锁相环基本原理 单相锁相环的基本原理图如下所示, u α u_\alpha uα​ u β u_\beta uβ​经Park变换、PI控制实现对角频率 ω \omega ω和角度 θ \theta θ的估算。不同锁相环方案之间的差异,主要表现在正交电压 u β u_\beta uβ​的生成&#x…

腾讯云双十一福利篇之CVM云服务器

🍋引言 随着企业数字化转型的不断深入,对云计算的需求日益增长。腾讯云推出的云服务器(CVM)为企业提供了一种灵活、高效、经济的计算服务解决方案。CVM云服务器不仅能够快速响应业务需求,还可以帮助企业降低前期硬件投…

DDei在线设计器-国际化

国际化 从1.2.42版开始,DDei提供了国际化支持。默认提供了中文/英文两种语言。 编辑器会读取浏览器的语言设置,也能够在初始化时强行指定,默认使用zh_CN(中文)。 本示例基于教程快速指南开发,如果您不清楚怎样引入DDei设计器,请查…

NUXT3学习日记一(在我git中拉取代码、文件讲解)

Nuxt 3 是一个基于 Vue 3 的现代框架,用于构建服务器端渲染(SSR)和静态生成的应用程序。它提供了一种简化的方式来创建高性能的 Vue 应用,具有许多强大的功能和优点。以下是 Nuxt 3 的一些主要应用和优点: 一、应用场…

小米路由器3(R3)安装mixbox命令

sh -c /extdisks/sda1/ftp/install.sh && source /etc/profile &> /dev/null install.sh文件 或者在目录新建一个粘贴 #!/bin/sh -e #copyright by monlorclear logsh() {# 输出信息到/tmp/messages和标准输出logger -s -p 1 -t "$1" "$2&quo…

DAY27|贪心算法Part01|LeetCode:455.分发饼干、376. 摆动序列、53. 最大子序和

贪心算法 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 贪心算法并没有固定的套路,最难想的就在于如何通过局部最优去推出全局最优。在做一个题目的时候,靠自己手动模拟,如果模拟可行,就可以试一试贪心策略…

“反卷”风暴席卷双十一,商家们却卖爆了

文丨郭梦仪 11月12日零点,第16届双11落下帷幕,但商家的故事依然在继续。 “今年双11,没想到能月入千万,流量上升了200%。”乐尘家居主理人子旭向商业数据派表示,他今年最明显的感受是,认真经营的人在这个…

OCCT7.7.0 使用VTK9.2.0

1.前言 OCCT使用的VTK版本是VTK6.1.0,这个版本已经比较老了,如果要使用新版本的VTK,则需要自己引入新版本VTK,自己编译,我这里也比较好奇,为什么OCCT不升级一下VTK版本,下面自己来引入VTK9.2.0…

STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

《火灾报警系统_STM32U5》项目完整文档、项目源码,点击下方链接免费领取。 项目资料领取https://s.c1ns.cn/F5XyU STM32项目实战之“火灾报警系统”(基于STM32U5) 今天小编来分享一个《火灾报警系统》的项目案例,硬件平台是STM…

C++初阶 --- 类和对象(1)

类和对象(1) 一、类的相关内容1.访问限定符2.class关键字与struct关键字的区别3.类域 二、this指针三、成员函数存放在哪里?1. 函数的存放位置2. 练习题 一、类的相关内容 1.访问限定符 (1)C⼀种实现封装的⽅式&…

Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)

目录 安装所需库 Python获取PDF页数 Python获取PDF页面尺寸 Python获取PDF页面旋转角度 Python获取PDF页面方向 Python获取PDF页面标签 Python获取PDF页面边框信息 了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面,每个页…

Github配置ssh key原理及操作步骤

文章目录 配置SSH第一步:检查本地主机是否已经存在ssh key第二步:生成ssh key第三步:获取ssh key公钥内容第四步:Github账号上添加公钥第五步:验证是否设置成功验证原理 往github上push项目的时候,如果走ht…

爬虫学习8

Frida是一个动态代码插桩工具,允许开发者在运行时修改和调试应用程序 import ...:这行代码表示导入所需的模块或库,但具体的导入内容在图片中被省略了。 rdev frida.get_remote_device():这行代码获取一个远程设备实例&#xff…