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

服务端与网络相关知识

1. http/https 协议

1.0 协议缺陷:

  • ⽆法复⽤链接,完成即断开,重新慢启动和 TCP 3 次握⼿
  • head of line blocking : 线头阻塞,导致请求之间互相影响
1.1 改进:
  • ⻓连接(默认 keep-alive ),复⽤
  • host 字段指定对应的虚拟站点
  • 新增功能:
    • 断点续传
    • 身份认证
    • 状态管理
    • cache 缓存
      • Cache-Control
      • Expires
      • Last-Modified
      • Etag

2.0:

  • 多路复⽤
  • ⼆进制分帧层: 应⽤层和传输层之间
  • ⾸部压缩
  • 服务端推送
https: 较为安全的⽹络传输协议
  • 证书(公钥)
  • SSL 加密
  • 端⼝ 443
TCP:
  • 三次握⼿
  • 四次挥⼿
  • 滑动窗⼝: 流量控制
  • 拥塞处理
    • 慢开始
    • 拥塞避免
    • 快速重传
    • 快速恢复
缓存策略: 可分为 强缓存 和 协商缓存
  • Cache-Control/Expires : 浏览器判断缓存是否过期,未过期时,直接使⽤强缓存,
  • Cache-Control 的 max-age 优先级⾼于 Expires
  • 当缓存已经过期时,使⽤协商缓存
    • 唯⼀标识⽅案: Etag ( response 携带) & If-None-Match ( request 携带,上⼀次返回的 Etag ): 服务器判断资源是否被修改
    • 最后⼀次修改时间: Last-Modified(response) & If-Modified-Since ( request ,上⼀次返回的 Last-Modified )
      • 如果⼀致,则直接返回 304 通知浏览器使⽤缓存
      • 如不⼀致,则服务端返回新的资源
  • Last-Modified 缺点:
    • 周期性修改,但内容未变时,会导致缓存失效
    • 最⼩粒度只到 s , s 以内的改动⽆法检测到
  • Etag 的优先级⾼于 Last-Modified

2. 常⻅状态码

  • 1xx : 接受,继续处理
  • 200 : 成功,并返回数据
  • 201 : 已创建
  • 202 : 已接受
  • 203 : 成为,但未授权
  • 204 : 成功,⽆内容
  • 205 : 成功,重置内容
  • 206 : 成功,部分内容
  • 301 : 永久移动,重定向
  • 302 : 临时移动,可使⽤原有URI
  • 304 : 资源未修改,可使⽤缓存
  • 305 : 需代理访问
  • 400 : 请求语法错误
  • 401 : 要求身份认证
  • 403 : 拒绝请求
  • 404 : 资源不存在
  • 500 : 服务器错误

3. get / post

  • get : 缓存、请求⻓度受限、会被历史保存记录
    • ⽆副作⽤(不修改资源),幂等(请求次数与资源⽆关)的场景
  • post : 安全、⼤数据、更多编码类型

4. Websocket

  • Websocket 是⼀个 持久化的协议, 基于 http , 服务端可以 主动 push

兼容:

  • FLASH Socket
  • ⻓轮询: 定时发送 ajax
  • long poll : 发送 --> 有消息时再 response
new WebSocket(url)
ws.onerror = fn
ws.onclose = fn
ws.onopen = fn
ws.onmessage = fn
ws.send()

5. TCP三次握⼿

  • 建⽴连接前,客户端和服务端需要通过握⼿来确认对⽅:
  • 客户端发送 syn (同步序列编号) 请求,进⼊ syn_send 状态,等待确认
  • 服务端接收并确认 syn 包后发送 syn+ack 包,进⼊ syn_recv 状态
  • 客户端接收 syn+ack 包后,发送 ack 包,双⽅进⼊ established 状态

6. TCP四次挥⼿

  • 客户端 – FIN --> 服务端, FIN—WAIT
  • 服务端 – ACK --> 客户端, CLOSE-WAIT
  • 服务端 – ACK,FIN --> 客户端, LAST-ACK
  • 客户端 – ACK --> 服务端,CLOSED

