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

咸阳网站建设/东莞疫情最新数据

咸阳网站建设,东莞疫情最新数据,门户网站建设情况自查报告,做奖状的网站1. TCP/IP四层协议 记得大学学网络课程的时候,学的都是OSI/RM七层协议,应用层 -> 表示层 -> 会话层 -> 传输层->网络层->数据链路层->物理层,当时学的时候,感觉太抽象了,学得个一知半解。大脑在接收…
1. TCP/IP四层协议

        记得大学学网络课程的时候,学的都是OSI/RM七层协议应用层 -> 表示层 -> 会话层 -> 传输层->网络层->数据链路层->物理层,当时学的时候,感觉太抽象了,学得个一知半解。大脑在接收新东西时,需要有个具体实物或模型对应,将知识具像化,再高深的知识都容易理解。

        言归正传,本文主要是总结一下HTTP通信过程,以及HTTPS是在HTTP基础上干了什么,而HTTP2.0又是对HTTP1.1做了啥大刀阔斧的改进。在讲这些之前,先讲讲TCP/IP四层协议。虽然OSI/RM七层协议是理论标准,TPC/IP四层协议是事实标准,多少层都无所谓,只是计算机/网络科学家按一定规则分的,便于理解和传播。

        TCP/IP四层协议应用层 -> 传输层 -> 网络层 -> 数据链路层,此处“应用层”对应OSI/RM的“应用层 -> 表示层 -> 会议层”,此处“数据链路层”对应OSI/RM的“数据链路层->物理层”(后续笔者再补个映射图吧)。

1.1 应用层协议

举例:HTTP、FTP、SMTP、POP3......

作用:应用层负责为用户提供网络服务,例如电子邮件、文件传输和远程登录

1.2 传输层协议

举例:TCP、UDP

作用:传输层负责在网络中建立端到端的连接,提供可靠的数据传输。注:

  • TCP协议是一种可靠的传输协议,通过三次握手建立连接,并通过序列号和确认号来保证数据的可靠传输。
  • UDP协议是一种无连接的传输协议,是基于IP协议的传输协议,不提供可靠的数据传输服务,较低的延迟和较小的数据包头部开销。
1.3 网络层协议

举例:IP、ARP、ICMP、IGMP......

作用:网络层负责将数据包从一个节点传输到另一个节点,并提供寻址和路由功能

  • IP协议是一种无连接的协议,是基于ARP协议的网络层协议,IP协议负责将数据从源主机发送到目的主机,通过IP地址来标识主机位置。
  • ARP协议是一种用于解析IP地址和MAC地址之间映射关系的协议,它是基于IP协议的网络层协议,ARP负责将IP地址转换为MAC地址,以便在局域网中进行数据通信。
  • ICMP协议是一种用于网络管理的协议,是基于IP协议的网络层协议,ICMP负责报告网络错误和状态信息,例如:网络不可达、主机不可达。
1.4 数据链路层协议

举例:Ethernet、Wi-Fi、PPP(Point-to-Point Procotol)、ATM(Asynchronous Transfer Mode)

作用:数据链路层负责将数据包从一个节点传输到另一个节点,并提供错误检测和修复功能

2. HTTP协议和TCP三次握手/四次挥手
2.1 HTTP协议数据包装过程

应用层:上层数据(HTTP头部 + HTTP body)

传输层:TCP头 + 上层数据

网络层:IP头 + TCP头 + 上层数据

数据链路层:LLC头 + IP头 + TCP头 + 上层数据 + FCS

MAC头 + LLC头 + IP头 + TCP头 + 上层数据 + FCS

2.2 TCP建立连接-三次握手

SYN seq=x(client -> sever)

SYN seq=y ACK=x+1(server -> client)

ACK=y+1(client -> server)

2.3 TCP断开连接-四次挥手

FIN seq=x+2 ACK=y+1(client -> server)

ACK=x+3(server -> client)

FIN seq=y+1(server -> client)

ACK=y+2(client -> server)

3. HTTPS

        HTTP数据是未加密的,别有用心者在网络某个节点上抓包,可以很容易知道传了什么数据。为了数据安全的传输,提出来超文本传输安全协议HTTPS(Hyper Text Transfer Protocol over SecureSocket Layer)。HTTPS涉及对称加密非对称加密

