9.3.5网络原理(应用层HTTP/HTTPS)

一.HTTP:

1. HTTP是超文本传输协议,除了传输字符串,还可以传输图片,字体,视频,音频.

2. 

3.HTTP协议报文格式:a.首行,b.请求头(header),c.空行(相当于一个分隔符,分隔了header和body),d.正文(body).

4.

5.URL:唯一资源描述符(长度不限制). 

a.

b.注意:查询字符串(query string)是键值对的格式.键值对之间使用'&'符号分割,键和值之间,使用'='分割,查询字符串以'?'开始.

c.上述的URL几个部分都是可以省略的

1)IP地址/域名省略:相当于请访问当前服务器的地址(上一次获取的).

2)端口号省略:浏览器会自动加上,HTTP自动添加80,HTTPS自动添加443.

3)带层次的路径省略:相当于访问根目录(/),服务器主页.

4)查询字符串省略:后端自动处理.

d.URL encode:

例如'+' ':' '?' '&' '=' '#',还有中文都需要转义.

以为网站可以查看转义:URL encode转义网站

5.method(方法):

a.

注意:最上面两个最常用.

b.GET:"从服务器获取xxx",

   POST:"向服务器传输一个xxx".

c. 一般来说

GET请求中body部分是空的,数据放在query string中.

POST请求使用的场景是登录和上传,有body(和query string很类似),但是query string是空的.

注意:GET和POST没有本质区别,两者经常相互替换,上述区别只是习惯,放在query string中用户可以直接看到(收藏夹可以收藏),放在body则不行.

d.错误的说法:

1)较长的数据放到body中,url有长度限制. 

2)POST比GET更安全.

注意:以上说法错误.

e.需要注意的地方:

1)设计的时候,GET和POST语义不同,但是实践中不一定要遵守.

2)GET是幂等的,POST不是幂等的,设计互联网产品的时候,需要考虑幂等性,有的需要幂等(账户余额查询),有的需要不幂等(广告投放,不同地方广告不同).

3)GET请求可以被缓存,POST不能缓存,但是GET缓存的前提是幂等.

f.其它方法(比较少见):

6.请求报头(header):

a.采用键值对结构,每一行是一个键值对,键和值用":空格"分割.

b.query string / body 中的键值对完全由程序员自己定义,header中有标准定义的部分,也要自定义的部分.

c.重要的header规定:

1)Host:服务器主机地址和端口号.

注意:一般情况下,Host里的内容和url是一样的,但是如果使用了代理,就不一样.

2)Content-Length:表示body中数据长度,为了解决粘包问题.

注意:如果没有body,这个字段就没有,如果有body,这个字段必须有,否则为非法请求.

3)Content-Type:表示请求body中数据格式.

4)User-Agent(简称UA):主要包含操作系统版本和浏览器版本,现在主要区分PC端和移动端.

5)Referer:描述了当前网页从哪里来.

如果从浏览器地址来直接输入url,或者收藏夹打开的网站,没有referer.

如果是点击了网页内容,发生了跳转,referer就是刚才搜索的结果页.

6)Cookie(重要):浏览器本地存储数据的一种机制.

a)用户访问服务器的时候会产生一些临时数据,有的放在服务器储存,有的在浏览器这边储存.

b)采用键值对储存,这些数据通常是服务器返回的,不同的网站cookie是独立的,内容是程序员自定义的.

c)有一个很重要的键值对,用来表示用户身份信息,有时候,登录一个网站,再次访问无需重新登陆.

d)实现身份识别,不仅仅需要cookie(客户端),还需要session(服务器端),(类似于医院看病,做检查需要刷病历卡),每个用户都有自己的session(value),以sessionid(key)作为标识,以类似hash的形式存储数据.

e)后续在访问这个网站的页面时,就会在请求中带上cookie,服务器就可以进一步知道客户端的详细情况了.

7.响应首行:HTTP版本号,状态码,状态码描述.

200 成功

404 访问的资源不存在

403 访问的资源没有权限

502 服务器挂了

504 服务器响应超时

302 重定向,跳转至其他页面

8.构造HTTP请求 (html的form表单, js的ajax, 各种语言代码, postman):

a.html的form表单(只能支持get和post两者方法):

 

b.ajax:

