网络基础之应用层协议,组织方式,自定义协议和http协议https协议简单介绍(2)

本文涉及的产品
.cn 域名,1个 12个月
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: 我们在之前的文章里讲过,应用层是应用在各个程序之间的数据沟通,其实应用层协议是面向程序员的,因为这些协议都是程序员写的,是方便程序员在编写程序时完成各个应用程序之间的沟通

第二部分:URL(统一资源定位符)


url就是我们经常说的“网址”,功能就是定位网络上某一台主机上的某个资源

image.png

服务器地址(域名):ip地址才是网络上一台主机的标识但是ip地址不容易记忆,所以就设计了域名系统,以便于记忆的字符串作为域名,通过域名上网的时候,先进过域名系统进行域名解析,得到服务器的ip地址,然后通过ip地址进行访问。在win系统下的文件夹记录了域名和ip地址的映射关系,如果将其修改,就无法进行访问。

port:在我们浏览网页的时候,在网址中并没有看到端口,这是因为http服务器默认使用80端口(https:443)

资源路径:是一个相对资源路径,这样用户不能随意访问服务器上的文件,智能访问相对应目录中的所有文件9

urlencode: url编码,目的就是将查询字符串或者资源路径中特殊的字符进行编码转移,编码格式:将特殊字符值转化为16进制的ASCII字符,前缀为 %


(像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现.比如, 某个参数中需要带有这些特殊字符,

就必须先对特殊字符进行转义.转义的规则如下:将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式,urldecode就是urlencode的逆过程;)


ch :#之后的数据,叫做片段标识符通常用于定位网页中的某个id标签,用于打开网页后直接跳转至指定位置


第三部分:协议版本


Header: 请求的属性,以冒号分隔和空格的键值对,每组属性之间采用\n进行分隔,遇到空行表示Header部分结束,是对于请求的附加描述和正文描述。

请求头部(只会在请求中出现的头部字段,描述请求)

正文头部(在请求和响应中都会出现,主要是对于正文的描述)

响应头部(只会在响应中出现的头部字段,描述响应)

**通用头部(**在请求和响应中都会出现,属于本次通信或者链接的一些描述)

Body:空行后边的内容都是body,body允许空字符串,如果cody存在,那么header中会有一个content—length属性来标识body的长度


HTTP常见Header

connection:keep—alive/close;可以控制长链接还是短链接

Content-Type: 数据类型(text/html等),就是服务器收到信息后如何进行解析处理

Content-Length: Body的长度

Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;

User-Agent: 声明用户的操作系统和浏览器版本信息;

referer: 当前页面是从哪个页面跳转过来的;

location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;

Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;


HTTP常见状态码


image.png

重定向:最初设计的目的是:一个请求,要请求的资源被移动到了其他位置,重定向到其他链接。比如我们要请求a.png这个文件,但是每个文件都存放在根目录也不行,我们将其放入image/a.png这个文件夹中,想要依然保持原链接有效,我们要进行重定向。


HTTP响应


image.png

响应首行是:[版本号] + [状态码] + [状态码解释]http版本各个版本号的区别于介绍


协议切换: 我们经常使用的http协议,我们发一个协议你才能给我进行一个回复,服务器无法主动给客户端发送消息,比如经常使用的网页聊天功能,所以后来就有人设计了一个websocke协议,建立了一个长链接,如果服务器需要给客户端发送消息的话,就会切换到websocket协议。


头部字段中的cookie(请求头)和set-cookie(响应头)

http是一个简单的请求——响应协议,不管是短连接还是长链接,链接都不是一直持续的。

这样就会存在一个问题:比如在网站购物,因为链接不是持续的,导致每次买东西都要重新建立链接进行登录。因此,不管链接是不是原来的,但是都要分辨出用户,为了解决这个问题就提出了一个方案:cookie机制

cookie是一种信息缓存机制,将一些信息保存到客户端主机上,等下一次请求服务器的时候读取出来发送给服务器


image.png

image.png

第一次登录将用户名等信息缓存至本地,在下次再进行请求的时候就会从本地中取出来,在多次通信中不断维护客户端的状态。但是这样存在缺陷:不安全。很多敏感信息容易被劫持,因此,不能将敏感信息进行传输,所以提出了session(会话)机制。

session会话:就是为客户端和服务器的通信建立一个会话,将会话重要内容保存起来,会话内容被保存在服务器上,通过cookie只需要传输session_id即可,将敏感信息保存起来。session会话机制是在cookie机制的基础上,避免了敏感信息的传输,提高了安全性。


session和cookie简单区别


1.cookie是将关键信息保存在客户端本地,每次通信前发给服务器

2.session是将会话信息保存在服务器,通过session_id进行cookie传输,保存隐私性

本质上来说还是有一些安全隐患的,比如:cookie篡改


HTTPS协议:


https协议:在http协议的基础上进行了一层加密,因此https不是一个新的协议,而是一个加密后的协议。

加密:ssl/tls(安全套接层)加密


为什么要进行加密:


1.身份验证: 在进行网络通信的时候要知道对方是谁,并且还要可以验证通信的就是正确的。第三方权威机构+ca验证。通信前进行解析证书,查看证书中的权威机构是否是自己信任的权威机构,查看证书有没有被修改,确认对方的身份信息

