网络-OSI、TCP、浏览器URL、CDN

news2024/11/25 16:51:06

文章目录

  • 前言
  • 一、OSI七层模型
  • 二、TCP/IP和UDP
      • TCP
        • 三次握手
        • 四次挥手
  • 三、 浏览器输入URL
    • URL
    • DNS查询
    • TCP/IP连接
    • 浏览器缓存
      • 强缓存
      • 协商缓存
      • 断开连接
    • 浏览器渲染
  • 四、 CDN
  • 总结


前言

本文记录OSI七层参考模型,和TCP/IP基本介绍。


OSI、TCP


一、OSI七层模型

七层参考模型分别是:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

  • 应用层(报文)
    最接近用户的一层,如使用ajax调用接口发送http请求、webSocket长连接、SSH协议等
  • 表示层(报文)
    对数据进行解码和编码,将数据解析成计算机识别的语言
  • 会话层(报文)
    是在发送方和接收方之间进行通讯时创建、维持、之后终止或断开连接的地方。
  • 传输层(数据段)
    定义端口号,以及控流和校验。
    • TCP
      TCP是面向连接的协议且是可靠的,因为建立TCP连接需要通过三次握手四次挥手,这样虽然可靠,但是连接速度有所减慢
    • UDP
      UDP具有实时性,传输效率比TCP高,但是不稳定,常用于直播、游戏
  • 网络层
    控制数据链路层与传输层之间的消息转发,建立、维护、终止网络连接。也就是说将数据链路层的数据转换为数据包进行传输,这一层定义了IP协议,通常我们使用的是IPV4。
    • 寻址
      利用IP地址进行通讯,与MAC地址类似,但是MAC属于物理地址,IP属于网络地址
    • 路由
      在同一个网络不需要网络层,就可以完成通讯。而对于不同网络之间的通讯就必须借助网络层的设备(路由器),路由器以端对端的方式查找对应IP地址。
  • 数据链路层
    数据链路层把物理层传输的比特流,通过MAC地址(网卡唯一标识:物理地址)拼接比特组成的数据帧,以广播的形式进行传输,局域网内的所有计算机都能收到消息。
  • 物理层
    物理层是直接和实物介质打交道的,这一层通过电、光、无线电波,获取对应的信号转换成二进制数据,单位为bit,称为传输比特流

二、TCP/IP和UDP

TCP

三次握手

TCP连接需要通过三次握手才能建立连接。

名词解释:

  • seq 序列号 随机生成
  • ack 确认号 ack=seq+1
  • ACK 确定序列号有效
  • SYN 发起新连接

TCP三次握手

四次挥手

在关闭连接时,无论是客户端断开还是服务端断开需要通过四次挥手才能关闭TCP连接。在第三次挥手之前第二次挥手之后,会将未完成的请求完成,才会进行第三次挥手。
在进行第三次挥手的时候客户端会进入超时等待状态,进入超时等待是因为怕ACK丢失,导致连接无法关闭,等待状态会让服务端重新发送FIN。
名词解释:

  • seq 序列号 随机生成
  • ack 确认号 ack=seq+1
  • ACK 确定序列号有效
  • SYN 发起新连接
  • FIN 完成

四次挥手


三、 浏览器输入URL

URL

URL由三部分组成:协议、域名、和请求资源路径
URL

DNS查询

DNS是将ip与域名做映射关系,这一步就是通过域名查找ip地址
DNS查询会以以下几个步骤进行,其中一步找到则跳到建立连接部分。

  • 浏览器自身DNS
    浏览器DNS

  • 操作系统DNS

  • 本地hosts文件

  • 向域名服务器发送请求
    向域名服务器发送请求分为三步,首先在根域名服务器找如果没有对应ip就到顶级域名服务器再没有就到权威域名服务器找:
    域名服务器

    • 根域名
      根域名

    • 顶级域名
      顶级域名

    • 权威域名
      权威域名

TCP/IP连接

浏览器缓存

强缓存

让浏览器强制缓存服务端提供的资源,一般是js、css等静态资源,在第一次请求后,这个请求就直接会在浏览器缓存中找,分为磁盘缓存和内存缓存,在返回状态码后有标记,在通过磁盘读取缓存后有几率读取浏览器内存中都缓存。

