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

2023-09-16 21:43:18

一.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系统,系统里就会内置各种认证机构的公钥,所以这个环节黑客无法攻击),所以客户端根据手里持有的认证机构的公钥对数字签名解密得到校验和的明文,根据相同的算法,对证书上的其他属性再算一次校验和,对比是否相同.

更多推荐

什么是集成测试?集成测试方法有哪些?

1、基本概念:将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。集成测试主要是针对软件高层设计进行测试,一般来说是以模块和子系统为单位进行测试。2、集成测试包含的层次:1.模块内的集成,主要是测试模块内各个接口间的交互集成关系;2.子系统内的集成,测试子系统内各个模块间的交互关系;3.系统集成,测

学习Node js:raw-body模块源码解析

raw-body是什么raw-body的主要功能是处理HTTP请求体的原始数据。它提供了以下核心功能:解析请求体:可以从HTTP请求中提取原始数据,包括文本和二进制数据。配置选项:通过配置项,可以设置请求体的大小限制、编码方式等参数。异常处理:模块能够处理异常情况,如请求体超出限制。编码转换:支持将原始数据解码为指定编

Android 网络请求方式

前言最近需要将Android项目接入物联网公司提供的接口,所以顺便给大家分享一下Android中我们常用的网络请求吧!提醒大家一下,我们遇到接口需求,一定要先在Postman上测试接口是否正确,然后再去项目上写程序来请求接口;否则,请求出问题,你都不确定是你程序写的有问题还是接口本身提供的有问题。Android网络请求

第八章 网络基本配置与应用

第八章网络基本配置与应用​Linux操作系统时随着计算机网络技术的发展而产生并发展的,因此其网络功能也十分强大。Ubuntu系统作为Linux的一种具体实现,同样集成了Linux强大的网络功能,并且也只有在网络环境下才能充分发挥Ubuntu系统的全部功能。1.网络的基本配置1.1.网络基础知识​计算机网络是指将地理位置

9.20金融科技(比特币)

​比特币的起源和发展2008年爆发全球金融危机,同年11月1日,一个自称中本聪(SatoshiNakamoto)的人在P2Pfoundation网站上发布了比特币白皮书《比特币:一种点对点的电子现金系,陈述了他对电子货币的新设想——比特币就此面世。2009年1月3日,比特币创世区块诞生。2014年9月9日,美国电商巨头

看完这篇 教你玩转渗透测试靶机Vulnhub——Grotesque:3.0.1

Vulnhub靶机Grotesque:3.0.1渗透测试详解Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:①:信息收集:②:漏洞发现:③:LFI漏洞利用(本地文件包含漏洞):④:SSH登入:⑤:提权:⑥:获取FLAG:Vulnhub靶机渗透总结:Vulnhub靶机介绍:vulnhub是个提供各

比特币的蒙提霍尔问题

把钱放在嘴边我们在比特币上建立了蒙提霍尔问题模拟。如果您知道概率谜题的正确答案,不仅炫耀您的数学技能,还会获得金钱奖励。它完全无需信任地在链上运行。蒙提霍尔问题蒙提霍尔问题(三门问题)是一个以蒙提霍尔命名的概率谜题,蒙提霍尔是电视节目《让我们做个交易》的原主持人。这是一个著名的反直觉统计难题,其解决方案非常荒谬,即使被

Python爬虫基础(三):使用Selenium动态加载网页

文章目录系列文章索引一、Selenium简介1、什么是selenium?2、为什么使用selenium3、安装selenium(1)谷歌浏览器驱动下载安装(2)安装selenium二、Selenium使用1、简单使用2、元素定位3、获取元素信息4、交互三、Phantomjs使用(停更)1、什么是Phantomjs2、下

BD就业复习第一天

hive1.分区分桶在Hive中,分区(Partition)和分桶(Bucketing)都是用于数据管理和查询性能优化的技术。它们有不同的用途和特点。分区(Partition):定义:分区是将数据按照某一列或多列的值划分为不同的子目录,使数据可以按照分区列的值进行组织。例如,可以根据日期将数据分为不同的分区,每个分区对

Node18.x基础使用总结(一)

Node18.x基础使用总结1、Node安装2、Buffer2.1、概念2.2、特点2.3、使用2.3.1、创建Buffer2.3.2、Buffer与字符串的转化2.3.3、Buffer的读写3、fs模块3.1、文件写入3.1.1、writeFile异步写入3.1.2、writeFileSync同步写入3.1.3、ap

相对论的应用:GPS导航

“但是数学享有盛誉还有另一个原因:正是数学为精确的自然科学提供了一定程度的安全保障,而没有数学,它们就无法实现这一点。”“就现实而言,数学定律是不确定的;就其确定而言,它们并不涉及现实。”—阿尔伯特·爱因斯坦爱因斯坦的相对论彻底改变了我们对宇宙的理解,从根本上改变了我们感知时间和空间的方式。该理论目前是当代物理学的孪生

热文推荐