web前端网络相关知识

一、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.工具

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bugku-web-login2

这里提示是命令执行 抓包发现有五个报文 其中login.php中有base64加密语句 $sql"SELECT username,password FROM admin WHERE username".$username.""; if (!empty($row) && $row[password]md5($password)){ } 这里得到SQL语句的组成&#xff0c;…

CRMEB PRO安装系统配置清单

统在安装完成之后&#xff0c;需要对系统进行一系列的配置&#xff0c;才能正常使用全部的功能&#xff0c;以下是官方整理的配置清单

Xinstall带你进入一键通过URL打开App的新时代

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;在使用App的过程中&#xff0c;我们常常会遇到一些烦恼。比如&#xff0c;当我们通过一个网页链接想要打开对应的App时&#xff0c;往往需要先复制链接&#xff0c;然后在App中粘贴&a…

2024的新宠儿——Mamba(1):SSM

引言 自 2017 年被提出以来,Transformer 已经成为 AI 大模型的主流架构,但随着模型规模的扩展和需要处理的序列不断变长,Transformer 的局限性也逐渐凸显。一个很明显的缺陷是:Transformer 模型中自注意力机制的计算量会随着上下文长度的增加呈平方级增长,比如上下文增加 …

多模态之ALBEF—先对齐后融合,利用动量蒸馏学习视觉语言模型表征,学习细节理解与论文详细阅读:Align before Fuse

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation &#xff08;ALBEF&#xff09;在融合之前对齐&#xff1a;利用动量蒸馏进行视觉与语言表示学习 Paper: arxiv.org/pdf/2107.07651.pdf Github: https://github.com/salesforce/…

用云手机运营TikTok有什么好处?

在数字化浪潮的推动下&#xff0c;社交媒体平台正重塑商业推广与品牌建设的面貌。TikTok&#xff0c;这款全球热门的短视频应用&#xff0c;已经吸引了亿万用户的瞩目。对于出海电商和品牌推广而言&#xff0c;借助云手机运营TikTok&#xff0c;能够解锁更多潜在可能&#xff0…

Linux:进程调度

Linux&#xff1a;进程调度 进程优先级查看优先级调整优先级 Linux 2.6 内核进程调度队列 进程优先级 查看优先级 在Linux中&#xff0c;进程是有优先级的&#xff0c;我们可以通过指令ps -la来查看&#xff1a; 其中PRI表示priority优先级&#xff0c;在Linux中&#xff0c;…

第九、十章 异常、模块、包以及数据可视化

第九章 异常、模块、包 异常 捕获异常 捕获常规异常 # 捕获常规异常 try:f open("D:/abc.txt", "r", encoding "UTF-8") except:print("出现异常了&#xff0c;因为文件不存在&#xff0c;我将open的模式&#xff0c;改为w模式去打开&qu…

docker灵活部署mysql

博客简要 用docker部署mysql,并将数据库映射到主机上&#xff0c;并增加远端访问mysql数据库 当你使用Docker运行MySQL时&#xff0c;并且希望将MySQL数据库的数据存储在宿主机&#xff08;也就是运行Docker的主机&#xff09;上的特定路径&#xff0c;你需要在启动容器时通过…

windows下vscode调试虚拟机linux c++工程的三种方法

vscode去远程调试方法有很多种&#xff0c;不同的插件对应了不同的调试方法&#xff0c;比如&#xff1a; 1.C/C插件进行GDB调试(编写launch.json文件) 2.C/C Runner插件 3.CMake Tools插件&#xff08;只针对CMake工程&#xff0c;需要搭配C/C插件一起使用&#xff0c;但无…

js自动缩放页面,html自动缩放页面,大屏自动缩放页面,数字看板自动缩放页面,大数据看板自动缩放页面

js自动缩放页面,html自动缩放页面,大屏自动缩放页面,数字看板自动缩放页面,大数据看板自动缩放页面 由纯JS实现 html代码 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-C…

论文精读--Learning Efficient Object Detection Models with Knowledge Distillation

在目标检测任务中&#xff0c;存在特殊的挑战&#xff1a; &#xff08;1&#xff09;目标检测任务标签信息量更大&#xff0c;根据标签学到的模型更为复杂&#xff0c;压缩后损失更多 &#xff08;2&#xff09;分类任务中&#xff0c;每个类别相对均衡&#xff0c;同等重要…

sql server2008触发器

sql server在Navicat工具不能插入数据 可以去写代码插入&#xff0c;代码连接sql server可以插入 或者使用sql server专门的工具 BEGINdeclare a int;declare s t_amount;select a baddebt_age_id,srate from aa_baddebt_age;INSERT INTO dade(id,name) VALUES(a,s) END1、插…

易保全网络赋强公证系统,前置预防、快速化解债权纠纷

网络赋强公证是一种创新的法律服务模式&#xff0c;为金融机构和债权人提供了一种便捷、高效的债权保障方式。既可以加大对违约方的司法震慑力&#xff0c;又能降低维权方实现债权的风险&#xff0c;且执行时间更快&#xff0c;债权周期更短&#xff0c;诉讼费用更低&#xff0…

VMware配置CentOS 7 并实现ssh连接

Vmware 17下载地址 ***永久许可证&#xff1a;***5Y012-8HL8P-0J8U0-032Q6-93KKF CentOS 7 下载地址 一、配置CentOS 如下 创建新的虚拟机&#xff0c;选择典型&#xff0c;点击下一步 选择上述下载镜像存储位置&#xff0c;选择镜像&#xff0c;点击下一步 3.填写相关信息…

云从科技AI智能体云月亮相中国铁建GSF项目展示中心

近日&#xff0c;中国铁建大湾区科学论坛永久会址项目综合展示体验中心&#xff08;以下简称“中国铁建GSF项目展示中心”&#xff09;迎来了一位特别的客服——云月数智人。云月是云从从容多模态大模型的融合承载体——AI智能体&#xff08;AI-Agent&#xff09;&#xff0c;她…

C++面向对象程序设计-北京大学-郭炜【课程笔记(七)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;七&#xff09;】 1、类型转换运算符2、自增、自减运算符的重载3、继承和派生的基本概念3.1、基本概念3.2、派生类对象的内存空间 4、继承关系和复合关系4.1、继承关系的使用4.2、复合关系的使用 5、派生类覆盖基类成员6…

NFT Insider #127:STEPN与阿迪达斯合作推出独家NFT运动鞋

引言&#xff1a;NFT Insider由NFT收藏组织WHALE Members &#xff08;https://twitter.com/WHALEMembers&#xff09;、BeepCrypto &#xff08;https://twitter.com/beep_crypto&#xff09;联合出品&#xff0c;浓缩每周NFT新闻&#xff0c;为大家带来关于NFT最全面、最新鲜…

C# 字面量null对于引用类型变量✓和值类型变量×

编译器让相同的字符串字面量共享堆中的同一内存位置以节约内存。 在C#中&#xff0c;字面量&#xff08;literal&#xff09;是指直接表示固定值的符号&#xff0c;比如数字、字符串或者布尔值。而关键字&#xff08;keyword&#xff09;则是由编程语言定义的具有特殊含义的标…

阿里云服务器怎么更换暴露的IP

很多客户阿里云服务器被攻击IP暴露&#xff0c;又不想迁移数据换服务器&#xff0c;其实阿里云服务器可以更换IP&#xff0c;今天就来和大家说说流程&#xff0c;云服务器创建成功后6小时内可以免费更换公网IP地址三次&#xff0c;超过6小时候就只能通过换绑弹性公网IP的方式来…