1)搜索jQuery CDN,使用url: https://code.jquery.com/jquery-3.7.1.min.js

二.HTTPS(加密):

1.最简单的加密方式是使用对称密钥(所以非对称密钥传输对称密钥):

不同的客户端密钥是不同的,如果客户端生成了密钥,就要把密钥传输给服务器,但是黑客可能截获密钥.

所以要使用非对称加密(公钥和私钥),将对称加密的密钥从客户端传输到服务器。

注意:非对称加密,只传输对称密钥,之后所有的信息由对称密钥进行加密,因为非对称密钥的运算量很大,效率很低,而对称密钥运算量小,效率高.

2.上述的加密方式有一个很大的漏洞,黑客可以通过中间人攻击的方式,仍然可以拿到密钥:


 

3.解决上述问题,可以引入证书机制,使用第三方认证:
a.服务器要在第三方公证机制申请一个证书,第三方机构会审核服务器的资质.在这个证书中包括很多属性,比如网站的域名,证书过期时间,公钥,数字签名等等.

b.客户端想要和服务器进行通信,发送请求之后,服务器会返回证书,这时客户端会对证书进行检验,因为客户端手里持有第三方认证机构的公钥(这个公钥不是通过网络传输的,而是直接系统内置的,客户端安装了windows系统,系统里就会内置各种认证机构的公钥,所以这个环节黑客无法攻击),所以客户端根据手里持有的认证机构的公钥对数字签名解密得到校验和的明文,根据相同的算法,对证书上的其他属性再算一次校验和,对比是否相同.

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MediaPipe+OpenCV 实现实时手势识别(附Python源码)

MediaPipe官网:https://developers.google.com/mediapipe MediaPipe仓库:https://github.com/google/mediapipe 一、MediaPipe介绍 MediaPipe 是一个由 Google 开发的开源跨平台机器学习框架,用于构建视觉和感知应用程序。它提供了一系列预训…

【SPI读取外部Flash】使用逻辑分析仪来读取FLASH Device ID

实验设备:25块钱的 逻辑分析仪 和 野火F429开发板 注意点,这个逻辑分析仪最大只能检测24M的波形,而SPI是在外部通道2,所以我们对系统时钟的分频,也就是给到通道2的时钟速度要在24M内,不然检测到的数据是有…

RFID车辆自动化称重管理

应用背景 随着物流和交通管理的发展,车辆称重成为了不可忽视的环节,传统的车辆称重管理方式存在诸多问题,如人工操作繁琐、数据准确性低、容易出现作弊等,为了提高车辆称重管理的效率和准确性,RFID技术被引入到车辆称…

Vue ——09、路由模式,404和路由勾子

