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

本文涉及的产品
云解析 DNS,旗舰版 1个月
密钥管理服务KMS,1000个密钥,100个凭据,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证书,进行解析验证权威机构是否自己信任,在权威机构验证身份后,解析出公钥

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

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

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

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


目录
相关文章
|
3天前
|
负载均衡 网络协议 算法
|
6天前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
16 2
|
6天前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
28 13
|
5天前
|
存储 缓存 网络协议
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点,GET、POST的区别,Cookie与Session
计算机网络常见面试题(二):浏览器中输入URL返回页面过程、HTTP协议特点、状态码、报文格式,GET、POST的区别,DNS的解析过程、数字证书、Cookie与Session,对称加密和非对称加密
|
6天前
|
网络协议 算法 网络性能优化
计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议
计算机网络常见面试题(一):TCP/IP五层模型、应用层常见的协议、TCP与UDP的区别,TCP三次握手、四次挥手,TCP传输可靠性保障、ARQ协议、ARP协议
|
7天前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
14 3
|
8天前
|
前端开发 JavaScript 数据库
https页面加载http资源的解决方法
https页面加载http资源的解决方法
26 4
|
域名解析 存储 网络协议
【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )
【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )
318 0
【计算机网络】应用层 : 万维网 和 HTTP 协议 ( 万维网概述 | HTTP 协议特点 | HTTP 协议连接方式 | HTTP 协议报文结构 | HTTP 请求报文 | HTTP 响应报文 )
|
2月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
1月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
139 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术