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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 我们在之前的文章里讲过,应用层是应用在各个程序之间的数据沟通,其实应用层协议是面向程序员的,因为这些协议都是程序员写的,是方便程序员在编写程序时完成各个应用程序之间的沟通

第二部分: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证书,进行解析验证权威机构是否自己信任,在权威机构验证身份后,解析出公钥

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

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

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

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


目录
相关文章
|
2月前
|
安全 搜索推荐 网络安全
HTTPS与HTTP:区别及安全性对比
HTTP和HTTPS是现代网络通信中的两种重要协议。HTTP为明文传输,简单但不安全;HTTPS基于HTTP并通过SSL/TLS加密,确保数据安全性和完整性,防止劫持和篡改。HTTPS还提供身份验证,保护用户隐私并防止中间人攻击。尽管HTTPS有额外的性能开销和配置成本,但在涉及敏感信息的场景中,如在线支付和用户登录,其安全性优势至关重要。搜索引擎也更青睐HTTPS网站,有助于提升SEO排名。综上,HTTPS已成为大多数网站的必然选择,以保障用户数据安全和合规性。
126 1
|
2月前
|
缓存 负载均衡 应用服务中间件
Nginx七层(应用层)反向代理:HTTP反向代理proxy_pass篇
通过使用Nginx的反向代理功能,可以有效地提高Web应用的性能、安全性和可扩展性。配置过程中需要注意不同场景下的具体需求,如负载均衡、SSL终止和缓存策略等。正确配置和优化Nginx反向代理可以显著提升系统的整体表现。
364 20
|
3月前
|
存储 JSON 缓存
【网络原理】——HTTP请求头中的属性
HTTP请求头,HOST、Content-Agent、Content-Type、User-Agent、Referer、Cookie。
|
3月前
|
前端开发 网络协议 安全
【网络原理】——HTTP协议、fiddler抓包
HTTP超文本传输,HTML,fiddler抓包,URL,urlencode,HTTP首行方法,GET方法,POST方法
|
3月前
|
数据采集 安全 搜索推荐
HTTP代理IP纯净度 提升用户网络体验的核心竞争力
随着互联网发展,使用HTTP动态代理IP的需求日益增加。高纯净度的代理IP在隐私与安全、网络体验和业务运营方面至关重要。它能保护用户信息、提高数据安全性、确保访问速度和连接稳定,并提升业务效率与信誉度。
66 2
|
3月前
|
JSON Dart 前端开发
鸿蒙应用开发从入门到入行 - 篇7:http网络请求
在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用、ArkUI里的基础组件,并通过制作一个简单界面掌握使用
105 8
|
3月前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
910 68
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
3月前
|
缓存 负载均衡 监控
HTTP代理服务器在网络安全中的重要性
随着科技和互联网的发展,HTTP代理IP中的代理服务器在企业业务中扮演重要角色。其主要作用包括:保护用户信息、访问控制、缓存内容、负载均衡、日志记录和协议转换,从而在网络管理、性能优化和安全性方面发挥关键作用。
116 2
|
3月前
|
网络协议 安全 网络安全
探索网络模型与协议:从OSI到HTTPs的原理解析
OSI七层网络模型和TCP/IP四层模型是理解和设计计算机网络的框架。OSI模型包括物理层、数据链路层、网络层、传输层、会话层、表示层和应用层,而TCP/IP模型则简化为链路层、网络层、传输层和 HTTPS协议基于HTTP并通过TLS/SSL加密数据,确保安全传输。其连接过程涉及TCP三次握手、SSL证书验证、对称密钥交换等步骤,以保障通信的安全性和完整性。数字信封技术使用非对称加密和数字证书确保数据的机密性和身份认证。 浏览器通过Https访问网站的过程包括输入网址、DNS解析、建立TCP连接、发送HTTPS请求、接收响应、验证证书和解析网页内容等步骤,确保用户与服务器之间的安全通信。
217 3
|
4月前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
103 11