web前端网络相关知识

news2024/11/24 5:31:44

一、OSI 7层参考模型

1.物理层(光纤、电缆等物理介质)

传播比特流(bit) 01010101的形式

2.数据链路层(交换机,mac地址)

 将比特流组合成字节,组合成帧,用mac地址访问,通过广播的方式进行传输,在局域网内所有的计算机都能收到消息,这层叫数据帧

3.网络层(ip地址 :IP协议)

控制数据链路层和传输层之间的信息转发,这一层叫数据包

4.传输层(定义端口号)

tcp协议、udp协议,这层叫数据段

5.会话层

允许发送方和接收方启动或停止请求会话,这一层叫报文

6.表示层(安全、压缩、解码)

发送数据前进行加密,在接收者的表示层解密。会对图片文件等进行解码和编码jpeg、mp3等

7.应用层

调用接口发送请求,ssh协议等。

二、tcp的三次握手 四次挥手

SYN建立新的连接

1.客户端向服务端发送

seq(随机生成)序列号

2.服务端返回

服务端的seq序列号

SYN+ack序列号(客户端的seq+1)

3.客户端发送

ACK=1

seq序列号=客户端的seq+1

ack=服务端seq+1

 

三.浏览器输入url发生了什么

1. URL 解析

url由http协议、域名、端口、静态资源路径、参数组成

2. DNS 域名解析

DNS查询

首先查找浏览器DNS,没有的话去操作系统中查找user/dns目录,找不到去host中,最后才访问域名

3.建立 TCP 连接

一般在浏览器输入 URL,应用层的协议为 HTTP/HTTPS,其需要的是可靠的服务,所使用的传输层协议为 TCP。通过域名解析后,浏览器获得了服务器的 IP,则向服务器发起 TCP 连接,这时候就会发生三次握手行为。

四次挥手后拿到html页面进行渲染

首先html解析器将超文本和标签解析为dom树

将css转化为浏览器可以理解的stylesheets 计算出dom节点的样式

 

四.回流

部分或全部元素的尺寸、结构、或某些属性发生改变时,浏览器重新渲染部分或全部文档的过程(跟大小有关的都是回流)

  • 页面首次渲染
  • 浏览器窗口大小发生变化
  • 元素尺寸或位置发生改变
  • 元素内容变化(文字数量或图片大小等等)
  • 元素字体大小变化
  • 添加或删除可见的dom元素
  • 激活css伪类(:hover)
  • 查询某些属性或调用某些方法

 

五.重绘

页面中的样式改变并不影响它在文档流中的位置时,浏览器会将新样式赋予元素并重新绘制它(例如color、visibility等)

六.CDN负载均衡

七.触发options请求的两种方式

  1. 遇到跨域会发送options请求 看能不能通讯
  2. 遇到自定义请求头时也会触发options请求(只有post 的请求都是application/json的模式才会发送,form-data、text/plain等都不会触发)

八.强缓存(在后台去设置)

两种方式 设置expires或者 cache-control

from disk cache 硬盘缓存

from memory cache 内存缓存 =》浏览器多次刷新就去内存中读取了

设置强缓存之后第二次请求直接读取浏览器缓存

九.协商缓存

十.跨域(同源策略)

1.jsonp

通过script的src不受同源策略限制,可以跨域请求数据,但只能发送get请求

缺点:只能发送get 不安全不易维护

后端返回函数 但该函数是在前端定义的 会把值注入该函数的参数里面

const jsonp=(name)=>{
    let script = document.createElement('script')
    script.src='http://localhost:3000/api/jsonp?callback='+name
    document.body.appendChild(script)
    return new Promise((resolve)=>{
        window[name]=(data)=>{
            resolve(data)
        }
    })
}

jsonp(`callback${new Date().getTime()}`).then(res=>{
    console.log(res)
})

2.前端代理(vite、webpack等)

只针对开发环境有效,上线需要配置nginx

3.后端设置请求头

允许任何的跨域(不安全)

 可以把*换成本地地址

 

4.nginx代理(项目上线时配置)

十一.SSE

一种单工通信方式,只允许客户端发送一次请求,其余由服务端发送

后端:

前端使用(如果后端不设置默认叫message)

res.write(`event:lol}`)

sse.addEventListener('lol'.....)

 

十二.websocket(双工通信方式)

弱网模式 长时间不使用 网络波动有可能断开 需要心跳检测 保活 保持连接

后端