3.1 对称加密
  • 明文 + 密钥 -> 密文
  • 密文 + 密钥 -> 明文

即加密和解密是用同一个密钥,需要保障密钥的安全。

3.2 非对称加密
  • 明文 + 私钥 -> 密文1
  • 密文1+ 公钥 -> 明文
  • 明文 + 公钥 -> 密文2
  • 密钥2 + 私钥 -> 明文

即私钥加密公钥解密,公钥加密私钥解密。

由于公钥是公开的,也即私钥加密的数据,没有安全性,因此需要结果对称加密一起使用。例如:对称加密的密钥Key,通过非对称加密的公钥PublicKey加密,传给对端;对端使用私钥PrivateKey解密拿到对称加密的密钥Key,后续二者就通过对称加密来交换数据即可。

(PS:对称和非对称加密,是一种比较有趣的二进制数学运算,有兴趣的同学可以了解一下,笔者后续推出详细介绍加解密的文章)

3.3 对称加密+非对称加密
  • 客户端向服务器请求公钥
  • 服务器响应公钥信息给客户端
  • 客户端随机生成一个随机数(对称加密的密钥),并使用公钥进行加密,发送给服务端
  • 服务端根据私钥对数据进行解密,得到对称加密的密钥
  • 后续客户端与服务端对称加密的方式进行通信

两个问题:

  • 数字签名解决报文被篡改的问题:将发送的数据用Hash算法生成消息摘要,然后用私钥生成数字签名,与原文一起发送,接收者用公钥解开得到摘要信息A,再用Hash对接收到的原文生成一个摘要信息B,A和B进行比较,说明信息未被篡改。
  • 数字证书解决通信身份被伪装的问题
3.4 HTTPS通信

TLS握手过程:明文 -> 非对称加密 -> 对称加密

Step 1:TCP三次握手

Step 2:浏览器给出TLS协议版本号、客户端生成随机数1、客户端支持的加密方法(明文通信) 

Step 3:服务器确认双方使用的加密方法,给出数字证书、服务器生成随机数2(明文通信)

Step 4:浏览器确认证书有效,生成随机数3,使用数字证书的公钥加密随机数3,发给服务器

Step 5:服务器使用私钥解密出随机数3(Premaster secret)

Step 6:客户端和服务器根据约定的加密方法,使用随机数1(Client random)、随机数2(Pre-mastersecret)、随机数3(Pre-mastersecret),经过特定算法生成对话密钥(session key),用来加密接下来的对话过程

Step 7:客户端和服务器都会第一次使用会话密钥加密一个消息发送给对方

简单一点说,HTTPS就是在在HTTP和TCP之间,多了一层TLS/SSL层,在TCP三次握手之后,TLS再和服务器交换加密信息,得到加密密钥

(PS:握草,在浏览器F12 network只看到一条HTTPS请求,底层程序已经干了这么多事情)。

4. HTTP2.0

这里参考深入理解http2.0协议,看这篇就够了! - 知乎 (zhihu.com)整理。

4.1 二进制分帧

        HTTP2.0更牛逼一些,在原来HTTP基础,对HTTP报文进行分帧,即新增了Binary Framing层(PS:不是四层协议么?怎么又多了TLS层、多了BinaryFraming层?笔者:别再提层不层的,科学家们都是为了技术的传播和理解呐)。

4.2 多路复用(Multiplexing)/连接共享

        在http1.1中,浏览器客户端在同一时间,针对同一域名下的请求有一定数量的限制,超过限制数目的请求会被阻塞。这也是为何一些站点会有多个静态资源 CDN 域名的原因之一。

         而http2.0中的多路复用优化了这一性能。多路复用允许同时通过单一的http/2 连接发起多重的请求-响应消息。有了新的分帧机制后,http/2 不再依赖多个TCP连接去实现多流并行了。每个数据流都拆分成很多互不依赖的帧,而这些帧可以交错(乱序发送),还可以分优先级,最后再在另一端把它们重新组合起来。