路由嵌套,参数传递及重定向 一、路由模式(有#号,跟没#号)二、404三、路由勾子四、在钩子函数中使用异步请求————————创作不易,如觉不错,随手点赞,关注,收藏(* ̄︶…

Windows开机密码破解

Windows11以及Windows10(21H2)以上版本 先开机,不进行任何操作,静静的等待登录界面 按住Shift重启 进入“选择一个选项”界面,点击疑难解答 点击高级选项 点击命令提示符 输入两行命令 copy C:\windows\system32\uti1man.exe C: \Window…

面相面试知识--Lottery项目

面相面试知识–Lottery项目 1.设计模式 为什么需要设计模式? (设计模式是什么?优点有哪些?) 设计模式是一套经过验证的有效的软件开发指导思想/解决方案;提高代码的可重用性和可维护性;提高团…

【python之经验模态分解EMD实现】PyEMD库的安装和导入EMD, Visualisation问题解决方法[完整可运行]

现有的导入问题 目前网上的办法,直接导入:from PyEMD import EMD, Visualisation 是有问题的 可能会出现 在 ‘init.py | init.py’ 中找不到引用 ‘Visualisation’ 的报错。 原因似乎是现在导入的命令改了,这是一个坑,解决的…

算法简述-串和串的匹配、排序、深度/广度优先搜索、动态规划、分治、贪心、回溯、分支限界

目录 算法简述 基本 典型算法列举 串和串的匹配 排序 深度/广度优先搜索 动态规划 分治 贪心 回溯 分支限界 算法简述 基本 咳咳嗯…算法嘛,咱也不是 CS 科班学生,咱就说,算法是对已经建模后的问题的解决的具体途径和方法&#x…

Linux 多线程( 进程VS线程 | 线程控制 )

文章目录 Linux进程 VS 线程进程的多个线程共享 进程和线程的关系线程创建 pthread_create获取线程ID pthread_self线程等待 pthread_join终止线程进程分离线程ID及进程地址空间布局 Linux进程 VS 线程 进程是资源分配的基本单位。线程是OS调度的基本单位。 线程共享进程数据…

医院如何实现安全又稳定的跨网文件数据交换呢?

随着医疗信息化的发展,医院之间需要频繁地进行文件数据交换,以实现诊疗、科研、管理等方面的协同和共享。然而,由于医院网络环境的复杂性和敏感性,跨网文件数据交换面临着安全性和稳定性的双重挑战。如何在保证文件数据不被泄露、…

神经网络常用模型与应用

上手AI的一个捷径就是了解和使用各种网络模型,结合实际场景去打造自己的应用。神经网络模型是人类的共同财富。 神经网络 神经网络可以分为三种主要类型:前馈神经网络、反馈神经网络和图神经网络。 前馈神经⽹络(feedforward neural netwo…

Unity SteamVR 开发教程:用摇杆/触摸板控制人物持续移动(2.x 以上版本)

文章目录 📕教程说明📕场景搭建📕创建移动的动作📕移动脚本⭐移动⭐实时调整 CharacterController 的高度 📕取消手部和 CharacterController 的碰撞 持续移动是 VR 开发中的一个常用功能。一般是用户推动手柄摇杆&…

elasticsearch8-坐标查询和复合查询

个人名片: 博主:酒徒ᝰ. 个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。 本篇励志:三人行,必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud…

【计算机网络】75 张图详解:网络设备、网络地址规划、静态路由(万字长文)

75 张图详解:网络设备、网络地址规划、静态路由 1.网络设备1.1 交换机1.2 路由器 2.网络地址规划2.1 IP 地址2.2 分类地址2.3 子网掩码2.4 无类地址2.5 子网划分2.5.1 示例一2.5.2 示例二 2.6 超网合并 3.静态路由3.1 路由表3.2 直连路由3.3 静态路由3.4 默认路由3.…

图文文案音视频素材库流量主小程序开发

适用于全行业的资源素材运营变现小程序,支持文档、图片、文件、图文、音视频、网盘等多种资源形式,多种功能组合运营变现的小程序。 适用领域: 公司/微商素材、学习/考研/论文资料分享、PPT模板/背景图/壁纸/头像、知识付费、抖音素材等等…

代码随想录算法训练营第三十五天| 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球

860.柠檬水找零 本题看上好像挺难&#xff0c;其实挺简单的&#xff0c;大家先尝试自己做一做。 代码随想录 public boolean lemonadeChange(int[] bills) {int five 0;int ten 0;for (int i 0; i < bills.length; i) {if (bills[i] 5) {five;} else if (bills[i] 10)…

golang for循环append的数据重复

原因&#xff0c;因为使用了& 需要增加一行&#xff0c;问题解决

进程创建fork函数

#include <sys/types.h> #include <unistd.h> pid_t fork(void); 函数的作用&#xff1a;用于创建子进程。 返回值&#xff1a; fork()的返回值会返回两次。一次是在父进程&#xff0c;一次是在子进程。 父进程中&#xff1a;返回创建的子进程的ID&#xff0c;返回…

Mysql的逻辑架构、存储引擎

1. 逻辑架构剖析 1.1 服务器处理客户端请求 首先MySQL是典型的C/S架构&#xff0c;即Clinet/Server 架构&#xff0c;服务端程序使用的mysqld。 不论客户端进程和服务器进程是采用哪种方式进行通信&#xff0c;最后实现的效果是&#xff1a;客户端进程向服务器进程发送一段文…

Centos8安装docker并配置Kali Linux图形化界面

鉴于目前网上没有完整的好用的docker安装kali桌面连接的教程&#xff0c;所以我想做一个。 准备工作 麻了&#xff0c;这服务器供应商提供的镜像是真的纯净&#xff0c;纯净到啥都没有。 问题一&#xff1a;Centos8源有问题 Error: Failed to download metadata for repo ap…