从键入网址到显示页面全流程(超详细版)

news2024/11/18 21:35:12

网络

👨‍🏫 小林coding 键入网址到网页显示,期间发生了什么

  • HTTP【端口:80】
    • 解析URL
      • 协议
      • Web服务器地址
      • 目录 + 文件名
    • 生成请求报文
      • 请求行
        • 请求方法(get、post …)
        • 请求路径
        • 协议的版本(HTTP/1.1)
      • 消息头
        • 键值对
          • 首部字段名
          • 首部字段值
      • 消息体
        • 数据
    • 扩展:响应报文
      • 状态行
        • 版本(HTTP/1.1)
        • 状态码
        • 状态短语(OK)
      • 消息头
        • 键值对
          • 首部字段名
          • 首部字段值
      • 消息体
        • 数据
  • DNS(域名转IP地址)
    • 前置须知:下面的步骤没有就往下,找到就返回
    • 浏览器域名的缓存
    • 操作系统缓存
    • hosts 文件
    • 本地 DNS 服务器
    • 发送 DNS 请求【UDP,端口:53】
      • 根域名服务器(不用于域名解析,指出顶级域名服务器地址)
      • 顶级域名服务器(.com)
      • 权威域名服务器(server.com)
    • 最终把域名转换为IP地址返回给本地DNS
  • 协议栈
    • 应用程序(浏览器)调用Socket
    • 委托操作系统的协议栈建立TCP连接
      • TCP 协议
      • UDP 协议
      • IP(传送网络包、确定路由)
        • ICMP
        • ARP
    • 网卡驱动程序
    • 物理网卡
  • TCP(可靠传输)
    • TCP 报文
      • 源端口号(16位)
      • 目标端口号(16位)
      • 序号(32位)
      • 确认序列号(32位)
      • 首部长度(4位)
      • 保留位(6位)
      • 状态位
        • SYN (Synchronize,同步序列号)
        • ACK (Acknowledgment,确认)
        • RST (Reset,重置)
        • FIN (Finish,结束)
        • PSH (Push,推送)
        • URG (Urgent,紧急)
      • 窗口大小(16位)【流量控制】
      • 校验和(16位)
      • 紧急指针(16位)
      • 选项
      • 数据【会把HTTP报文包装在这里】
    • TCP 三次握手建立连接
  • IP(远程定位)
    • IP 包格式
      • 版本(4位)
      • 首部长度(4位)
      • 服务类型 TOS(8位)
      • 总长度(16位)
      • 标识(16位)
      • 标志(3wei)
      • 片偏移(13位)
      • TTL(8位)
      • 协议号(8位)
      • 首部检验和(16位)
      • 源 IP 地址(32位)
        • 一个网卡绑定一个IP地址,多个网卡会有多个 IP地址
        • 路由表选 IP
          • 根据目标IP路由表项的子网掩码进行与运算
          • 与运算的结果 和 路由表项的目的IP进行匹配
            • 成功,选择此网卡绑定的IP
            • 失败,匹配下一个表项
          • 都没匹配成功,则走默认的网卡,子网掩码位0.0.0.0,目的IP也是 0.0.0.0
      • 目标 IP 地址(32位)
      • 选项
      • 数据(会把TCP数据包包装在这里)
  • MAC(两点传输)
    • MAC 包头部格式
      • 接收方 MAC 地址(48位)
        • 网卡生产时就写入ROM里的
      • 发送方 MAC 地址(48位)
        • ARP协议根据IP地址获取MAC地址
          • 先查询 ARP缓存
          • 没查到则 ARP广播查询
      • 协议类型(16位)
    • MAC包的数据
      • IP 数据包
  • 网卡(数字信息 转 电信号)
    • 数据链路层
    • 数据帧格式
  • 交换机
  • 路由器

Spring MVC