7. Node 的 Event Loop: 6个阶段

  • timer 阶段: 执⾏到期的 setTimeout / setInterval 队列回调
  • I/O 阶段: 执⾏上轮循环残流的 callback
  • idle , prepare
  • poll : 等待回调
      1. 执⾏回调
      1. 执⾏定时器
      • 如有到期的 setTimeout / setInterval , 则返回 timer 阶段
      • 如有 setImmediate ,则前往 check 阶段
  • check
    • 执⾏ setImmediate
  • close callbacks

8. 跨域

  • JSONP : 利⽤
function jsonp(url, jsonpCallback, success) {
const script = document.createElement('script')
script.src = url
script.async = true
script.type = 'text/javascript'
window[jsonpCallback] = function(data) {
success && success(data)
}
document.body.appendChild(script)
}
  • 设置 CORS: Access-Control-Allow-Origin:*
  • postMessage

9. 安全

  • XSS 攻击: 注⼊恶意代码
    • cookie 设置 httpOnly
    • 转义⻚⾯上的输⼊内容和输出内容
  • CSRF : 跨站请求伪造,防护:
    • get 不修改数据
    • 不被第三⽅⽹站访问到⽤户的 cookie
    • 设置⽩名单,不被第三⽅⽹站请求
    • 请求校验

相关文章:

服务端与网络相关知识

1. http/https 协议 1.0 协议缺陷: ⽆法复⽤链接,完成即断开,重新慢启动和 TCP 3 次握⼿head of line blocking : 线头阻塞,导致请求之间互相影响 1.1 改进: ⻓连接(默认 keep-alive ),复⽤host 字段指定对应的虚拟站点新增功…...

一分钟上手Vue VueI18n Internationalization(i18n)多国语言系统开发、国际化、中英文语言切换!

这里以Vue2为例子 第一步:安装vue-i18n npm install vue-i18n8.26.5 第二步:在src下创建js文件夹,继续创建language文件夹 在language文件夹里面创建zh.js、en.js、index.js这仨文件 这仨文件代码分别如下: zh.js export de…...

stm32 cubemx can通讯(1)回环模式

文章目录 前言一、cubemx配置二、代码1.过滤器的配置(后续会介绍)2.main.c3.主循环 总结 前言 介绍使用stm32cubemx来配置can,本节讲解一个简答,不需要stm32的can和外部连接,直接可以用于验证的回环模式。 所谓回环模…...

Python基础小项目

