计算机网络总结系列之【http/https协议】

目录

http——超文本传输协议(HyperText Transfer Protocol)

简介

http首部格式

请求报文格式

响应报文格式

常见请求方法

GET和POST的区别

http状态码

特点

简单

无状态

无连接

不安全

灵活且易扩展

https——安全超文本传输协议(Hyper Text Transfer Protocol over SecureSocket Layer)

简介

信息加密——混合加密

对称加密

非对称加密

混合加密

身份认证——数字证书

内容校验——摘要算法

http和https的区别

参考


http——超文本传输协议(HyperText Transfer Protocol)

简介

超文本传输协议,顾名思义,分为3个部分:超文本、传输、协议

超文本:是文字、图片、视频等的混合体——最关键是有超链接,即能从一个超文本跳转到另外一个超文本

传输:专门用来在两点(服务器-浏览器、服务器-服务器)之间双向传输数据

协议:各种控制和错误处理方式的行为约定和规范

因此,http是一个在计算机世界里专门在「两点」之间「传输」文字、图片、音频、视频等「超文本」数据的「约定和规范」


http首部格式

请求报文格式

http请求报文通常由请求行(request line)、请求头部(header)、空行和请求数据(body)4个部分组成

POST /user HTTP/1.1                       
Host: www.baidu.com
Content-Type: application/x-www-form-urlencoded
Connection: Keep-Alive
User-agent: Mozilla/5.0.                  
(空行)                        
name=world                                
  • 请求行:请求方法+URL+协议版本,采用“空格“分隔

如:POST /user HTTP/1.1

  • 请求头部:由key-value对组成,每行一对,关键字和值用英文冒号“:”分隔,用于通知服务器有关于客户端请求的信息

如:Host:请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

       Content-Type:媒体类型信息

       Connection:连接状态

       User-agent:产生请求的浏览器类型

  • 空行:最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头
  • 请求数据:请求数据不在GET方法中使用,而是在POST方法中使用,与请求数据相关的最常使用的请求头是Content-Type和Content-Length

如:name=world

响应报文格式

img

http响应报文通常由状态行、响应头部、空行、响应正文4部分组成

 HTTP/1.1 304 Not Modified
 Date:Sat, 15 Oct 2011 15:39:29
 (空行)                                      
 (空响应体)

状态行:协议版本+状态码+状态码描述,采用“空格“分隔

响应头部:同请求报文

空行:同请求报文

响应正文:响应的消息内容,如果是纯数据就返回纯数据,HTML页面则返回HTML代码,诸如此类 


常见请求方法

  • GET和POST的区别

  GET POST
目的 从服务器获取数据 向服务器传递数据
数据位置 参数包含在URL中 传递的数据封装在http请求体中
保存 请求参数会被完整保留在浏览器历史记录里 参数不会被保留
长度

传递参数长度受限(浏览器URL有最大长度限制)

可以传递大量数据
隐秘性 暴露在URL中,不隐密 封装在请求体中,隐密
数据量 浏览器会把http header和data一并发送出去,产生一个数据包,服务器响应200 浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)产生两个数据包

安全和幂等的概念

  • 在 HTTP 协议里,所谓的「安全」是指请求方法不会「破坏」服务器上的资源

  • 所谓的「幂等」,意思是多次执行相同的操作,结果都是「相同」的

很明显GET是幂等的,因为它是只读操作,不修改服务器数据,所以是安全的,且多次操作结果相同

POST 因为是「新增或提交数据」的操作,会修改服务器上的资源,所以是不安全的,且多次提交数据就会创建多个资源,所以不是幂等的


http状态码

状态码的第一个数字代表当前响应的类型

状态码 类别 含义 举例
1XX 信息性状态码 接收的请求正在处理 100-正常处理
2XX 成功状态码 请求正常处理完毕

200-OK

204-请求成功处理,但返回响应不包含实体

3XX 重定向状态码 需要进行附加操作以完成请求

301-永久性重定向

302-临时性重定向

4XX 客户端错误状态码 服务器无法处理请求

403-请求被拒绝

404-Not Found