2.加密传输: 对数据的传输进行加密

通信双方进行传输加密,需要进行一个密钥的协商,容易被黑客进行劫持。

3.加密方式

(1)对称加密: 数据的加密和解密使用的是相同的密钥

缺点:进行密钥协商的时候容易被劫持,加密形同虚设

优点:加解密的效率高

(2)非对称加密:数据的加密和解密使用的密钥是不一样的

缺点:加解密的效率是比较低下的

优点:安全,不怕被劫持

思想:通过指定的算法(RSA),可以生成一对密钥(公钥和私钥),使用公钥进行加密,使用私钥进行解密

流程:链接建立成功之后,将自己的公钥发送给对方,对方使用公钥加密传输的数据,这个数据只能使用私钥进行解密

(3)混合加密: 假设是客户端对服务器进行验证

1.生成一对非对称密钥,链接建立成功,通信前将公钥发送给对方(所以这时候一开始的时候私钥是掌握在服务器的手中的,只有服务器能进行解密)

2.客户端收到后,使用公钥进行加密一个随机数a,以及自己支持的对称加密算法

3.服务器收到之后使用私钥进行解密,得到了随机数a和对方所支持的对称加密算法

4.服务器向客户端发送一个随机数b,以及自己支持的对称加密算法,客户端和服务器,各自根据两个随机数和支持的对称加密算法,计算出一个对称密钥(密钥的协商就完毕了)

5.往后的通信使用堆成密钥进行加密解密


CA证书


在实际的ssl加密中,身份验证和加密传输是聚合在一起的,即包含在CA证书中,CA证书中包含了更多的关于通信方的公钥,机构信息,证书颁发机构信息,失效时间…

整体流程: 单向验证,以服务器验证为主


服务器自己生成了一对密钥,拿着公钥去第三方权威机构颁发证书

权威机构根据服务器的公钥,生成一个CA证书给服务器

客户端与服务器建立链接后,通信前,服务器会将CA证书发送给客户端

客户端收到CA证书,进行解析验证权威机构是否自己信任,在权威机构验证身份后,解析出公钥

客户端随机生成一个随机数,使用公钥对随机数+加密算法进行加密,发送给服务器

服务器收到数据之后,使用私钥进行解密,生成一个随机数,将随机数和加密算法发给客户端

客户端收到数据后,客户端和服务器都有对方的随机数和自己的随机数,以及加密算法,进行计算得到一个对称密钥

往后的通信,使用堆成密钥进行加密传输


目录
相关文章
|
5天前
|
缓存 安全 网络协议
HTTP和HTTPS的区别有哪些?
本文简要总结了 HTTP 和 HTTPS 的区别,从概念、端口、连接方式、使用场景、安全性等多个角度进行了对比。HTTP 是无状态的、无连接的应用层协议,适用于一般性网站和性能要求较高的应用;HTTPS 则通过 SSL/TLS 层提供加密、认证和完整性保护,适用于涉及敏感信息和高安全性的场景。文章还讨论了两者在性能上的差异,包括握手和加密开销、缓存效果以及 HTTP/2 的多路复用技术。最终,根据具体需求选择合适的协议能够更好地平衡安全性和性能。
50 2
HTTP和HTTPS的区别有哪些?
|
23天前
|
域名解析 存储 安全
HTTP【网络】
HTTP协议格式、HTTP的方法 、HTTP的状态码、HTTP常见的Header
206 6
HTTP【网络】
|
15天前
|
缓存 网络协议 前端开发
Web 性能优化|了解 HTTP 协议后才能理解的预加载
本文旨在探讨和分享多种预加载技术及其在提升网站性能、优化用户体验方面的应用。
|
18天前
url重写重定向所有http网址到https网址
url重写重定向所有http网址到https网址
21 4
|
18天前
|
Docker 容器
docker nginx-proxy 添加自定义https网站
docker nginx-proxy 添加自定义https网站
22 4
|
19天前
|
JavaScript 安全 Java
谈谈UDP、HTTP、SSL、TLS协议在java中的实际应用
下面我将详细介绍UDP、HTTP、SSL、TLS协议及其工作原理,并提供Java代码示例(由于Deno是一个基于Node.js的运行时,Java代码无法直接在Deno中运行,但可以通过理解Java示例来类比Deno中的实现)。
45 1
|
15天前
将http和https的非www顶级域名301重定向至www
将http和https的非www顶级域名301重定向至www
19 0
|
15天前
|
安全 应用服务中间件 网络安全
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTTPS, but requested an insecure frame 'http://xxx'. This request has been blocked; the content must be served over HTTPS. 的问题
|
18天前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
13 0
|
8天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:守护数字世界的坚盾
在数字化浪潮中,网络安全已成为维系现代社会正常运转的关键。本文旨在探讨网络安全漏洞的成因、加密技术的应用及安全意识的提升,以期为广大用户和技术人员提供实用的知识分享。通过对这些方面的深入剖析,我们期望能够共同构建一个更加安全可靠的数字环境。