http和https协议

第一部分:Http协议

  1.1 http协议简介:

  http协议是超文本传输协议,是基于请求与响应的,无状态,无连接的协议,常基于TCP/IP协议传输数据,默认是端口是80,https默认端口是443

  

  1.2 http协议工作原理:

    HTTP是基于客户端/服务端(C/S)的架构模型,客户端的浏览器通过TCP协议与服务器建立连接,建立连接后,客户端向web服务器发送请求;

    web服务器接受到请求后,向客户端的发送响应信息;

    客户端接收到服务器返回的响应信息后,通过浏览器显示在用户的显示器上,然后客户端与服务器断连接。

  1.3 http协议的特点:

    1)http是无状态:http协议是无状态协议。无状态协议是指:协议对客户端没有状态存储,即对事物的处理没有“记忆”能力,比如访问一个网站需要重复的登录操作;j解决方法:1通过cookies/session会话保存;2持久连接(HTTP keep-alive)方法,只要任意一端没有明确提出断开连接

    2)http是无连接:无连接的含义是指限制每次只处理一个请求,服务器处理完客户的请求,并接收到客户的应答后,服务器就会断开宇客户端的连接。采用这种方式可以节省传输时间。

    3)http是基于请求和响应:基本特性就是客户端发送请求,服务端响应。

    4)通信使用明文,请求和响应不会对通信方式进行确认,无法保证数据的完整性。

    5)简单快速、灵活。

  1.4 http信息结构

    1.4.1 客户端发送的请求信息

    客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成;

    

    1.4.2请求头部字段信息: 

    Host :请求的资源在哪个主机的端口上
    Connection:该请求支持长连接(heep_alive)
    Content-Length:正文内容长度
    Content-Type:客户端传入参数的数据格式
    User-Agent:声明用户的操作系统和浏览器版本信息
    Accent:发起了请求
    Referer:当前页面是从哪个页面跳转过来的
    Accept-Encoding:接受的编码
    Accept-Language:接受的语言类型
    Cookie:用于在客户端存储少量信息,通常用于实现会话(session)功能

    Aceept:客户端可以接收的数据格式

    1.4.3 服务端的响应信息

    Http响应部分有四个部分组成:状态行、消息头、空行和响应正文;

 

  1.5 http 请求方法

  

  1.5.1 get和post的区别:

    1)get重点是从服务器上获取资源,post重点是想往服务器发送资源;

    2)get方式数据传输量比较小,最多才1024个字节,而post则没有限制,所以有时候上传文件时只能用post方式

    3)get方式传参数据时参数都显示在URL上,而post的参数则在请求体中,post比get更安全。

   1.5.2 cookies机制和session机制的区别:

    1)cookies数据保存在客户端,session数据保存在服务端;

    2)cookies可以减轻服务器的压力,但是不安全,容易进行cookies欺骗;

    3)session安全一点,但是会占用服务器资源。

   1.5.3 http与https的区别:

    https协议就是身披SSL外壳的http;

    1)https有ca证书,http一般没有

    2)http是超文本传输协议,信息是明文传输,而HTTPS则是具有安全性的SSL加密的传输协议

    3)http默认端口是80,HTTPS默认端口是443

  1.5.4 http简答题:浏览器输入一个地址,到页面展示中间经过哪些东西?

    1)浏览器输入url,先进行解析url是否合法;

    2)浏览器检查是否有缓存(浏览器缓存--系统缓存---路由器缓存),如果有缓存,则直接显示;如果没有缓存,在浏览器发送http请求前,需要进行域名解析(DNS解析),解析获取相对应的ip地址;

    3)浏览器想向务器发起TCP链接,与浏览器经历TCP三次握手,完成链接

    4)链接成功后,浏览器向服务器发送http请求以及请求数据包

    5)服务器收到处理的请求后,将响应数据返回至浏览器

    6)浏览器收到http响应后,并解析响应,如果响应可以缓存则进行缓存

    7)浏览器发送异步请求获取嵌入在HTML中的资源,对于未知类型,会弹出对话框

    8)页面全部渲染结束并关闭链接。

  1.6 http 响应码    

常见状态码:
200:请求被正常处理
204:请求被受理但是没有资源可以返回
206:客户端只请求资源的一部分,服务器只对请求的部分资源执行get方法,相应报文中通过Content-Range指定范围资源

301:永久性重定向
302:临时重定向
303:临时重定向 与302类似,只是它希望客户端在请求一个URI的时候,能通过get方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用post方法

400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止被访问
404:服务器无法找到对应资源

500:服务器内部错误
502: 网关错误
503:服务器正忙

 第二部分:HTTPS协议

  2.1 什么是https协议

  https协议就是身披SSL外壳的Http协议。https协议是一种通过计算机网络进行安全通信的传输协议,经由http进行通信,利用SSL/TLS进行加密数据包。https默认的端口号是443。

有两种基本的加解密算法类型:

1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;

2)非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

  2.2 https协议特点

  基于http协议,通过SSL或TLS提供加密数据处理、验证对方身份以及数据完整性保护。

  1)内容加密:采用混合加密技术,中间者无法直接查看明文内容;

  2)验证身份:通过证书认证客户端访问的是自己的服务器;

  3)保证数据的完整性:防止传输的数据被中间人冒充或者篡改。

  2.3 HTTPS的实现原理 

  大家可能都听说过 HTTPS 协议之所以是安全的是因为 HTTPS 协议会对传输的数据进行加密,而加密过程是使用了非对称加密实现。但其实,HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。

  HTTPS的整体过程分为证书验证和数据传输阶段,具体的交互过程如下:

  

  • 证书验证阶段

  浏览器向服务器发起Https请求,服务器接收到请求后,将会携带CA证书(包括公钥)返回给客户端,客户端解析证书并验证证书是否合法,如果不合法则提示警告,反之则准备进行数据传输;

  • 数据传输阶段 

  当证书验证合法后,取出公钥生成随机数,然后通过公钥对随机数进行非对称加密,并把加密后的随机数发送给服务器端,服务器端使用私钥对随机数进行解密,解密后服务器端对客户端传入的随机数进行对错加密,最后把对此加密后的内容传输给客户端。

  2.3.1 为什么数据传输是用对称加密

  首先,非对称加密的加解密效率相对于对称加密比较低,而http的应用场景通常是端对端之间的存在大量的交互,非对称加密是无法接受的;

  其次,在https的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以https中内容传输加密方式采用对称加密,而不是非对称加密。

  2.4 HTTPS 的缺点(对比优点)

  • https协议握手阶段比较耗时,会使页面加载时间延长
  • https协议连接缓存不如http高效,会增加数据开销,甚至已有的安全措施也是也会因此受到影响
  • SSL证书需要绑定IP,不能在同一个IP上绑定多个域名,IPV4资源不可能支撑这个消耗
  • 增加成本  

 

 

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

感谢:https://blog.csdn.net/qq_35642036/article/details/82788421

posted @ 2022-03-17 16:38  浩浩学习  阅读(2034)  评论(0编辑  收藏  举报