《网络协议》08. 概念补充

news2024/11/18 7:40:20

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:实践建议

  1. URL 中使用名词(建议用复数形式),不使用动词
    推荐:/users、/users/6
    不推荐:listsers,/getser?id=6,/uer/list,/user/get?id=6

  2. 使用 HTTP 的请求方法表达动作

在这里插入图片描述

  1. 一个资源连接到其他资源,使用子资源的形式
    GET /users/6/cars/8
    POST /users/8/cars

  2. API 版本化
    mj.com/v1/users
    mj.com/v2/users/66

  3. 返回 JSON 格式的数据

  4. 发生错误时,不要返回 200 状态码


今人不见古时月,今月曾经照古人。

——《把酒问月 · 故人贾淳令予问之》(唐)李白

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

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

相关文章

阿里云服务器 手动搭建WordPress(CentOS 8)

前提条件 已创建Linux操作系统的ECS实例,并且手动部署LNMP环境,具体操作,请参见手动部署LNMP环境(CentOS 8)。本教程使用的相关资源版本如下。 实例规格:ecs.c6.large 操作系统:公共镜像CentO…

2023年软件安装管家目录最新

软件目录 ①【电脑办公】电脑系统(直接安装)Win7Win8Win10OfficeOffice激活office2003office2007office2010office2013office2016office2019office365office2021wps2021Projectproject2007project2010project2016project2019project2013project2021Visio…

html使用天地图写一个地图列表

一、效果图&#xff1a; 点击左侧地址列表&#xff0c;右侧地图跟着改变。 二、代码实现&#xff1a; 一进入页面时&#xff0c;通过body调用onLoad"onLoad()"函数&#xff0c;确保地图正常显示。 <body onLoad"onLoad()"><!--左侧代码-->…

Libvirt-Qemu-Kvm 操作手记

(持续更新~) 本文主要用于记录在操作libvirt qemu kvm过程中遇到的问题及原因分析。 Hugepage 让qemu使用大页可以减少tdp的size&#xff0c;一定程度上可以提高性能&#xff1b;使用大页可以用memfd或者file backend。 memfd 操作步骤如下&#xff1a; 在系统中reserv…

【0235】修改私有内存(private memory)中的MyBEEntry时,st_changecount值前后变化

上一篇: 【0234】PgBackendStatus 记录当前postgres进程的活动状态 1. pg_stat_activity中xxx实时信息如何实现? 客户端(eg:psql)在连接上postmaster之后,postmaster守护进程会fork()一个后端进场(backend process),之后此客户端的所有操作、交互均有此对应的Backen…

mac苹果笔记本应用程序在哪?有什么快捷方式吗?

苹果笔记本电脑一直以来都被广泛使用&#xff0c;而苹果的操作系统 macOS 也非常受欢迎。一台好的笔记本电脑不仅仅依赖于硬件配置&#xff0c;还需要丰富多样的应用程序来满足用户的需求。苹果笔记本应用程序在哪&#xff0c;不少mac新手用户会有这个疑问。在这篇文章中&#…

使用 PPO 算法进行 RLHF 的 N 步实现细节

当下&#xff0c;RLHF/ChatGPT 已经变成了一个非常流行的话题。我们正在致力于更多有关 RLHF 的研究&#xff0c;这篇博客尝试复现 OpenAI 在 2019 年开源的原始 RLHF 代码库&#xff0c;其仓库位置位于 openai/lm-human-preferences。尽管它具有 “tensorflow-1.x” 的特性&am…

GPS信号的数字接收处理matlab仿真,包括频率点搜索,捕获跟踪,相关峰检测等步骤

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1. 频率点搜索 4.2. 捕获跟踪 4.3. 相关峰检测 5.算法完整程序工程 1.算法运行效果图预览 低信噪比下仿真结果如下&#xff1a; 2.算法运行软件版本 matlab2022a 3.部分核心程序 ...…

STM32踩坑:LAN8720未接网线,上电后再接网线,网络模块无法正常使用

LAN8720未接网线&#xff0c;上电后再接网线&#xff0c;网络模块无法正常使用 一、问题描述 最近因为做的项目出了BUG&#xff0c;STM32 单片机在未接网线的状态下&#xff0c;上电一段时间后&#xff0c;将网线插入网口后&#xff0c;IP地址ping不通&#xff0c;网络模块无…

