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

✊构建浏览器工作原理知识体系(网络协议篇)

🌻 前言

书接上回~

系列文章目录:

  1. # ✊构建浏览器工作原理知识体系(开篇)
  2. # ✊构建浏览器工作原理知识体系(浏览器内核篇)
  3. # ✊构建浏览器工作原理知识体系(网络协议篇)
  4. ✊构建浏览器工作原理知识体系(网页加载超详细全过程篇)

为什么你觉得偶尔看浏览器的工作原理,但总是忘呢😵‍💫,因为你没有形成一个完整的知识网络,你的记忆是碎片化的。正如人的神经网络,只有当你的记忆相互依赖,相互链接,才能形成长期稳定的记忆。

所以本系列文章我将用一条知识线将浏览器工作原理的知识串联起来,因为本文的目的是为了帮助大家建立浏览器基础的思维树,所以很多细节点不做过多阐述,先有了树,后面你在上面伸展枝叶就会发现清晰明了很多。欢迎点赞支持或评论指正。

🪴一、网络进程的工作

网络进程是浏览器的一个重要组成部分,主要负责处理网络相关的任务和功能。其工作主要包括以下几个方面:

  1. 网络请求处理: 当用户在浏览器中输入网址、点击链接或提交表单时,网络进程负责处理这些网络请求。它通过与服务器通信,获取请求的网页或资源,并将其传输到渲染进程以供显示。
  2. HTTP 缓存管理: 网络进程负责管理浏览器的 HTTP 缓存,包括缓存的读取、写入、更新和失效等操作。通过合理地利用缓存机制,可以减少对服务器的请求次数,提高页面加载速度和用户体验。
  3. 网络安全保障: 网络进程也负责处理浏览器的网络安全功能,包括对 HTTPS 连接的管理、证书验证、安全策略的执行等。它确保用户在浏览器中的网络通信是安全可靠的。
  4. 跨域资源共享(CORS): 当浏览器需要访问其他域名下的资源时,网络进程负责处理跨域资源共享(CORS)请求,确保安全地访问跨域资源。
  5. 代理服务器交互: 在一些特殊情况下,浏览器可能通过代理服务器来访问互联网资源,网络进程负责与代理服务器进行交互,获取代理服务提供的资源。
  6. 其他网络相关任务: 网络进程还可能负责其他一些网络相关的任务,如 DNS 解析、TCP 连接管理、请求重定向、请求重试、流量优化等。

综上所述,网络进程在浏览器中扮演着重要的角色,它负责处理各种网络请求和任务,确保用户能够安全、快速地访问互联网资源。

🪴二、OSI七层模型、TCP/IP四层模型

OSI 是 ISO(国际标准化组织)组织在1985年研究的网络互连模型。ISO 为了更好的使网络应用更为普及,推出了OSI 参考模型。其目的是推荐所有公司使用这个规范来控制网络。如果所有公司都使用相同的规范,就能实现网络互联。

在这里插入图片描述

简单概述下七层模型的作用:

  • 应用层:为应用程序提供服务;
  • 表示层:数据格式转换、数据加密;
  • 会话层:建立、管理、维护会话;
  • 传输层:建立、管理、维护端到端的连接
  • 网络层:IP地址和路由选择;
  • 数据链路层:提供介质访问和链路管理;
  • 物理层:物理设备确保数据传输;

TCP/IP 协议族是网络通信的基础,它是很多协议的集合。同样,TCP/IP 协议族也采用了分层策略,共分为4层:应用层、传输层、网络层、数据链路层。之所以要分层管理,主要有两个好处:

  1. 把各层的接口部分设计好后,每层内部的设计就可以自动变动了。如果某个地方需要改变设计时,只需要替换变动的层即可,不用整体做调整;
  2. 层次化后,设计变得相对简单了,处于应用层上的应用就可以专注于自己的人物,而不需要考虑其他的数据传输的问题。

简单概述下 TCP/IP 四层的作用:

  • 应用层:决定了向用户提供应用服务时通信的活动;
  • 传输层:给应用层提供网络连接中的计算机之间的数据传输;
  • 网络层:处理网络上流动的数据包;
  • 数据链路层:连接网络的硬件部分;

🪴三、TCP/IP协议族

