一起做单网站怎么样/深圳网站优化软件
title: 《网络协议》08. 概念补充
date: 2022-10-06 18:33:04
updated: 2023-11-17 10:35:52
categories: 学习记录:网络协议
excerpt: 代理、VPN、CDN、网络爬虫、无线网络、缓存、Cookie & Session、RESTful。
comments: false
tags:
top_image: /images/backimg/SunsetClimbing.png
网络协议
- 1:代理
- 1.1:正向代理
- 1.2:反向代理
- 1.3:相关头部字段
- 2:VPN
- 2.1:作用
- 2.2:VPN 与代理的区别
- 2.3:实现原理
- 3:CDN
- 4:网络爬虫
- 4.1:简易实例
- 4.2:robots.txt
- 5:无线网络
- 6:缓存
- 6.1:响应头
- 6.2:请求头
- 6.3:缓存的使用流程
- 7:Cookie & Session
- 8:RESTful
- 8.1:实践建议
网络协议从入门到底层原理。
1:代理
代理服务器(Proxy Server)。
特点:
- 本身不生产内容
- 处于中间位置转发上下游的请求和响应
- 面向下游的客户端:它是服务器
- 面向上游的服务器:它是客户端
正向代理 / 反向代理:
- 正向代理:代理的对象是客户端
- 反向代理:代理的对象是服务器
1.1:正向代理
作用:
- 隐藏客户端身份
- 绕过防火墙(突破访问限制)
- Internet 访问控制
- 数据过滤
- …
1.2:反向代理
作用:
- 隐藏服务器身份
- 安全防护
- 负载均衡
- …
抓包工具的原理:
Fiddler、Charles 等抓包工具的原理:在客户端启动了正向代理服务。
Wireshark、tcpdump 的原理:通过底层驱动,拦截网卡上流过的数据。
tcpdump:
tcpdump 是 Linux 平台的抓包分析工具,Windows 版本是 WinDump。
使用手册:
https://www.tcpdump.org/manpages/tcpdump.1.html不错的教程:
https://danielmiessler.com/study/tcpdump/
1.3:相关头部字段
2:VPN
VPN(Virtual Private Network),虚拟私人网络。它可以在公共网络上建立专用网络,进行加密通讯。
2.1:作用
- 提高上网的安全性
- 保护公司内部资料
- 隐藏上网者的身份
- 突破网站的地域限制(有些网站针对不同地区的用户展示不同的内容)
- 突破网络封锁
2.2:VPN 与代理的区别
- 软件
- VPN 一般需要安装 VPN 客户端软件
- 代理不需要安装额外的软件
- 安全性
- VPN 默认会对数据进行加密
- 代理默认不会对数据进行加密(数据最终是否加密取决于使用的协议本身)
- 费用
- 一般情况下,VPN 比代理贵
2.3:实现原理
VPN 的实现原理:使用了隧道协议(Tunneling Protocol)
常见的 VPN 隧道协议有:
- PPTP(Point to Point Tunneling Protocol):点对点隧道协议
- L2TP(Layer Two Tunneling Protocol):第二层隧道协议
- IPsec(Internet Protocol Security):互联网安全协议
- SSL VPN(如 OpenVPN)
3:CDN
CDN(Content Delivery Network 或 Content Distribution Network),内容分发网络。
- 利用最靠近每位用户的服务器
- 更快更可靠地将音乐、图片、视频等资源文件(一般是静态资源)传递给用户
CDN 运营商在全国、乃至全球的各个大枢纽城市都建立了机房,部署了大量拥有高存储高带宽的节点,构建了一个跨运营商、跨地域的专用网络。
内容所有者向 CDN 运营商支付费用,CDN 将其内容交付给最终用户。
使用 CDN 前后对比:
使用 CDN 前:
使用 CDN 后:
4:网络爬虫
网络爬虫(Web Crawler),也叫做网络蜘蛛(Web Spider)。模拟人类使用浏览器操作页面的行为,对页面进行相关的操作。
常用爬虫工具:Python 的 Scrapy 框架。
搜索引擎 :
4.1:简易实例
可以使用 Java 的一个小框架 Jsoup 爬一些简单的数据。
- jar 包(jsoup、commons-io):
https://jsoup.org/packages/jsoup-1.13.1.jar
https://mirror.bit.edu.cn/apache//commons/io/binaries/commons-io-2.8.0-bin.zip
爬取目标:https://ext.se.360.cn/webstore/categor
import org.apache.commons.io.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.File;
import java.net.URL;public class Main {public static void main(String[] args) throws Exception {// 请求网站:https://ext.se.360.cn/webstore/category// Jsoup使用CSS选择器来查找元素String dir = "F:/T/"; // 爬取后的存放路径String url = "https://ext.se.360.cn/webstore/category";Document doc = Jsoup.connect(url).get();Elements eles = doc.select(".applist .appwrap");for (Element ele : eles) {String img = ele.selectFirst("img").attr("src");String title = ele.selectFirst("h3").text();String intro = ele.selectFirst(".intro").text();// 下载图片String filepath = dir + (title + ".png");FileUtils.copyURLToFile(new URL(img), new File(filepath));}}
}
4.2:robots.txt
robots.txt 是存放于网站根目录下的文本文件,用来告诉爬虫,哪些内容是不应被爬取的,哪些是可以被爬取的。
比如:https://www.baidu.com/robots.txt
因为一些系统中的 URL 是大小写敏感的,所以 robots.txt 的文件名应统一为小写。
robots.txt 并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
只能防君子,不能防小人。
无法阻止 “不讲武德” 的爬虫爬取隐私信息。
一般格式:
5:无线网络
无线 AP(Access Point):无线接入点。
6:缓存
缓存(Cache)。
通常会缓存的情况是:GET 请求 + 静态资源(比如 HTML、CSS、JS、图片等)。
Ctrl + F5:强制刷新缓存。
实际上,HTTP 的缓存机制远比上图的流程要复杂。
6.1:响应头
-
Pragma:作用类似于 Cache-Control,HTTP/1.0 的产物
-
Expires:缓存的过期时间(GMT 格式时间),HTTP/1.0 的产物
GMT 时间:例如
date: Sat, 19 May 2018 17:17:24 GMT
- Cache-Control:设置缓存策略
- no-storage:不缓存数据到本地
- public:允许用户、代理服务器缓存数据到本地
- private:只允许用户缓存数据到本地
- max-age:缓存的有效时间(多长时间不过期),单位秒
- no-cache:每次需要发请求给服务器询问缓存是否有变化,再来决定如何使用缓存
优先级:Pragma > Cache-Control > Expires。
-
Last-Modified:资源的最后一次修改时间
-
ETag:资源的唯一标识(根据文件内容计算出来的摘要值)
优先级:ETag > Last-Modifie
Last-Modified vs ETag
Last-Modified 的缺陷
- 只能精确到秒级别,如果资源在 1 秒内被修改了,客户端将无法获取最新的资源数据
- 如果某些资源被修改了(最后一次修改时间发生了变化),但是内容并没有任何变化,则会导致相同数据重复传输,没有使用到缓存
ETag
- 只要资源的内容没有变化,就不会重复传输资源数据
- 只要资源的内容发生了变化,就会返回最新的资源数据给客户端
6.2:请求头
- If-None-Match
- 如果上一次的响应头中有 ETag,就会将 ETag 的值作为请求头的值
- 服务器发现资源的最新摘要值跟 If-None-Match 不匹配,就会返回新的资源(200 OK)
- 否则,就不会返回资源的具体数据(304 Not Modified)
- If-Modified-Since
- 如果上一次的响应头中没有 ETag,有 Last-Modified,就会将 Last-Modified 的值作为请求头的值
- 如果服务器发现资源的最后一次修改时间晚于 If-Modified-Since,就会返回新的资源(200 OK)
- 否则,就不会返回资源的具体数据(304 Not Modified)
6.3:缓存的使用流程
7:Cookie & Session
会话(Session)跟踪是 Web 程序中常用的技术,用来跟踪用户的整个会话。
常用的会话跟踪技术有 Cookie、Session。
- Cookie 通过在客户端记录信息确定用户身份
- Session 通过在服务器端记录信息确定用户身份
除此以外类似的概念还有 Token、JWT 等。
Cookie:
- 数据存储在浏览器客户端
- 数据有大小和数量的限制
- 适合存储一些小型、不敏感的数据
- 默认情况下,关闭浏览器后就会销毁
Session:
- 数据存储在服务器端
- 数据没有大小和数量的限制
- 可以存储大型、敏感的数据(比如用户信息)
- 默认情况下,未使用 30 分钟后就会销毁
8:RESTful
REST 的全称是:REpresentational State Transfer,表现层状态转移。
REST 是一种互联网软件架构的设计风格:
- 定义了一组用于创建 Web 服务的约束
- 符合 REST 架构的 Web 服务,称为 RESTful Web 服务
8.1:实践建议
-
URL 中使用名词(建议用复数形式),不使用动词。
推荐:/users、/users/6
不推荐:listsers,/getser?id=6,/uer/list,/user/get?id=6 -
使用 HTTP 的请求方法表达动作。
-
一个资源连接到其他资源,使用子资源的形式。
GET /users/6/cars/8
POST /users/8/cars -
API 版本化。
mj.com/v1/users
mj.com/v2/users/66 -
返回 JSON 格式的数据。
-
发生错误时,不要返回 200 状态码。
-
…
今人不见古时月,今月曾经照古人。
——《把酒问月 · 故人贾淳令予问之》(唐)李白
相关文章:

《网络协议》08. 概念补充
title: 《网络协议》08. 概念补充 date: 2022-10-06 18:33:04 updated: 2023-11-17 10:35:52 categories: 学习记录:网络协议 excerpt: 代理、VPN、CDN、网络爬虫、无线网络、缓存、Cookie & Session、RESTful。 comments: false tags: top_image: /images/back…...

利用NVIDIA DALI读取视频帧
1. NVIDIA DALI简介 NVIDIA DALI全称是NVIDIA Data Loading Library,是一个用GPU加速的数据加载和预处理库,可用于图像、视频和语音数据的加载和处理,从而为深度学习的训练和推理加速。 NVIDIA DALI库的出发点是,深度学习应用中…...

TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...

【算法每日一练]-图论(保姆级教程 篇5(LCA,最短路,分层图)) #LCA #最短路计数 #社交网络 #飞行路线 # 第二短路
今天讲最短路统计和分层图 目录 题目:LCA 思路: 题目:最短路计数 思路: 题目:社交网络 思路: 题目:飞行路线 思路: 题目:第二短路 思路: 题目&a…...