4.3 头部压缩

        http1.x的头带有大量信息,而且每次都要重复发送。http/2使用encoder来减少需要传输的header大小,通讯双方各自缓存一份头部字段表,既避免了重复header的传输,又减小了需要传输的大小。

        对于相同的数据,不再通过每次请求和响应发送,通信期间几乎不会改变通用键-值对(用户代理、可接受的媒体类型,等等)只需发送一次。

4.4 请求优先级

        把http消息分为很多独立帧之后,就可以通过优化这些帧的交错和传输顺序进一步优化性能。每个流都可以带有一个31比特的优先值:0 表示最高优先级;2的31次方-1 表示最低优先级。

        服务器可以根据流的优先级,控制资源分配(CPU、内存、带宽),而在响应数据准备好之后,优先将最高优先级的帧发送给客户端。高优先级的流都应该优先发送,但又不会绝对的。绝对地准守,可能又会引入首队阻塞的问题:高优先级的请求慢导致阻塞其他资源交付。

4.5 服务器推送

        服务器可以对一个客户端请求发送多个响应,服务器向客户端推送资源无需客户端明确地请求。并且,服务端推送能把客户端所需要的资源伴随着index.html一起发送到客户端,省去了客户端重复请求的步骤。

5. 总结

        知识点真的很多很多,如果不是长时间从事或使用相关技术的人员,真心记不住,有个大概印象就好。

注:本篇仅为学习笔记,如有不合理之处,还请帮忙指出,大家一起交流学习~

相关文章:

【协议】HTTP、HTTPS和HTTP2.0学习总结

1. TCP/IP四层协议 记得大学学网络课程的时候,学的都是OSI/RM七层协议,应用层 -> 表示层 -> 会话层 -> 传输层->网络层->数据链路层->物理层,当时学的时候,感觉太抽象了,学得个一知半解。大脑在接收…...

[数据结构]顺序表

1、顺序表的概念及结构 1.1 线性表 线性表( linear list )是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#…...

北斗卫星为野外科考人员提供安全保障

北斗卫星为野外科考人员提供安全保障 自第二次青藏高原综合科学考察研究启动以来,青海不断提升科考服务保障能力,推动科考全程信息化,有效促进科考成果转化。 为保障科考人员的人身安全,青海省青藏科学考察服务中心开发了基于北…...

Linux的一些快捷键(hot keyboard)