前端

十三.navigator.sendBeacon(使用html5新增的ping请求)

navigator.sendBeacon(url, data);

优点:

  • 不受页面卸载过程的影响,确保事件可以发送
  • 异步执行  不阻塞页面关闭或跳转
  • 能够发送跨域请求

缺点:

  • 只能发送post
  • 64kb以内
  • 无法自定义请求头
  • 只能传输(data)ArrayBuffer、ArrayBufferView、Blob、DOMString、FormData 或 URLSearchParams 类型的数据。
  • 如果开启了广告屏蔽插件 请求会无效

​​​​​​​

前端:

 

十四.SSL TSL

SSL比较有名 但现在全部使用TSL

 

十五.jwt

十六.前端网络环境(online offline)

1.前端网络状态

navigator.onLine ---ture在线 false离线

断网或联网会触发:

window.addEventListener('online',function()=>{

    console.log('online')

}
window.addEventListener('offline',function()=>{

    console.log('offline')

}

2.如何区分强网和弱网环境

navigator.connection(2g为弱网环境 3g、4g为强网环境)

 

 十七.防止xss注入

1.过滤标签(前后端都需要过滤)

2.设置csp

Content Security Policy 入门教程 - 阮一峰的网络日志

  • meta标签
<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">
  •  设置HTTP 头信息的Content-Security-Policy的字段 
Content-Security-Policy: script-src 'self'; object-src 'none';
style-src cdn.example.org third-party.org; child-src https:

3.找xss插件

4.工具

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

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

相关文章

Opentelemetry——分析C++项目链接时循环依赖导致的错误

大纲 环境分析过程函数是否真的未定义是否有完整实现被谁编译代码是否被编译到静态库 链接出现了什么问题原因猜想 解决方案参考资料 在《Opentelemetry-Language APIs & SDKs-CGetting Started》一文中&#xff0c;介绍了如果编译一个可以发出Trace遥测数据的C项目。虽然过…

制作直通网线和交叉网线

制作直通网线和交叉网线 1. 网络直通线2. 网络交叉线References 双绞线的连接方法有两种&#xff1a;直通连接和交叉连接 。 直通连接是将双绞线的两端分别都依次按白橙、橙、白绿、蓝、白蓝、绿、白棕、棕色的顺序 (国际 EIA/TIA 568B 标准) 压入 RJ45 水晶头内。这种方法制作…

SpringMVC(二)【请求与响应】

0、测试环境 我们简化开发&#xff0c;创建一个简单的环境&#xff08;因为没有其它包比如 service、dao&#xff0c;所以这里不用 Spring 容器&#xff0c;只用 SpringMVC 容器&#xff09;&#xff1a; Servelet 容器配置&#xff1a; package com.lyh.config;import org.s…

物理学视角讲解diffusion生成模型——混合高斯扩散模型

学习评分函数 想要通过逆向扩散从某个目标分布中抽样——其功能形式未知&#xff0c;我们只能通过抽样来学习——但这需要我们知道对应于目标分布的评分函数。知道评分函数&#xff0c;即这个分布对数的梯度&#xff0c;似乎等同于知道分布本身。我们如何学习评分函数呢&#…

Android--ConnectivityManager使用

一、前言 Android10之后官方废弃了通过WifiManager连接WIFI的方式&#xff0c;现在要使用ConnectivityManager连接WIFI 二、连接WIFI public class MainActivity extends AppCompatActivity {private static final String TAG"lkx";Overrideprotected void onCrea…

【MongoDB】数据的自动过期,TTL索引

文章目录 1. 前言2.概念与使用2.1.使用方式2.2.数组中包含日期字段2.3.设置具体的过期时间点2.4.额外的过滤条件 3.总结 1. 前言 在近期的工作中&#xff0c;使用了MongoDB来保存了一些日志数据&#xff0c;但是这些日志数据具有一定的时效性&#xff0c;也就是按照业务的需要…

K8S部署Nginx与问题

【containerd错误解决系列】failed to create shim task, OCI runtime create failed, unable to retrieve OCI... 环境 # cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) # uname -r 4.18.0-348.rt7.130.el8.x86_64 问题及现象 1、pod的状态全部都是Conta…

lua学习笔记18(面相对象之多态)

print("*****************************面相对象多态*******************************") --相同方法不同执行逻辑 object{} object.id1 function object:new()local obj{}self.__indexself setmetatable(obj,self)return obj end function object:subClass(className)…

C/C++基础----内存相关

malloc分配内存 用法 参数为要开辟内存的大小&#xff08;字节为单位&#xff09;返回值为void*,所以要强转一下语法&#xff1a;malloc()动态开辟20个字节的内存&#xff0c;代码&#xff1a;#include <iostream>using namespace std;int main() {int *a (int *) mal…

利用常量数组解码的方法

【题目描述】 把手放在键盘上时&#xff0c;稍不注意就会往右错一位。这样&#xff0c;输入Q会变成输入W&#xff0c;输入J会变成输入K等。键盘如图所示。 输入错位后敲出的几行字符串&#xff0c;输出打字员本来想打出的句子。 输入仅包含数字、空格、大写字母或标点符号&am…

笔试题4 -- 除2!(k次机会偶数除2求最小和)

除2&#xff01;(k次机会偶数除2求最小和) 文章目录 除2&#xff01;(k次机会偶数除2求最小和)读懂题目方案一&#xff08;基于multiset实现 -- 超时&#xff09;方案二&#xff08;改进算法--基于 priority_queue 实现&#xff09;总结 题目链接&#xff1a; 除2&#xff01;…

【优质书籍推荐】《Effective Java》是人工智能的基石

大家好&#xff0c;我是爱编程的喵喵。双985硕士毕业&#xff0c;现担任全栈工程师一职&#xff0c;热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。…

3D可视化技术:研发基地的科技新篇章

在科技日新月异的今天&#xff0c;我们生活在一个充满无限可能性的时代。而在这个时代中&#xff0c;3D可视化技术正以其独特的魅力&#xff0c;引领着科技领域的新一轮变革。 3D可视化技术通过三维图像的方式&#xff0c;将现实世界或虚拟世界中的物体、场景等以立体、逼真的形…

FileZilla安装下载与使用

实用工具系列 - FileZilla安装下载与使用_filezilla下载-CSDN博客文章浏览阅读4.4k次&#xff0c;点赞112次&#xff0c;收藏113次。一、概述二、下载三、安装四、使用教程_filezilla下载https://blog.csdn.net/Passerby_Wang/article/details/125298958?ops_request_misc%257…

湖仓一体(Lakehouse)架构的核心组件之存储层——Lakehouse 架构(三)

文章目录 前言Lakehouse 存储关键概念行存储与列存储基于存储的查询性能优化 Lakehouse 存储组件云储存文件格式Apache ParquetApache ORCApache Avro相似点和差异点 表格格式Apache HiveIceberg特性和优点 Apache Hudi特性和优点 Delta Lake特性和优点 相似点和差异点 总结 前…

抓住2024必应Bing国内广告推广的获客流量红利期

线上广告已成为企业获取客户流量的重要手段&#xff0c;作为全球领先的搜索引擎之一&#xff0c;必应Bing在国内市场拥有庞大的用户群体&#xff0c;为企业提供了一个宝贵的广告推广平台。展望2024年&#xff0c;必应Bing国内广告推广预计将进入一个获客流量的红利期&#xff0…

C语言知识(1) static修饰详解分享

1.前言 哈喽大家好啊&#xff0c;今天来给大家分享c中static的使用&#xff0c;希望能对大家有所帮助&#xff0c;请大家多多点赞&#xff0c;收藏支持我哦~ 2.正文 在讲解static之前&#xff0c;先给大家铺垫三个概念&#xff0c;方便大家理解。 2.1三则知识铺垫 2.1.1作…

Windows突然蓝屏解决办法

Windows突然蓝屏&#xff0c;然后重复开机没有用&#xff0c;但是能进入bios系统&#xff0c;证明内存和磁盘没事&#xff0c;用大白菜制作了PE系统盘制作过程&#xff08;之前一直都是用官方镜像制作&#xff0c;但是发现用大白菜制作可以对系统之前的磁盘里面重要的信息拷贝到…

Pixverse:开启文生视频与图生视频新纪元

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

“广进计划”中的特斯拉,加码驱动Robotaxi能否迎来新未来?

近期&#xff0c;特斯拉可以说是热搜上的常驻选手。 公司先是透露将于8月8日推出自动驾驶出租车Robotaxi&#xff0c;再是宣布将开启“广进计划”&#xff0c;在全球范围内裁员10%。官方资料显示&#xff0c;截至2023年末&#xff0c;特斯拉全球拥有超14万名员工&#xff0c;此…