德迅云安全为您介绍关于抗D盾的一些事
抗D盾概述: 抗D盾是新一代的智能分布式云接入系统,接入节点采用多机房集群部署模式,隐藏真实服务器IP,类似于网站CDN的节点接入,但是“抗D盾”是比CDN应用范围更广的接入方式,适合任何TCP 端类应用包括&am…...

leetcode算法之位运算
目录 1.判断字符是否唯一2.丢失的数字3.两整数之和4.只出现一次的数字II5.消失的两个数字6.位1的个数7.比特位计数8.汉明距离 1.判断字符是否唯一 判断字符是否唯一 class Solution { public:bool isUnique(string astr) {//利用鸽巢原理做优化if(astr.size()>26) return…...

java常用的几个图片处理工具对Tiff文件的支持
ImageMagick 官网 https://imagemagick.org/, 支持多种格式。命令行工具很适合调试。功能很强大. 还有一款工具GraphicsMagick 是从ImageMagick的基础上研发出来的。 OpenCV 官网 https://opencv.org/ , github地址https://github.com/opencv/opencv&…...

SQL必知会(二)-SQL查询篇(11)-联结表
第12课、联结表 联结表 使用联结:之前的 SELECT 查询某些列,只是针对一张表进行检索的。(即 FROM 表名)。但是如果用户想要使用 SELECT 对存储在不同表中的某些列时,则需要使用联结表的方式来实现。 例子中有建立两个…...

多模态大一统:开启全模态LLM和通用AI时代的大门
多模态大一统:开启全模态LLM和通用AI时代的大门 1. 目前多模态实现的方法1.1 单独训练各领域模型1.2 多任务学习1.3 集成多模态模型1.4 通用多模态模型2. 多模态统一难点2.1 数据集对齐和融合2.2 大规模计算资源需求2.3 各领域特性的兼容性2.4 可解释性和泛化能力3. 全模态的好…...

Alibaba Nacos注册中心实战
为什么需要注册中心 思考:网络请求,如果服务提供者发生变动,服务调用者如何感知服务提供者的ip和端口变化? // 微服务之间通过RestTemplate调用,ip:port写死,如果ip或者port变化呢? String ur…...

京东数据采集与挖掘(京东大数据):2023年10月京东冰箱品牌销售排行榜
鲸参谋监测的京东平台10月份冰箱市场销售数据已出炉! 10月份,冰箱市场的销售额有小幅上涨。鲸参谋数据显示,在京东平台上,今年10月冰箱市场的销量为94万,销售额将近23亿,同比增长超过1%。从价格上看&#x…...

某事业单位转型二类后绩效项目成功案例纪实
——事业单位从公益一类转向二类之后,如何通过绩效考核提高人员积极性 【客户行业】事业单位 【问题类型】绩效管理 【客户背景】 某国家级博物馆是由当地ZF与自然资源局共建共管的事业单位,是一家综合性较强的博物馆,入选过全国热搜博物…...

MySQL 和 SQL Server之间的数据迁移方法
目录 MySQL导入SQL Server 使用 SQL Server Management Studio (SSMS) 导入导出向导: 使用 SQL Server Integration Services (SSIS): SQL Server 导入 MySQL 使用 SQL Server Management Studio (SSMS) 导出数据: 使用 MySQL Workbench…...

单元测试实战(五)普通类的测试
为鼓励单元测试,特分门别类示例各种组件的测试代码并进行解说,供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战(一)Controller 的测试 单元测试实战(二)Service 的测试 单元测试实战&am…...

js 迭代器iterator 和 生成器Generator 10
✌ 文章目录 一、迭代器 iterator二、使用步骤1.引入库2.读入数据 总结 一、迭代器 iterator 迭代器是帮助我们对某个数据结构进行遍历的对象 迭代器:是一个对象,帮助我们对某个数据结构进行遍历 迭代器要符合迭代器协议,必须要有一个特定的n…...

100套Axure RP大数据可视化大屏模板及通用组件库
106套Axure RP大数据可视化大屏模板包括了多种实用美观的可视化组件库及行业模板库,行业模板涵盖:金融、教育、医疗、政府、交通、制造等多个行业提供设计参考。 随着大数据的发展,可视化大屏在各行各业得到越来越广泛的应用。可视化大屏不再…...

【OpenGauss源码学习 —— 执行算子(Append算子)】
执行算子(Append算子) Append 算子ExecInitAppend 函数exec_append_initialize_next 函数ExecAppend 函数ExecEndAppend 函数ExecReScanAppend 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和…...

Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)
基本类型和引用类型的参数在传递的时候有什么不同? 基本类型的值传递:参数传输存储的数据值 引用类型的值传递:参数传输存储的地址值 传递数组名字的时候,传递的是数组的地址,change方法可以通过地址直接访问我们在堆内存中开辟的数组,然后改变数组,数组中的元素发生变化 方…...

Vue第1天:特性概览
文章目录 Vue.js 简介 Vue的特性 如何使用Vue 安装Vue 通过CDN引入 使用npm 创建Vue实例 结语 Vue.js 简介 Vue.js(通常简称为Vue)是一款流行的JavaScript框架,专注于构建用户界面。它的设计灵感来自于现代的JavaScript框架…...

C++语法基础知识面经汇总
背景:汇总了网上C常考的基础知识,方便复习 1,static关键字 static可以用于成员变量,或者成员函数。存储空间在静态存储区(编译器会将其初始化为0,对应的存储空间直到程序执行结束才会释放)&…...

AM@幂级数性质@幂级数和函数求解
文章目录 幂级数性质四则运算性质分析性质求解和函数例例 幂级数性质 和多项式有相似的性质本文介绍用幂级数的性质求解幂级数和函数的两个例子 四则运算性质 若幂级数 ∑ n 0 ∞ a n x n \sum_{n0}^{\infin}a_{n}x^{n} ∑n0∞anxn(1)的收敛半径为 R 1 R_1 R1,和函数为…...

PHP低版本安全问题
目录 1、PHP弱类型问题 1.1 MD5、 SHA1 弱比较问题 1.2 数组 0 1)函数无法处理数组,返回0 2)strcmp 2、特殊字符串导致的问题 2.1 "ffifdyop" 与 md5(string,raw) 2.2 ereg函数漏洞:00 截断 3、正则匹配问…...