C++语言的由来与发展历程

C语言的由来与发展历程可以追溯到1978年&#xff0c;当时美国电话电报公司&#xff08;AT&T&#xff09;的贝尔实验室发明了C语言&#xff0c;以满足UNIX操作系统的开发需求。在C语言的基础上&#xff0c;Bjarne Stroustrup于1983年创立了C编程语言&#xff0c;作为C语言的…

Apache Airflow (十) :SSHOperator及调度远程Shell脚本

&#x1f3e1; 个人主页&#xff1a;IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;加入大数据技术讨论群聊&#xff0c;获取更多大数据资料。 &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你大数据的个人空间-豹…

「引流工具」火炬多平台多功能引流高效推广脚本,抖音+快手+小红书多平台自动引流软件

全自动多平台多功能引流脚本&#xff1a; 脚本支持斗音&#xff0c;快手&#xff0c;小红薯&#xff0c;扣扣。默默&#xff0c;弹弹&#xff0c;金日头条&#xff0c;微博&#xff0c;知乎&#xff0c;bibi&#xff0c;易车&#xff0c;最右&#xff0c;美团&#xff0c;汽车…

interview review

M: intrinsic matrix [ f x s c x 0 f y c y 0 0 1 ] \begin{bmatrix}f_x & s & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1\end{bmatrix} ​fx​00​sfy​0​cx​cy​1​ ​ ( c x , c y ) (c_x, c_y) (cx​,cy​): camera center in pixels ( f x , f y …

JDK8 TLS10 is not accepted

TLS 1.0/1.1 changes in OpenJDK and Amazon Corretto Affected OpenJDK versions: VersionRelease numberOpenJDK 88u292 and newerOpenJDK 1111.0.11 and newerOpenJDK 16 and aboveAll versions 《Amazon Corretto与OpenJDK的TLS 1.0和1.1弃用&#xff1a;影响与应对之策》…

二维码智慧门牌管理系统升级,异常门牌聚合解决方案助力高效管理

文章目录 前言一、异常门牌聚合解决方案 前言 在今天的数字化时代&#xff0c;智慧城市已成为发展趋势&#xff0c;其中二维码智慧门牌管理系统扮演着至关重要的角色。通过对门牌信息进行数字化管理&#xff0c;该系统极大提升了城市管理的效率和便捷性。然而&#xff0c;随着…

网络规模与性能优化的一篇随笔

本周写篇轻松的话题&#xff0c;注意信息传输的尺度和缩放比例&#xff0c;写篇随笔。 控制面和数据面随规模缩放的影响&#xff0c;举几个例子就能说明白。 CSMA/CD&#xff0c;控制面和数据面在一起&#xff0c;控制信息交互时延和数据面时延在同一尺度时&#xff0c;就到了…

Mac M1 M1 pro安装 protobuf 2.5.0

因为项目中的protobuf是2.5.0版本&#xff0c;但是旧版本的protobuf 不支持M1&#xff0c;此时需要修改源码重新编译 操作步骤&#xff1a; 从git上面下载对应版本的protobuf&#xff0c;地址&#xff1a;Release Protocol Buffers v2.5.0 protocolbuffers/protobuf GitHub…

Java源码分析:Guava之不可变集合ImmutableMap的源码分析

原创/朱季谦 一、案例场景 遇到过这样的场景&#xff0c;在定义一个static修饰的Map时&#xff0c;使用了大量的put()方法赋值&#xff0c;就类似这样—— public static final Map<String,String> dayMap new HashMap<>(); static {dayMap.put("Monday&q…

使用 React Flow 构建一个思维导图应用

思维导图是围绕共同主题或问题将思想、概念、信息或任务分组的视觉表示。思维导图应用是一种软件应用&#xff0c;允许您创建、可视化和组织您的思想、想法和信息作为思维导图。本文将向您展示如何实现自己的思维导图应用程序。 在我们开始之前&#xff0c;我想向您展示一下我们…

Go 上下文 context.Context

Go语言中的上下文&#xff08;Context&#xff09;是一种用于在 Goroutines 之间传递取消信号、截止时间和其他请求范围值的标准方式。context 包提供了 Context 类型和一些相关的函数&#xff0c;用于在并发程序中有效地传递上下文信息。 在Go语言中&#xff0c;上下文通常用于…