TCP/IP协议族不止是指TCP协议和IP协议,而是指计算机之间为了实现通信,而约定好的一些规则,包括很多协议。例如TCP、IP、HTTP、TCP、UDP、ICMP、SNMP

(一)、 TCP/IP通信传输流

正如上一章所说,TCP/IP协议采取分层管理,以便于后续单独对某一层进行调整。利用TCP/IP协议族进行通信时,会通过分层顺序和对方通信,并且在数据传输时会进行封装,即在发送端发送数据时经过每层,都会被打上该层的首部信息,接收端接收时再在每一层去除这些信息。大致步骤如下图:

相关文章:

✊构建浏览器工作原理知识体系(网络协议篇)

🌻 前言 书接上回~ 系列文章目录: # ✊构建浏览器工作原理知识体系(开篇)# ✊构建浏览器工作原理知识体系(浏览器内核篇)# ✊构建浏览器工作原理知识体系(网络协议篇)✊构建浏览器工作原理知识体系(网页加载超详细全过程篇)为什么你觉得偶尔看浏览器的工作原理,…...

【AI大模型】Transformers大模型库(八):大模型微调之LoraConfig

目录 一、引言 二、LoraConfig配置参数 2.1 概述 2.2 LoraConfig参数说明 2.3 代码示例 三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库,为huggingface上数以万计的预训练大模型提供预测、训练等服务。 🤗 Transformers …...

8-1RT-Thread消息队列

8-1RT-Thread消息队列 消息队列又称队列,是一种常用于线程间通信的数据结构。 消息队列控制块里有两个链表,空闲列表用来挂接空的小几块,另一个链表是用来挂接存有消息的消息框。其中消息链表头指向消息队列当中的第一个消息框,而…...

解除网站IP抓取限制的方法有哪些?

在爬取网站数据时,经常会遇到IP被限制,导致返回的数据无法显示或者直接空白的情况。这时候就需要采取一些方法来解除网站对IP的爬取限制。IP代理是帮助用户绕过网站限制,保持稳定连接,实现数据顺畅爬取的重要解决方案。 1、IP代理…...

“手撕”二叉树的OJ习题

故事的开头,我们先来三道不是oj的开胃菜,练练手感,后面9道都是OJ题。 目录 第一题 第二题 第三题 第四题 第五题 第六题 第七题 第八题 第九题 第十题 第十一题 第一题 二叉树前序非递归遍历实现 。 首先我们需要一个栈来存放二…...

Linux Mint 21.3简介

Linux Mint 21.3是一个更新版本,其中包含了许多新特性和改进。以下是一些主要更新内容: 1. Cinnamon 6.0桌面环境:Linux Mint 21.3采用了最新的Cinnamon 6.0桌面环境,带来了新的功能和改进,例如支持Wayland会话&#…...

C++11 面试题整理

C面试题 1 菱形继承 2 多态 多态实现原理: 静态多态 动态多态 静态多态: 依赖函数重载,编译期确定。 函数重载:允许在同一作用于内声明多个功能类似的同名函数,函数列表不同。注意:不能仅通过返回值类型…...

【智能制造-2】焊缝跟踪

焊缝跟踪? 焊缝跟踪:指在焊接位置前方安装光学传感器进行数据采集,然后传输到焊接机器人,进行自适应的各种模糊控制算法校正焊接机器人或专机的轨迹,实现自适应控制,达到实时的焊缝跟踪。 焊缝跟踪的方法…...

优思学院|用ChatGPT快速完成数据分析图表【柏累托图法】

数据分析是很多行业的人不可少的一部分,尤其是质量工程师更是日常的工作。然而,随着科技的进步,人工智能(AI)将逐渐承担起数据计算的工作,这意味着未来的质量工程师需要具备的不仅仅是计算能力,…...

[晕事]今天做了件晕事37 extern “C“ 被认为了是外部函数

最近看到一个函数声明是 extern “C" void _dump(); 这里的声明是要告诉编译器,这个_dump是C语言的符号,没有经过mangle过的。但是这个关键字可能让人混淆是外部函数。因为这个关键字可以声明外部函数。这也算是一词多用的一个普遍问题。关键的关键…...

问题:关于醋酸钠的结构,下列说法错误的是() #媒体#媒体