Ctrl Alt t:打开bash(就是命令框窗口) Ctrl Alt F3~F6:打开tty终端(纯命令行终端,每个Linux发行版不相同,我的是Ubuntu20版) Alt F4:关闭当前窗口(Windo…...

Charles将证书安装到系统的方法(adb)

基本情况参考此帖:Charles 安卓抓包 unknown 和证书无效的解决方案(无需改代码)_client ssl handshake failed: an unknown issue occu-CSDN博客 此解决方案仅适用于已root设备默认已经在电脑上安装并配置了Charles,安卓手机也下载…...

git 常用指令 (先收藏再说)

Git Git是一种分布式版本控制系统,用于记录一个或若干个文件内容的变化,以便查阅和回溯。 它的工作原理可以概括为以下几点: 工作区(Workspace):这是你在电脑上看到的目录,工作区是你用来修改文…...

2024问题汇总

2024问题汇总 Linux1.df-h / df -i 命令2.为多网卡Linux云服务器配置策略路由 Windows1.快速进入控制面板 网络连接指令 Linux 1.df-h / df -i 命令 df -h / df -i 都表示查看磁盘空间使用信息 如果遇到磁盘快满的情况,用这两个命令区别如下 df -h 是去删除比较大 …...

爬虫(学习笔记)

python爬虫 一、Python基础回顾变量类型其他操作面向对象编程 二、爬虫流程HTTP协议HTML爬虫demo01爬虫demo02 学习资料 Python爬虫 爬虫实战案例 AI学堂爬虫教学 一、Python基础回顾 变量类型 可变类型:可以进行添加、修改、删除 (列表、字典…&#x…...

让业务满意的性能测试报告模板应该是怎样的?

前言 先前在北京出差,和同事聊到了一个关于流量网关如何进行性能验证的需求,当时专门与同事进行了一番讨论,后面写了一篇相关文章。 结果没过多久同事找到我,希望我帮他们写一份给到业务团队的性能测试报告,原因是业…...

高防IP如何保护服务器

首先我们要知道什么是高防IP~ 高防IP是指高防机房所提供的ip段,主要是针对互联网服务器遭受大流量DDoS攻击时进行的保护服务。高防IP是目前最常用的一种防御DDoS攻击的手段,用户可以通过配置DDoS高防IP,将攻击流量引流到高防IP,防…...

C++提高编程——STL:string容器、vector容器

本专栏记录C学习过程包括C基础以及数据结构和算法,其中第一部分计划时间一个月,主要跟着黑马视频教程,学习路线如下,不定时更新,欢迎关注。 当前章节处于: ---------第1阶段-C基础入门 ---------第2阶段实战…...

three.js从入门到精通系列教程004 - three.js透视相机(PerspectiveCamera)滚动浏览全景大图

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>three.js从入门到精通系列教程004 - three.js透视相机&#xff08;PerspectiveCamera&#xff09;滚动浏览全景大图</title><script src"js/three.js"&g…...

Gradle 笔记

Gradle依赖管理&#xff08;基于Kotlin DSL&#xff09; **注意&#xff1a;**如果不是工作原因或是编写安卓项目必须要用Gradle&#xff0c;建议学习Maven即可&#xff0c;Gradle的学习成本相比Maven高很多&#xff0c;而且学了有没有用还是另一回事&#xff0c;所以&#xff…...

flume案例

在构建数仓时&#xff0c;经常会用到flume接收日志数据&#xff0c;通常涉及到的组件为kafka&#xff0c;hdfs等。下面以一个flume接收指定topic数据&#xff0c;并存入hdfs的案例&#xff0c;大致了解下flume相关使用规则。 版本&#xff1a;1.9 Source Kafka Source就是一…...

信用评价研究MATLAB仿真代码

信用评价是各种店铺卖家分析买家信用行为的重要内容, 本文给出随机仿真代码模拟实际交易过程的信用评价. 主要研究内容有: (1)研究最大交易额和信用度的关系 (2)研究买家不评价率对信用度影响 (3)研究交易次数对信用度影响 MATLAB程序如下: 主程序main.m %% clc;close a…...

网络安全产品之认识防毒墙

在互联网发展的初期&#xff0c;网络结构相对简单&#xff0c;病毒通常利用操作系统和软件程序的漏洞发起攻击&#xff0c;厂商们针对这些漏洞发布补丁程序。然而&#xff0c;并不是所有终端都能及时更新这些补丁&#xff0c;随着网络安全威胁的不断升级和互联网的普及&#xf…...

android 防抖工具类,经纬度检查工具类

一&#xff1a;点击事件防抖工具类&#xff1a; public abstract class ThrottleClickListener implements View.OnClickListener {private long clickLastTimeKey 0;private final long thresholdMillis 500;//millisecondsOverridepublic void onClick(View v) {long curr…...

PgSQL - 17新特性 - 块级别增量备份

PgSQL - 17新特性 - 块级别增量备份 PgSQL可通过pg_basebackup进行全量备份。在构建复制关系时&#xff0c;创建备机时需要通过pg_basebackup全量拉取一个备份&#xff0c;形成一个mirror。但很多场景下&#xff0c;我们往往不需要进行全量备份/恢复&#xff0c;数据量特别大的…...

Vue3setup()的非语法糖和语法糖的用法

1、setup()的语法糖的用法 script标签上写setup属性&#xff0c;不需要export default {} setup() 都可以省 创建每个属性或方法时也不需要return 导入某个组件时也不需要注册 <script setup > // script标签上写setup属性&#xff0c;不需要export default {} set…...

HTTP状态信息

1xx: 信息 消息:描述:100 Continue服务器仅接收到部分请求&#xff0c;但是一旦服务器并没有拒绝该请求&#xff0c;客户端应该继续发送其余的请求。101 Switching Protocols服务器转换协议&#xff1a;服务器将遵从客户的请求转换到另外一种协议。 2xx: 成功 消息:描述:200…...

CSS之边框样式

让我为大家介绍一下边框样式吧&#xff01;如果大家想更进一步了解边框的使用&#xff0c;可以阅读这一篇文章&#xff1a;CSS边框border 属性描述none没有边框,即忽略所有边框的宽度(默认值)solid边框为单实线dashed边框为虚线dotted边框为点线double边框为双实线 代码演示&…...

k8s-helm

Helm: 什么是helm,在没有这个heml之前&#xff0c;deployment service ingress的作用就是通过打包的方式&#xff0c;把deployment service ingress这些打包在一块&#xff0c;一键式的部署服务&#xff0c;类似于yum 官方提供的一个类似于安全仓库的功能&#xff0c;可以实现…...

黑马程序员JavaWeb开发|Maven高级

一、分模块设计与开发 分模块设计&#xff1a; 将项目按照功能拆分成若干个子模块&#xff0c;方便项目的管理维护、扩展&#xff0c;也方便模块间的相互调用&#xff0c;资源共享。 注意&#xff1a;分模块开发需要先对模块功能进行设计&#xff0c;再进行编码。不会先将工…...

【经验分享】MAC系统安装R和Rstudio(保姆级教程)安装下载只需5min

最近换了Macbook的Air电脑&#xff0c;自然要换很多新软件啦&#xff0c;首先需要安装的就是R和Rstudio啦&#xff0c;网上的教程很多很繁琐&#xff0c;为此我特意总结了最简单实用的安装方式: 一、先R后Rstudio 二、R下载 下载网址&#xff1a;https://cran.r-project.org …...

探索设计模式的魅力:“感受单例模式的力量与神秘” - 掌握编程的王牌技巧

在软件开发的赛场上&#xff0c;单例模式以其独特的魅力长期占据着重要的地位。作为设计模式中的一员&#xff0c;它在整个软件工程的棋盘上扮演着关键性角色。本文将带你深入探索单例模式的神秘面纱&#xff0c;从历史渊源到现代应用&#xff0c;从基础实现到高级技巧&#xf…...

SpringCloud Aliba-Seata【上】-从入门到学废【7】

目录 &#x1f9c2;.Seata是什么 &#x1f32d;2.Seata术语表 &#x1f953;3.处理过程 &#x1f9c8;4.下载 &#x1f37f;5.修改相关配置 &#x1f95e;6.启动seata 1.Seata是什么 Seata是一款开源的分布式事务解决方案&#xff0c;致力于在微服务架构下提供高性能…...

C# Cad2016二次开发选择csv导入信息(七)

//选择csv导入信息 [CommandMethod("setdata")] //本程序在AutoCAD的快捷命令是"DLLLOAD" public void setdata() {Microsoft.Win32.OpenFileDialog dlg new Microsoft.Win32.OpenFileDialog();dlg.DefaultExt ".csv";// Display OpenFileDial…...

[陇剑杯 2021]日志分析

[陇剑杯 2021]日志分析 题目做法及思路解析&#xff08;个人分享&#xff09; 问一&#xff1a;单位某应用程序被攻击&#xff0c;请分析日志&#xff0c;进行作答&#xff1a; 网络存在源码泄漏&#xff0c;源码文件名是_____________。(请提交带有文件后缀的文件名&…...

Java面试汇总——jvm篇

目录 JVM的组成&#xff1a; 1、JVM 概述(⭐⭐⭐⭐) 1.1 JVM是什么&#xff1f; 1.2 JVM由哪些部分组成&#xff0c;运行流程是什么&#xff1f; 2、什么是程序计数器&#xff1f;(⭐⭐⭐⭐) 3、介绍一下Java的堆(⭐⭐⭐⭐) 4、虚拟机栈(⭐⭐⭐⭐) 4.1 什么是虚拟机栈&…...

数据结构:完全二叉树(递归实现)

如果完全二叉树的深度为h&#xff0c;那么除了第h层外&#xff0c;其他层的节点个数都是满的&#xff0c;第h层的节点都靠左排列。 完全二叉树的编号方法是从上到下&#xff0c;从左到右&#xff0c;根节点为1号节点&#xff0c;设完全二叉树的节点数为sum&#xff0c;某节点编…...