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);

优点:

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

缺点:

​​​​​​​

前端:

 

十四.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.工具

  • 26
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Web前端开发需要掌握的网络基础知识包括: - HTML: 超文本标记语言,用于描述网页的结构 - CSS: 层叠样式表,用于控制网页的外观 - JavaScript: 用于控制网页的行为 - HTTP: 超文本传输协议,用于在浏览器和服务器之间传输数据 - HTTPS: 安全的HTTP协议,用于在浏览器和服务器之间传输加密数据 - AJAX: 异步javascript和XML,用于在网页上实现异步数据交互 - API: 应用程序编程接口,用于网页和服务器之间传输数据 - IP地址,DNS,TCP/UDP,端口号,这些都是基础网络知识 ### 回答2: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的基本概念、请求方法、状态码、报文格式等。掌握HTTP请求和响应过程,以及常见的HTTP头部字段。 2. 网络通信基础:了解TCP/IP协议族的基本原理和工作机制,包括IP地址、域名解析、端口等。理解TCP和UDP协议的区别和特点。 3. DNS解析:了解域名系统(DNS)的作用和工作原理,包括域名解析过程、DNS缓存等。掌握如何配置和管理域名。 4. 网络安全:了解网络安全的基本概念,包括跨站脚本攻击(XSS)、跨站请求伪造(CSRF)、SQL注入等常见的网络安全问题。学习如何防范和处理这些安全漏洞。 5. WebSocket:了解WebSocket协议的基本原理和特点,能够使用WebSocket实现实时通信功能。 6. 前后端交互:掌握AJAX技术,了解JSON、XML等数据格式的基本概念。能够使用XMLHttpRequest对象向服务器发送异步请求,获取并处理服务器返回的数据。 7. 网络调试工具:掌握常用的网络调试工具,如浏览器开发者工具、Postman等,能够利用这些工具进行网络请求的调试和分析。 8. 前端性能优化:了解前端性能优化的基本原则和常用方法,如压缩资源、合并文件、使用CDN等。能够通过优化网络请求和渲染流程来提升网页的加载速度和响应性能。 总之,掌握了这些网络基础知识,能够更好地理解Web前端开发中的网络交互过程,解决常见的网络问题,并进行性能优化,从而提供更好的用户体验。 ### 回答3: Web前端开发需要掌握以下网络基础知识: 1. HTTP协议:了解HTTP协议的工作原理和常见的请求方法(GET、POST等),了解HTTP头部信息和状态码的含义,以及HTTP的持久连接和缓存等相关概念。 2. HTML和CSS:熟悉HTML和CSS的基本语法和常用标签,了解HTML文档的结构和CSS样式的应用方式,能够根据设计稿实现页面的布局和样式。 3. JavaScript:熟悉JavaScript的基本语法和常用的DOM操作,了解事件处理、Ajax和跨域请求等基本概念,能够编写简单的交互逻辑和动态网页。 4. 网络安全:了解常见的网络攻击方式(如XSS和CSRF)以及相应的防御方法,熟悉HTTPS协议的工作原理和使用方式,能够编写安全性较高的前端代码。 5. 前端性能优化:了解前端页面加载的过程和性能优化的方法,包括减少HTTP请求、压缩和合并静态资源、使用缓存、异步加载等。 6. 浏览器原理:了解浏览器的工作原理,包括渲染引擎的处理流程、页面解析和布局、渲染性能优化等,能够针对不同浏览器进行兼容性处理。 7. 前端框架和工具:熟悉常用的前端框架和工具(如React、Vue、Webpack等),了解它们的工作原理和使用方式,能够快速搭建和优化项目。 综上所述,掌握以上网络基础知识能够使前端开发者更好地理解和应用Web技术,提高开发效率和网页性能,并且能够处理一些网络安全和兼容性问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值