问题:关于醋酸钠的结构,下列说法错误的是() A.有极性键 B.有非极性键 C.是极性分子 D.是离子晶体 参考答案如图所示...

网络安全(补充)

同步包风暴(SYN Flood)攻击者假造源网址发送多个同步数据包(SYN Packet)给服务器,服务器因无法收到确认数据包(ACK Packet),使TCP/IP协议三次握手无法顺利完成,因而无法建…...

Redis集群(3)

集群扩容 节点配置和启动 我们要加入两个节点,主节点端口为6903,从节点端口为6933。配置与6900节点类似,不再赘述。启动这两个节点: ./redis-server ../conf/cluster_m_6903.conf ./redis-server ../conf/cluster_s_6933.conf加…...

防止Selenium被检测 Google Chrome 125

背景 最近在使用selenium自动播放学习课程,相信大家也有一些类似的使用场景。 能自动化的事情,绝不自己干。 为防止被检测是机器人做题,刷视频,需要做一些小调整。 先来看作为服务方维护者,是如何检测是Selenium打…...

LeetCode 算法:螺旋矩阵c++

原题链接🔗:螺旋矩阵 难度:中等⭐️⭐️ 题目 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&…...

【全开源】医护上门系统小程序APP公众号h5源码

医护上门系统:健康守护,就在您身边 🚪引言:开启全新的医护模式 在快节奏的现代生活中,健康问题往往成为我们关注的焦点。而“医护上门系统”正是为了满足这一需求,将专业的医疗服务送到您的家中。这一创新…...

结构体<C语言>

导言 结构体是C语言中的一种自定义类型,它的值(成员变量)可以是多个,且这些值可以为不同类型,这也是和数组的主要区别,下面将介绍它的一些基本用法,包括:结构体的创建、结构体变量的…...

点云分割报告整理(未完成版-每天写一点)

体积占用网格表示对点进行体素化,然后使用3d卷积神经网络来学习体素级语义。由于点云的稀疏性,体素化效率低,为避免较高的计算成本而忽略了细节。此外,由于同一体素内的所有点都被赋予了相同的语义标签,因此精度受到限…...

python基础 002 - 1 基础语法

1 标识符(identifier),识别码,表明身份 身份证,ID 定义:在编程语言中标识符就是程序员自己规定的具有特定含义的词,比如类名称、属性名称、变量名等, 在Python 中,pyt…...

浅谈Web开发的三大主流框架:Angular、React和Vue.js

在现代Web开发领域,Angular、React和Vue.js作为三大主流前端框架,各自拥有独特的特点和优势,为开发者提供丰富的选择。让我们更深入地了解这三大框架,并通过一些小型样例来展示它们的特性。 Angular Angular是一个完整的前端框架…...

使用net.sf.mpxj读取project的.mpp文件

