当前位置: 首页 > news >正文

面试题2:从浏览器输入一个URL,到最终展示前端页面这一过程,会发生什么?

这是一个高频的面试题目。
题目答案是开放性的,一般以后端开发的角度回答。
当地址栏输入一个 URL 后:

一、首先会进行 DNS 域名解析
DNS 域名解析:网络上的设备都是通过 IP 地址,作为身份标识的。但是由于点分十进制的 IP 地址 不好记,就会使用一串单词(域名),表示这个 IP 地址。就像是给这个 IP地址 起了一个 别名。

就像 github 的域名是 www.github.com,很好记,但是他的 IP 地址是 20.205.243.166,其实我们在地址栏中输入github的IP地址,也是能够访问到github网站的,但是因为IP地址不好记,所以一般地址栏里输入的都是域名。那么 DNS域名解析系统 就会将 用户在地址栏输入的 URL 里面的 域名 自动解析成 IP 地址。

二、封装过程
1、转换得到IP地址后,浏览器就能构造出一个HTTP数据报
后面详解

2、HTTP数据报被交给传输层
数据报具体就是被交给了TCP协议,因为传输层就是基于TCP协议。TCP就根据解析出的IP地址,三次握手来先建立连接,然后再发送HTTP请求。

3、数据报根据IP协议被交给网络层。
IP协议封装成IP数据报。

4、IP数据报再交给数据链路层,封装成对应的数据帧。

5、最终这个数据帧通过网卡传输出去。

三、进行传输
传输过程会经历一些交换机和路由器。

交换机会把数据分用到数据链路层(更上层的就不用解析了),再重新封装,继续转发。路由器会把数据分用到网络层(更上层的就不用解析了),再重新封装,继续转发,路由器根据数据报中的目的IP在路由表中匹配,找个合适的方向发出去,每次转发,TTL就 - 1。交换机和路由器上需要重新分用、封装,是因为交换机上,需要先进行分用,才能获取到数据报从哪里来的,重新封装,是因为需要调整源 mac 和 目的 mac;路由器进行转发,需要分用将目的IP解析出来,才能查路由表规划转发路径。

四、数据报到达服务器之后,服务器对数据报进行层层分用
一直到 HTTP 这一层,服务器就会找到我们想访问的那个资源,把资源构造成HTTP响应。(根据请求计算出响应的过程)

五、服务器把响应数据重新封装
封装过程与步骤二一致。

六、响应数据在中间进行转发,回到浏览器

七、客户端针对数据报进行解析
解析出一个网页,渲染至浏览器上。

http://www.lryc.cn/news/379609.html

相关文章:

  • <Rust><iced><resvg>基于rust使用iced构建GUI实例:使用resvg库实现svg转png
  • 面试突击:Java 中的泛型
  • 3_2、MFC常用控件用法:组合框、滚动条和图片控件
  • 如何使用gprof对程序进行性能分析
  • 四川汇聚荣科技有限公司靠谱吗?
  • 可灵王炸更新,图生视频、视频续写,最长可达3分钟!Runway 不香了 ...
  • oracle中使用临时表GLOBAL TEMPORARY TABLE
  • Gradio入门—快速开始
  • AOP应用之系统操作日志
  • 海外云手机自动化管理,高效省力解决方案
  • 后仿真中的 《specify/endspecify block》之(5)使用specify进行时序仿真
  • win10/11磁盘管理
  • 【昇思初学入门】第四天打卡
  • 禁用/屏蔽 Chrome 默认快捷键
  • 移动端+PC端应用模式的智慧城管综合执法办案平台源码,案件在线办理、当事人信用管理、文书电子送达、沿街店铺分析
  • AI音乐大模型时代:版权归属与创意产业的新生长点
  • C++函数作为参数
  • 考前刷题练手感(北航期末往年数据结构编程题)
  • Android记录9--实现转盘效果
  • 【Oracle APEX开发小技巧1】转换类型实现显示小数点前的 0 以 及常见类型转换
  • GRIT论文阅读笔记
  • 1980python个性化电影推荐管理系统mysql数据库Django结构layUI布局elasticsearch存储计算机软件工程网页
  • 基于IDEA的Maven(依赖介绍和引用)
  • pytest测试框架pytest-sugar插件生成进度条
  • 若依框架集成微信支付
  • IOS开发学习日记(十七)
  • 【ARMv8/ARMv9 硬件加速系列 2 -- ARM NEON 加速运算介绍】
  • LayoutSystem布局系统
  • 滚球游戏笔记
  • Mysql8死锁排查