5XX 服务器错误状态码 服务器处理请求出错

500-服务器正在执行请求时发生错误

503-服务器超负载或正在维护


特点

简单

基本报文格式:header+body,头部信息是key-value的简单文本形式,易于理解

无状态

协议对客户端没有状态存储,减少了服务器的负担,但在完成关联性操作时很麻烦,如:访问一个网站需要反复进行登录操作

无连接

HTTP/1.1之前,每次请求都需要通过TCP三次握手四次挥手,和服务器重新建立连接

比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,增加开销

不安全

在网络传输中使用明文进行通信,没有对数据进行加密,内容容易遭到窃听,如:账号可能泄露

不验证通信方的身份,可能遭遇伪装,如:访问假的淘宝

无法保证数据的完整性,可能遭到篡改,如:广告植入

灵活且易扩展

请求方法、URI/URL、状态码、首部字段的要求没有固定形式,允许开发人员自行扩充


https——安全超文本传输协议(Hyper Text Transfer Protocol over SecureSocket Layer)

简介

http协议存在三个安全问题:

  • 窃听:明文信息传输可能遭到恶意截获
  • 伪装:没有身份校验机制可能有伪造的请求和响应
  • 篡改:通信途中可能遭遇截获并篡改信息

因此 https 在 TCP 和 http 中间加入了 SSL/TLS 安全协议解决以上三个问题

  • 信息加密:混合加密的方式实现信息的加密传输
  • 身份认证:通过数字证书解决冒充风险
  • 内容校验:摘要算法来实现完整性校验

信息加密——混合加密

  • 对称加密

加密和解密使用同一密钥

优点:运算速度快

缺点:无法保证密钥在通信过程中的安全性

  • 非对称加密

加密和解密使用不同密钥,公钥所有人都可以获得,私钥只能由一方保管不能泄露

如:你向银行请求公钥,使用公钥进行加密,则只有私钥的持有人才能对你的消息解密

优点:公钥是公开的,只要私钥不泄露就不存在安全性问题

缺点:运算速度慢

  • 混合加密

结合对称加密和非对称加密的特点,可以采用混合加密的方式,综合二者的优点进行使用

发送方 将 对称加密的密钥 使用 非对称加密 的 公钥 进行加密,然后发送出去(解决了对称加密密钥传输不安全的问题)

接收方 使用 私钥 进行解密得到 对称加密的密钥 ,然后双方可以使用 对称加密 来进行沟通(解决了非对称加密运算速度慢的问题)


身份认证——数字证书

回想加密过程,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密,那么如何保证公钥不被篡改和信任度?

这里就需要借助第三方权威机构(CA,Certificate Authority),将服务器公钥放在数字证书(由CA颁发)中,只要证书是可信的,公钥就是可信的

服务器向 CA 提出公钥的注册申请,CA 在判明提出申请者的身份之后,会对已申请的公钥做数字签名,然后分配这个已签名的公钥,并将该公钥放入公钥证书后绑定在一起 

进行 HTTPS 通信时,服务器会把证书发送给客户端,客户端取得其中的公钥之后,先使用数字签名进行验证,如果验证通过,就可以开始通信了


内容校验——摘要算法

客户端在发送信息之前会通过摘要算法算出明文的「指纹」,发送的时候把「指纹 + 明文」一同加密成密文后,发送给服务器

服务器解密后,用相同的摘要算法计算发送过来的明文,通过比较客户端携带的「指纹」和当前算出的「指纹」做比较,若「指纹」相同,则说明数据是完整未被篡改的


http和https的区别

特性 http https
安全性 明文传输 混合加密
身份认证 没有身份认证 需要申请数字证书
内容校验 没有内容校验机制 通过内容校验保证数据完整性
端口号 80 443
处理速度 较快 需要加密解密,速度稍慢
连接管理 TCP连接 TCP+SSL/TLS

参考

https://blog.csdn.net/csdnnews/article/details/104765642

https://blog.csdn.net/xiaoming100001/article/details/81109617

猜你喜欢

转载自blog.csdn.net/qq_37348221/article/details/114893954