结构体——C语言初阶
一.结构体的声明: (1)结构的基础知识: 结构体是一种构造数据类型把不同类型的数据组合成一个整体结构体是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量需要注意的是,结构体是一种…...

基于django电影推荐系统
基于django电影推荐系统 摘要 该Django电影推荐系统是一个简单而基础的框架,旨在展示系统的基本组件。系统包括两个主要模型,即Movie和Rating,用于存储电影信息和用户评分。视图层包括展示电影列表和电影详情的功能,使用模板进行页…...

【问题处理】WPS提示不能启动此对象的源应用程序如何处理?
哈喽,大家好,我是雷工! 最近在用WPS打开word文件中,插入的Excel附件时,无法打开,提示:“不能启动此对象的源应用程序”。 经过上网查找处理办法,尝试解决,现将解决过程记…...

UE 程序化网格 计算横截面
首先在构造函数内加上程序化网格,然后复制网格体到程序化网格组件上,将Static Mesh(类型StaticMeshActor)的静态网格体组件给到程序化网格体上 然后把StaticMesh(类型为StaticMeshActor)Instance暴漏出去 …...

【Spring】IoC容器的一些总结与补充
文章目录 1. 创建容器的两种方式相对路径导入绝对路径导入 2. 获取Bean的三种方式getBean后强转类型getBean内写明类别根据类别获取bean 3. 容器层次结构4. BeanFactory5. bean的总结6. 注入的总结 1. 创建容器的两种方式 相对路径导入 ApplicationContext ctx new ClassPat…...

Java GUI实现五子棋游戏
五子棋是一种双人对弈的棋类游戏,通常在棋盘上进行。棋盘为 1515 的方格,黑白双方各执棋子,轮流在棋盘的格点上落子,先在横、竖、斜线上形成五个相连的同色棋子者获胜。五子棋规则简单,易学难精,兼具攻防和…...

Python 集成 Nacos 配置中心
Python 集成 Nacos 配置中心 下载 Nacos 官方 pyhton 库 pip install nacos-sdk-python # 指定国内阿里云镜像源 pip3 install nacos-sdk-python -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com配置 Nacos 相关信息 Global:nacos:port: 8848…...

Debian 11 更新 Node.js 版本
发布于 2023-07-14 在 https://chenhaotian.top/debian/d-upd-nodejs/ 步骤 从 NodeSource 服务下载需要的 Node.js 安装脚本。注意更换版本号。当前的 LTS 版本是 18.x curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash -现在可以直接从 apt 安装࿰…...