[Spring基础 - SpringMVC请求流程和案例](https://pdai.tech/md/spring/spring-x-framework-springmvc.html#spring-mvc%E7%9A%84%E8%AF%B7%E6%B1%82%E6%B5%81%E7%A8%8B)
  • 请求发给 DispatcherServelet**<font style="color:rgb(44, 62, 80);">DispatcherServlet</font>** 进行全局的流程控制
    • 通过 HandlerMapping 把 请求 映射成 HandlerExecutionChain【策略设计模式】
      • 一个处理器对象(页面控制器)
      • 多个 <font style="color:rgb(44, 62, 80);">HandlerInterceptor</font> 对象(或拦截器)
    • 通过 <font style="color:rgb(44, 62, 80);">HandlerAdapter</font>**<font style="color:rgb(44, 62, 80);"> </font>** 将处理器包装成适配器【适配器设计模式】
      • <font style="color:rgb(44, 62, 80);">HandlerAdapter </font> 根据适配的结果调用真正的处理器方法返回一个 <font style="color:rgb(44, 62, 80);">ModelAndView</font> 对象
        • 模型数据
        • 逻辑视图名
    • 通过ViewResolver<font style="color:rgb(44, 62, 80);">ModelAndView</font>的逻辑视图名解析成具体的<font style="color:rgb(44, 62, 80);">view</font>
    • 通过<font style="color:rgb(44, 62, 80);">View</font><font style="color:rgb(44, 62, 80);">model</font>数据模型进行渲染然后返回给DispatcherServelet
  • <font style="color:rgb(44, 62, 80);">DispatcherServlet</font>返回响应给用户

MySQL

[MySQL - 一条 SQL 的执行过程详解](https://pdai.tech/md/db/sql-mysql/sql-mysql-execute.html)

  • server层的连接器
  • 解析器
  • 优化器
  • 执行器
  • 从磁盘加载缓存数据到内存中的 Buffer Pool
  • 记录 undo日志
  • 执行SQL更新内存 Buffer Pool中的数据
  • 写 redo日志到 Redo Log Buffer
  • redo日志(prepare阶段)刷入磁盘【XA事务的参与者】
    • 先刷入 os cache
    • 再输入磁盘
  • 提交事务,binlog 文件写入磁盘【记录XA事务参与者的 ID】
  • redolog 写入 commit 标记

前端

渲染……

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

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

相关文章

品读 Java 经典巨著《Effective Java》90条编程法则,第4条:通过私有构造器强化不可实例化的能力

文章目录 【前言】欢迎订阅【品读《Effective Java》】系列专栏java.lang.Math 类的设计经验总结 【前言】欢迎订阅【品读《Effective Java》】系列专栏 《Effective Java》是 Java 开发领域的经典著作&#xff0c;作者 Joshua Bloch 以丰富的经验和深入的知识&#xff0c;全面…

主数据管理系统:KPaaS 集成平台助力企业数据治理

在数字化转型的浪潮中&#xff0c;企业面临着日益复杂的信息技术环境。多系统并存、数据分散的现象普遍存在&#xff0c;这对企业的数据管理和业务协同提出了严峻挑战。主数据管理&#xff08;Master Data Management, MDM&#xff09;作为确保企业核心业务数据准确、一致、完整…

Vite - public目录的图片也会被处理?(public目录的特点)

目录 1&#xff0c;问题描述2&#xff0c;解决3&#xff0c;问题分析3.1&#xff0c;public 目录特点3.2&#xff0c;原因 1&#xff0c;问题描述 复现步骤&#xff1a; 项目为 vite5.0.8 创建的 Vue3 TS 项目。 将图片&#xff08;10kb&#xff09;放到了 public 目录下&a…

设计表时的三大范式(MySQL)

设计表时的三大范式 什么是范式第一范式第二范式不满足第二范式的缺点数据冗余插入异常更新异常删除异常 第三范式 什么是范式 在表的设计中&#xff0c;范式是一种设计规范&#xff0c;用于更好的组织和管理数据。 设计数据表时的范式有第一范式1NF、第二范式2NF、第三范式3…

linux-L8.linux更改文件的拥有者

L8.更改文件的拥有者 Chown root 123.txt xxx_你的用户名_xxxlinux 查看文件的所有者 在Linux中&#xff0c;可以使用ls命令的-l选项来查看文件的详细信息&#xff0c;包括文件的所有者。如下&#xff1a; ls -l

【828华为云征文|轻松搭建蝌蚪聊天室:华为云Flexus X实例实战教程】

文章目录 华为云Flexus X实例概述部署【蝌蚪聊天室】项目准备工作具体操作指南服务器相关环境确认用git拉取项目安装相关依赖运行项目查看效果 总结 华为云Flexus X实例概述 华为云Flexus云服务是一款专为中小企业和开发者设计的高级云产品&#xff0c;提供即开即用的体验&…

动手学习RAG: moka-ai/m3e 模型微调deepspeed与对比学习

动手学习RAG: 向量模型动手学习RAG&#xff1a;迟交互模型colbert微调实践 bge-m3 1. 环境准备 pip install open-retrievals2. 使用M3E模型 from retrievals import AutoModelForEmbeddingembedder AutoModelForEmbedding.from_pretrained(moka-ai/m3e-base, pooling_meth…

【Windows】获取进程缓解策略设置情况

目录 一、前言 二、主要概念 三、实现步骤 四、总结 原文出处链接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/142234952] 一、前言 在现代操作系统中&#xff0c;进程缓解策略&#xff08;Process Mitigation Policy&#xff09;提供了一种防御机制…

谷歌创始人谢尔盖·布林回归一线:承认错失先机,每天都在写代码

在科技界&#xff0c;有些名字永远闪耀着创新的光芒&#xff0c;谢尔盖布林就是其中之一。作为谷歌的联合创始人&#xff0c;布林在经历了一段时间的隐退后&#xff0c;宣布重返一线&#xff0c;投身于人工智能&#xff08;AI&#xff09;技术的研发。本周&#xff0c;在洛杉矶…

F12抓包10:UI自动化 - Elements(元素)定位页面元素

​课程大纲 1、前端基础 1.1 元素 元素是构成HTML文档的基本组成部分之一&#xff0c;定义了文档的结构和内容&#xff0c;比如段落、标题、链接等。 元素大致分为3种&#xff1a;基本结构、自闭合元素&#xff08;self-closing element&#xff09;、嵌套元素。 1、基本结构&…

Docker 常用命令(未完待续...)

Docker 常用命令&#xff08;未完待续...&#xff09; 命令的完整名称和别名帮助登录和搜索命令 (Login and Search Commands)其他管理命令 (Other Management Commands)镜像命令 (Image Commands)容器命令 (Container Commands)docker run 从镜像创建并运行一个新的容器docker…

Midjourney中秋特典-12张图附魔咒

第一张 魔咒 A Mid-Autumn Festival poster, a round bright moon, a Chinese-style pavilion with a scene of a reunion from Dream of the Red Chamber, a new Chinese style --ar 3:4 --v 6.1第二张 魔咒 The bright full moon hung in the night sky,clear in outline a…

【疑难杂症2024-005】docker-compose中设置容器的ip为固定ip后,服务无法启动

本文由Markdown语法编辑器编辑完成。 1.背景&#xff1a; 我们的产品是通过docker image的方式发布&#xff0c;并且编排在docker-compose.yml中发布。在同一个docker-compose.yml中的服务&#xff0c;相互之间&#xff0c;可以通过对方的服务名和端口&#xff0c;来直接访问…

动态规划算法---04.斐波那契数列模型_解码方法_C++

题目链接&#xff1a;91. 解码方法 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/decode-ways/description/ 一、题目解析 题目&#xff1a; 题目大意&#xff1a;从题目中我们可以知道&#xff0c;解码就是在字符串s中由‘1’到‘26’的字符可以转化…

echarts饼图让部分数据显示在图外,部分显示在图内

echarts饼图让部分数据显示在图外&#xff0c;部分显示在图内 var dataList [{ value: 10, name: 商户 },{ value: 20, name: 充电桩 },{ value: 30, name: 业主 } ] option {series: [{type: pie,radius: 70%,data: dataList,labelLine: {show: true,position: outside,len…

JavaSE:4、流程控制

1、代码块与作用域 变量的使用范围&#xff0c;仅限于其定义时所处的代码块&#xff0c;也就是他的作用域。 目前所说的变量均为局部变量 public class Main {public static void main(String [] argv){int a10;{int b10;System.out.println(a);System.out.println(b);}Sys…

计算机网络八股总结

这里写目录标题 网络模型划分&#xff08;五层和七层&#xff09;及每一层的功能五层网络模型七层网络模型&#xff08;OSI模型&#xff09; 三次握手和四次挥手具体过程及原因三次握手四次挥手 TCP/IP协议组成UDP协议与TCP/IP协议的区别Http协议相关知识网络地址&#xff0c;子…

前端——标签二(超链接)

标签二 超链接标签&#xff1a;a 超链接&#xff0c;实现页面间的跳转和数据传输 a标签的属性 href&#xff1a;跳转路径&#xff08;url&#xff09;必须具备&#xff0c;表示点击后会跳转到哪个页面 target&#xff1a;页面打开方式。默认是 _self 如果是 _blank则用新的…

[基于 Vue CLI 5 + Vue 3 + Ant Design Vue 4 搭建项目] 02 配置 nodejs 淘宝镜像仓库

文章目录 为什么要配置淘宝镜像仓库呢如何查看镜像仓库如何配置镜像仓库 为什么要配置淘宝镜像仓库呢 主要是因为默认的镜像仓库是国外的&#xff0c;当我们使用 npm 安装依赖的时候会很慢或者失败&#xff0c;我们配置国内的镜像仓库这样就可以加速我们安装镜像的过程&#x…

突破瓶颈:Java并发编程的最佳实践与技巧,你了解了吗?

文章目录 1 什么是 Executor 和 ExecutorService &#xff1f;这两个接口有什么区别&#xff1f;2 java.util.concurrent 标准库中 ExecutorService 的可用实现是什么 &#xff1f;3 什么是 Java 内存模型&#xff08; JMM &#xff09;&#xff1f;描述下其目的和基本思想4 JM…