1、导入.mpp文件 public void importMppFile(String updateType, MultipartFile multipartFile) {try (InputStream inputStream multipartFile.getInputStream()) {// 读取文件的组件MPPReader mppReader new MPPReader();// 注意,如果在这一步出现了读取异常&a…...

ubuntu 22.04 升级到24.04

step1. sudo apt update sudo apt upgrade sudo apt dist-upgrade step2. sudo apt autoremove step3. sudo apt install update-manager-core step4. sudo vim /etc/update-manager/release-upgrades 将 Prompt 设置为 lts: Promptlts 保存并退出 step5. sudo do-r…...

FreeRTOS学习笔记-基于stm32(14)内存管理

一、FreeRTOS 内存管理简介 FreeRTOS有两种方法来创建任务,队列,信号量等,一种动态一种静态。静态方法需要手动定义任务堆栈。使用动态内存管理的时候 FreeRTOS 内核在创建任务、队列、信号量的时候会动态的申请 RAM。 我们在移植FreeRTOS时可…...

关于Lambert W函数

来源:R. M. Corless, G. H. Gonnet, D. E. G. Hare, D. J. Jeffrey, and D. E. Knuth, “On Lambert’s W function,” Adv. Comput. Math., vol. 5, pp. 329–359, May 1996, doi: 10.1007/BF02124750. 摘要 Lambert W函数被定义为函数 w ↦ w e w w \mapsto we^…...

【免杀】C2远控-APC注入-进程镂空

目录 进程镂空&傀儡进程(主要过内存扫描)代码 傀儡进程演示如何上线上线演示 APC注入&进程欺骗(主要过内存扫描)同步调用与异步调用代码演示 进程镂空&傀儡进程(主要过内存扫描) 进程镂空(Pro…...

20240611 讯飞JAVA工程师(研发经理岗)面试

1.线程安全的集合类 在Java中,一些线程安全的集合类有Stack、Vector、Properties、Hashtable等 2.线程池中execute和submit的区别 1)参数及返回值不同 excute只能提交Runnable,无返回值 submit既可以提交Runnable,返回值为null&am…...

【研发日记】Matlab/Simulink软件优化(三)——利用NaNFlag为数据处理算法降阶

文章目录 前言 背景介绍 初始算法 优化算法 分析和应用 总结 前言 见《【研发日记】Matlab/Simulink软件优化(一)——动态内存负荷压缩》 见《【研发日记】Matlab/Simulink软件优化(二)——通信负载柔性均衡算法》 背景介绍 在一个嵌入式软件开发项目中,需要开…...

go语言接口之http.Handler接口

package httptype Handler interface {ServeHTTP(w ResponseWriter, r *Request) }func ListenAndServe(address string, h Handler) error ListenAndServe函数需要一个例如“localhost:8000”的服务器地址,和一个所有请求都可以分 派的Handler接口实例。它会一直运…...

R语言 | 使用最简单方法添加显著性ggpubr包

本期教程原文:使用最简单方法添加显著性ggsignif包 本期教程 获得本期教程代码和数据,在后台回复关键词:20240605 小杜的生信笔记,自2021年11月开始做的知识分享,主要内容是R语言绘图教程、转录组上游分析、转录组下游…...

【Linux】shell脚本变量——系统变量、环境变量和用户自定义变量

系统变量 系统变量是由系统预设的,它们通常在系统启动时被加载,并对所有用户和所有shell实例都有效。这些变量通常控制着系统的行为和配置,例如PATH(命令搜索路径)、HOME(用户主目录)等。系统变…...

福建省建设监理网官方网站/下载百度到桌面

前提 假设你了解过 SpringBoot 和 Kafka。 1、SpringBoot 如果对 SpringBoot 不了解的话,建议去看看 DD 大佬 和 纯洁的微笑 的系列博客。 2、Kafka Kafka 的话可以看看我前两天写的博客 : Kafka 安装及快速入门 学习的话自己开台虚拟机自己手动搭建环境…...

html怎么做音乐网站/百度文库网页版

Python中几种常用包比较2、用xlrd包读取Excel文件 引用包 import xlrd 打开文件 xlrd.open_workbook(r/root/excel/chat.xls) 获取你要打开的sheet文件 # 获取所有sheet sheet_name workbook.sheet_names()[0] # 根据sheet索引或者名称获取sheet内容 sheet workbook.sheet_by…...

做网站图片大小不合适怎么调/百度广告优化

MySQL不支持数组变量。要获得相同的结果,请使用表DUAL。以下是语法:SELECT yourValue1 AS ArrayValue FROM DUALUNION ALLSELECT yourValue2 FROM DUALUNION ALLSELECT yourValue3 FROM DUALUNION ALLSELECT yourValue4 FROM DUALUNION ALL......SELECT …...

简单网站制作教程/超链接友情外链查询

删除 node_modules包 然后npm install 然后再deploy d即可 这个问题真是闹心死我了 https://github.com/npm/npm/issues/17444 网上又有人说是vs code占用了,所以最好把vs code也暂时关掉 我这样做之后就好使了 还有说加环境变量的,也就是把博客地址…...

企业管理培训课程目录/山东seo推广公司

博主QQ:819594300博客地址:http://zpf666.blog.51cto.com/有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!一、 zabbix简介zabbix是完全开源的工具,整合了cacti和nagios等特性附:SN…...

网站开发软件 d/如何在网上推广自己的产品

文章目录ARM裸机开发:主频与时钟一、时钟系统1.1 外部时钟电路1.2 7路PLL时钟源1.3 时钟树概览二、时钟配置2.1 内核时钟设置2.2 PFD时钟设置2.3 AHB、IPG 和 PERCLK 根时钟设置三、配置代码ARM裸机开发:主频与时钟 本章了解一下 IMX 的系统时钟主频配置…...