今天给大家写一期特别基础的Python小项目,欢迎大家支持,并给出自己的完善修改 (因为我写的都是很基础的,运行速率不是很好的 目录 1. 地铁票价题目程序源码运行截图 2. 购物车题目程序源码运行截图 3. 名片管理器题目程序源码运行…...

Python Opencv实践 - 在图像上绘制图形

import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/pomeranian.png") print(img.shape)plt.imshow(img[:,:,::-1])#画直线 #cv.line(img,start,end,color,thickness) #参考资料:https://blog.csdn.ne…...

管理者应该编码,但不是在工作时

管理者应该编码吗?这个问题似乎没有一个明确的答案。这场辩论有支持者也有反对者,每一方都有自己的论点。我最近在工作中编写了一个副业项目,这让我重新评估了我在这个问题上的立场。经历了这些之后,我可以说,我的立场已经从管理…...

深度学习常用的python库学习笔记

文章目录 数据分析四剑客Numpyndarray数组和标量之间的运算基本的索引和切片数学和统计方法线性代数 PandasMatplotlibPIL 数据分析四剑客 Numpy Numpy中文网 ndarray 数组和标量之间的运算 基本的索引和切片 数学和统计方法 线性代数 Pandas Pandas中文网 Matplotlib Mat…...

C语言属刷题训练【第八天】

文章目录 🪗1、如下程序的运行结果是( )💻2、若有定义: int a[2][3]; ,以下选项中对 a 数组元素正确引用的是( )🧿3、在下面的字符数组定义中,哪一个有语法错…...

阿里云PolarDB数据库倚天ARM架构详细介绍

阿里云云原生数据库PolarDB MySQL版推出倚天ARM架构,倚天ARM架构规格相比X86架构规格最高降价45%,PolarDB针对自研倚天芯片,从芯片到数据库内核全链路优化,助力企业降本增效。基于阿里云自研的倚天服务器,同时在数据库…...

pytest 编写规范

一、pytest 编写规范 1、介绍 pytest是一个非常成熟的全功能的Python测试框架,主要特点有以下几点: 1、简单灵活,容易上手,文档丰富;2、支持参数化,可以细粒度地控制要测试的测试用例;3、能够…...

Vue.use和vue.component的区别

Vue.use 注册全局插件vue.use时会将自动将开发者 vue构造函数传入插件,vue.use参数必须是function或者object,object中必须有install方法vue.use会自动判断当前插件时候已经被注册过了,防止重复注册 Vue.component 注册全局组件 为什么有了Vue.component还要用Vue.use呢 V…...

张驰咨询:提高企业竞争力,六西格玛设计公司(DFSS)在行动

六西格玛设计公司(DFSS)是一种专业从事六西格玛设计的企业,其主要作用是为客户提供高效的六西格玛设计服务,以帮助客户实现高品质、低成本和高效率的产品开发过程。六西格玛设计公司通常拥有一支专业的团队,具有丰富的六西格玛设计经验和技术…...

影响 40% 用户,Ubuntu 发行版被曝 2 个安全漏洞

导读近日消息,Wiz 的研究专家 S. Tzadik 和 S. Tamari 近日在 Ubuntu 系统中发现了 2 个安全漏洞,可以提升本地权限,预估影响 40% 的 Ubuntu 用户。 根据博文内容,汇总两个漏洞内容如下: 追踪编号:CVE-202…...

SpringCache的介绍和入门案例

文章目录 概述常用注解入门案例 概述 Spring Cache是Spring框架提供的一个缓存抽象层,用于在应用程序中实现缓存的功能。它通过在方法执行前检查缓存中是否已经存在所需数据,如果存在则直接返回缓存中的数据,如果不存在则执行方法体&#xf…...

闪马智能又上榜!

近日,上海市经济和信息化委员会公布了2023年度上半年(第30批)市级企业技术中心拟认定企业名单。凭借在技术创新方面的突出成就,闪马智能上榜其中。 本次认定由上海市经济和信息化委员会组织开展,综合企业的地位和作用、…...

C++中的四种类型转换(Type Casting)方式

在C中,有四种常见的类型转换(Type Casting)方式,它们分别是: 一、静态转换(Static Cast): static_cast是最常见的类型转换方式,用于基本数据类型的转换、非多态类型之间…...

Linux系列:从0到1用Docker部署springboot项目

目录 1.前提条件 2.编写DockerFile镜像文件 3.打包SpringBoot项目 4.通过软件Xftp进行传输(*) 1.点击“文件-新建”​编辑 5.操作远程主机 1.docker构建 2.容器运行 6.容器的关闭和删除 1.前提条件 Linux、docker、xftp的安装、一台可以访问的远…...

zabbix监控mysql数据库、nginx、Tomcat

文章目录 一.zabbix监控mysql数据库1.环境规划2.zabbix-server安装部署(192.168.198.17)3.zabbix-mysql安装部署(192.168.198.15)3.1 部署 zabbix 客户端3.2 服务端验证 zabbix-agent2 的连通性(192.168.198.17&#x…...

深入探索二叉树算法:理解、构建和应用C语言

引言 二叉树是计算机科学中的一种重要数据结构,它在各种算法和应用中都扮演着重要角色。本篇博客将带您深入探索二叉树的世界,从基本概念到高级应用,逐步展开二叉树的奥秘,助您更好地理解、构建和应用二叉树算法。 什么是二叉树…...

(css)点击前隐藏icon图表 点击后显示

(css)点击前隐藏icon图表 点击后显示 效果 html <liv-for"(item,index) in sessionList":key"index"class"liClass":class"{ active: change2 index }"tabindex"2">...<el-tooltip class"item" effec…...

fSpy终极指南:5分钟学会免费开源3D相机匹配神器

fSpy终极指南&#xff1a;5分钟学会免费开源3D相机匹配神器 【免费下载链接】fSpy A cross platform app for quick and easy still image camera matching 项目地址: https://gitcode.com/gh_mirrors/fs/fSpy 在3D建模、建筑可视化和影视特效领域&#xff0c;如何将2D照…...

Emotion2Vec+语音情感识别实战:用AI给你的语音“把把脉”

Emotion2Vec语音情感识别实战&#xff1a;用AI给你的语音"把把脉" 1. 语音情感识别技术概述 语音情感识别&#xff08;Speech Emotion Recognition, SER&#xff09;作为人机交互领域的重要技术&#xff0c;正在深刻改变我们与机器沟通的方式。这项技术通过分析语音…...

FaceFusion使用指南:如何配置局域网访问实现多端协同?

FaceFusion使用指南&#xff1a;如何配置局域网访问实现多端协同&#xff1f; 1. 为什么需要局域网访问&#xff1f; FaceFusion作为一款强大的AI换脸工具&#xff0c;默认情况下只能在安装它的本地电脑上使用。但在实际工作中&#xff0c;我们经常遇到这些场景&#xff1a; …...

OFA图像描述模型实战体验:轻松部署,感受AI看图说话的魔力

OFA图像描述模型实战体验&#xff1a;轻松部署&#xff0c;感受AI看图说话的魔力 1. 项目介绍与核心价值 想象一下&#xff0c;当你看到一张照片时&#xff0c;AI能像人类一样准确描述其中的内容——这就是OFA图像描述模型带来的神奇体验。今天我们要体验的ofa_image-caption…...

Python Web框架实战指南:从Django到FastAPI的选型与应用

1. Python Web框架全景概览 当你第一次接触Python Web开发时&#xff0c;面对琳琅满目的框架选择可能会感到困惑。我刚开始做Web开发时&#xff0c;花了整整两周时间才搞明白Django和Flask的区别。现在回头看&#xff0c;其实每个框架都有自己鲜明的性格特征&#xff0c;就像不…...

Wan2.1效果展示:从萌宠到科幻,AI视频生成作品集

Wan2.1效果展示&#xff1a;从萌宠到科幻&#xff0c;AI视频生成作品集 1. 开篇&#xff1a;AI视频生成的新纪元 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能立刻获得一段高质量的视频内容。这不再是科幻电影中的场景&#xff0c;而是阿里巴巴开源的Wan2.…...

保姆级教学:实时手机检测-通用镜像部署与使用全流程

保姆级教学&#xff1a;实时手机检测-通用镜像部署与使用全流程 1. 模型简介与核心优势 1.1 模型技术背景 实时手机检测-通用模型是基于DAMOYOLO-S框架开发的高性能目标检测模型。DAMO-YOLO是一个专门为工业落地设计的目标检测框架&#xff0c;在保持高速推理的同时&#xf…...

终极指南:如何利用Java热更新技术实现3倍开发效率提升?

终极指南&#xff1a;如何利用Java热更新技术实现3倍开发效率提升&#xff1f; 【免费下载链接】HotswapAgent Java unlimited redefinition of classes at runtime. 项目地址: https://gitcode.com/gh_mirrors/ho/HotswapAgent 在Java开发过程中&#xff0c;频繁的代码…...

通义千问3-VL-Reranker-8B多模态应用:工业质检报告-缺陷图-维修视频关联分析

通义千问3-VL-Reranker-8B多模态应用&#xff1a;工业质检报告-缺陷图-维修视频关联分析 1. 引言&#xff1a;工业质检的智能化升级需求 在现代工业生产中&#xff0c;质量检测是一个至关重要的环节。传统的质检流程往往面临这样的困境&#xff1a;质检报告、缺陷图片、维修视…...

【神通数据库】从零到精通:安装配置、控制台操作与国产化适配全攻略

1. 神通数据库入门指南 第一次接触神通数据库的朋友可能会好奇&#xff0c;这到底是个什么样的数据库&#xff1f;简单来说&#xff0c;神通数据库是一款国产的企业级关系型数据库管理系统&#xff0c;由天津神舟通用数据技术有限公司研发。我在实际项目中使用过多个版本的数据…...