需要后端配置其中一个响应头字段:

  • Cache-Control: max-age=432000
  • Expires: Wed,21 Oct 2015 07:28:00 GMT

强缓存

协商缓存

后端通过两个字段确定缓存的时间:

  • Last-Modified: Set, 21 Oct 2015 07:30:00 GMT (最后被修改的时间)
  • if-Modified-Sice: Set, 21 Oct 2015 07:30:00 GMT
    或者:
  • ETAG: “0.0.1”
  • if-None-Match: “0.0.1”
    通过比较两个字段的值,确定资源是否改动,没改动就返回304,否则将返回200并带上最新资源,ETAG可带版本号或者文件hash。

断开连接

浏览器渲染

  • 解析HTML进行AST解析成DOM树

  • 将css样式转换成浏览器认识的样式,计算出DOM节点样式

回流
当元素尺寸、结构、或属性发生变化时,浏览器将重新渲染部分或者全部文档

导致回流操作:

  • 首次渲染
  • 浏览器窗口发生改变
  • 元素尺寸、位置发生改变
  • 元素内容变化
  • 元素字体大小
  • 添加或者删除可见的DOM元素
  • 激活CSS伪类(:hover)
  • 查询某些属性或者调用某些方法
    • clientWidth、clientHeight、clienTop、clienLeft
    • offsetWidth
    • scrollwidth
    • getComputedStyle()
    • getBoundingClientRect()
    • scrollTo()

重绘
当页面元素样式的改变并不影响他在文档流中的位置时,浏览器会将新样式赋予给元素并重绘它

  • JS解析
    JS的解析通过V8引擎,通过解析器解析成AST语法树,再转换成字节码(兼容跨平台),通过解释器(JIT)编译代码后变成机器码,运行到CPU。

四、 CDN

内容分发网络,CDN是用来优化网络资源请求时间的,在DNS解析的时候会去距离比较近的服务器查找。

CDN


总结

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

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

相关文章

【C++入门到精通】C++入门 —— set multiset (STL)

阅读导航 前言一、set简介二、std::set1. std::set简介2. std::set的使用- 基本使用- std::set的模板参数列表- std::set的构造函数- std::set的迭代器- std::set容量与元素访问函数 3. set的所有函数(表) 三、std::multiset1. std::multiset简介 四、st…

农产品经营小程序商城的作用是什么?

农场或拥有稳定货源的商家更适合做线上生鲜蔬果生意,近些年随着线上电商崛起,如何打通并且加深同城、到店、快递货品销售场景成为商家们需要思考的;微信是企业商家重要的营销平台,因此在微信卖货增长很重要,但想要完善…

【中国知名企业高管团队】系列22:滴滴

大家好! 今天华研荟的走进中国知名企业高管团队系列带大家认识滴滴。 滴滴公司是出行领域的先行者,也是一个典型样本。通过滴滴公司的名字变迁我们可以感受到滴滴公司的业务发展,这也是整个出行行业公司的发展路径: 第一阶段&a…

神经辐射场(NeRF)2023最新论文及源代码合集

神经辐射场(NeRF)作为一种先进的计算机图形学技术,能够生成高质量的三维重建模型,在计算机图形学、计算机视觉、增强现实等领域都有着广泛的应用前景,因此,自2020年惊艳亮相后,神经辐射场也成为…

C理解(三):结构体,共用体,枚举

结构体 结构体元素访问本质是指针方式,依据元素在结构体中的偏移量和元素类型进行访问 元素占字节数和类型占字节数不同,导致结构体的元素偏移量要复杂,因此结构体需要对齐访问 结构体对齐规则 结构体本身应在在4字节对齐处(占4个字节) 每个元素都对其存…

二、MAVEN的安装和配置

二、MAVEN的安装和配置 1.官网下载:http://maven.apache.org/download.cgi 2.解压文件包 1.apache-maven-3.5.2-bin.zip 直接解压到指定安装路径。 2.apache-maven-3.5.2-src.zip maven源码包。 3.配置环境变量,类似jdk环境配置 1.创建M2_HOME环境变…

关于操作系统与内核科普

关于操作系统与内核科普 一.什么是操作系统 操作系统是管理计算机硬件与软件资源的计算机程序。它为计算机硬件和软件提供了一种中间层。 操作系统是一种软件,主要目的有三种: 一.管理计算机资源,这些资源包括CPU,内存&#xff0…

正在等待操作系统重新启动。 请重新启动计算机以安装autocad 2024。

正在等待操作系统重新启动。 请重新启动计算机以安装autocad 2024。 这是刚启动Autodesk 2024产品就弹出的弹窗,重启之后启动还是有这个 一直阻止安装程序运行 出现问题的原因是安装包存在问题 使用正确的安装包即可解决这个问题 需要的朋友查看图片或者评伦取…

【剑指Offer】7.重建二叉树

题目 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和 vin 均无重复…

《Python趣味工具》——ppt的操作(2)

在上次,我们对PPT进行了简单的处理;本次,我们要将PPT中的文本内容写入到 Word 文档中并添加标题,让 Word 文档看上去结构清晰,方便使用。 文章目录 一、安装docx模块:二、从PPT中转移文字:1. 创…

Elasticsearch基础篇(二):Elasticsearch在windows和liunx上的安装部署

Elasticsearch简介 前言1. Windows环境部署Elasticsearch1.1 下载并解压Elasticsearch压缩包1.2 命令行启动elasticsearch1.3 验证是否成功启动elasticsearch1.4 关闭Elasticsearch1.5 在Windows上安装Elasticsearch作为服务 2. Liunx环境部署Elasticsearch安装 Elasticsearch …

Python 爬虫 / web 面试常见问题

嗨喽,大家好呀~这里是爱看美女的茜茜呐 👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~ python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可 爬虫面试常见…

Excel技巧之【锁定工作簿】

Excel工作簿是Excel工作区中一个或多个工作表的集合,我们知道Excel可以设置锁定工作表,防止意外或被他人修改,但可能有小伙伴不知道,Excel工作簿也同样可以设置锁定,防止更改。 那工作簿锁定后会怎么样呢?…

Mysql——三、SQL语句(上篇)

Mysql 一、SQL语句基础1、SQL简介2、SQL语句分类3、SQL语句的书写规范 二、数据库操作三、MySQL 字符集1、变量2、utf8和utf8mb4的区别 四、数据库对象五、SELECT语句1、简单的SELECT语句2、SQL函数2.1 聚合函数2.2 数值型函数2.3 字符串函数2.4 日期和时间函数2.5 流程控制函数…

Spring结合自定义注解实现 AOP 切面功能

Spring结合自定义注解实现 AOP 切面功能 Spring AOP 注解概述Aspect 快速入门execution 切点表达式 拦截指定类的方法Pointcut("annotation(xx)") 拦截拥有指定注解的方法环绕通知 实现开关目标方法案例1:自定义注解切面实现统一日志处理1.自定义日志注解…

Python3中类的高级语法及实战

Python3中类的高级语法及实战 Python3(基础|高级)语法实战(|多线程|多进程|线程池|进程池技术)|多线程安全问题解决方案 一: 类定义语法 通过下面的实例,你将会了解到如下的内容体系: (1)类静态属性 (2)类动态属性 (3)类初始化过程: __init__(self)被执行&am…

java对象半初始化问题是怎么回事

文章目录 一、前言1. 什么是Java对象半初始化2. 对象半初始化问题引发的影响 二、对象半初始化问题详解1. Java对象创建过程 2. 对象半初始化问题产生的原因三、实例分析:对象半初始化问题的表现1. 单线程环境下的半初始化2. 多线程环境下的半初始化 四、解决方案及…

Java 基于 SpringBoot 的校园疫情防控系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2.主要技术3 需求分析4系统设计4.1功能结构4.2 数据库设计4.2.1 数据库E/R图4.2.2 数据库表…

预编译(1)

目录 预定义符号: 使用: 结果: 预编译前后对比: #define定义常量: 基本语法: 举例1: 结果: 预编译前后对比: 举例2: 预编译前后对比: 注…

嵌入式软硬件

在这里插入图片描述