zoukankan      html  css  js  c++  java
  • 你不得不知道的HTTP协议和HTTPS协议

    前言:“不是井里没有水,而是你挖的不够深;不是成功来的慢,而是你努力的不够狠。”
    你好,我是梦阳辰!一起学习起来吧!

    01.HTTP概述

    HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。是一个基于请求与响应的模式的,无状态的网络协议。是浏览器和服务器间最常用的通讯协议。HTTP协议是浏览器与服务期间的数据传递格式的一种约定,浏览器与服务器只要都遵循这个约定,就可以进行数据通讯了。

    HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。设计HTTP的初衷就是为了提供一种发布和接受HTML页面的方法。

    1.请求与响应
    由浏览器向服务器发送数据,称为请求(request)。由服务器向浏览器发送数据,则成为Response。

    2.HTTP版本
    客户端若要向服务器发出请求,必须首先在他们之间创建一个TCP(Transfer Control Protocal,传输控制协议)连接。而当客户端与服务器通讯结束后,TCP连接将被关闭。而这个链接就是基于HTTP协议的。

    TCP连接的建立需要经过“三次握手”,TCP连接的关闭需要经过“四次通信”。
    在这里插入图片描述
    HTTP1.0版本
    客户端若要向服务器发出请求,必须首先在他们之间创建一个TCP连接。而当客户端与服务器通讯结束后,TCP连接将被关闭。只有等待上一次连接请求所对应的响应被客户端接收到后,客户端才可发出第二次请求。客户端与服务器端每次建立和关闭连接是一个相对比较费事的过程,会严重影响客户端和服务器的性能。(非持久连接)
    在这里插入图片描述
    HTTP1.1版本
    是一种持久连接,在一个TCP连接上可以传送多个HTTP请求和响应。减少了建立和关闭连接的消耗与延迟。一个包含有许多css,js,图片等资源的页面,其所发出的多个请求和响应可以在一个链接中传输。但每个单独的页面文件的请求和响应仍然需要使用各自的连接。

    HTTP1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果。为了防止服务器主动将TCP连接关闭,在每一个请求中都携带了一个参数Connectiong,用于告诉服务器是否关闭连接。由客户端发送了关闭TCP连接时,服务器才会将TCP连接关闭。

    在这里插入图片描述
    HTTP1.0不支持Host请求属性,web浏览器无法使用主机域名来明确表示要访问服务器上的哪个web站点,这样就无法使用web服务器在同一个IP地址和端口号上配置多个虚拟web站点。(使得硬件无法得到充分利用)而HTTP1.1支持Host请求属性。

    总结:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    02HTTP协议的组成

    HTTP协议包括两部分:请求协议与响应协议,分别用于制定请求与响应信息的格式。

    1.请求协议
    在学习请求协议前了解一下URL和URI.
    URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。可以在全群范围内唯一的确定一个资源。

    URI:统一资源标识符,用于标识一个资源的名称。通过这种名称命名的资源可以被互联网定位和访问。

    请求协议规定:请求的信息格式包括四部分:请求行,请求报头,空白行,与请求正文。
    请求行:
    请求报头:
    空白行:
    请求正文:
    在这里插入图片描述

    2.响应协议

    3.状态码
    当进行web应用访问时,经常会看到一些4开头或5开头的提示信息页面。这些就是HTTP协议制定的。让服务器传递给浏览器的状态码。表示服务器对当前请求的处理状态。

    2开头:表示请求与响应成功。常见的状态码200
    4开头:表示请求错误。其中常见的状态码是404
    5开头:表示服务端错误。常见的状态码:500

    4.GET和POST请求方式
    HTTP协议规定,浏览器向服务器发送数据提交请求的提交方式有8种。但GET与POST请求最常用。

    GET请求
    由于GET请求会将请求的所携带的参数作为请求URL中的一部分出现,所以请求参数会显示在地址栏。这导致了GET的三点不足。

    参数值只能是字符串,而不能是其他类型。
    可以携带的数据量小。
    数据安全性低。

    但是:GET请求有个很重要的特征:客户端一旦接收到“服务器向GET请求发送的响应”后,浏览器会自动缓存响应。当客户端再次进行相同请求提交时,将直接读取本地浏览器缓存中数据,而不再向服务端真正发送数据。让用户感觉服务端的响应很快,提升用户体验,减轻了服务器压力。

    POST请求
    POST请求会将请求所携带的数据已请求正文的形式出现。
    数据类型可以是任意 类型,还可以是声音,图片,视频等。
    可以携带的数据量大。
    安全性高。
    在这里插入图片描述
    为什么要设计为GET和POST请求呢?

    第一:GET请求的目的一般是客户端要从服务端下载资源。发送相同的请求就代表要下载相同的资源。如果已经被下载了,就无需再下载了。

    POST请求的目的一般是客户端要向服务端上传资源。对于向服务端上传资源后相应的结果,浏览器是无需缓存的。

    第二:两种提交方式的比较难易程度是不同的。
    GET提交方式的请求只包含请求行,请求头与空行三部分。所以第二次请求与前一次请求是否相同,浏览器很好做出比较。
    POST提交方式所包含的数据量比较大,主要体现在请求正文内容多。对于POST提交,是否是相同请求的提交不好比较。

    5.默认请求的提交方式
    浏览器向服务器请求的方法常见的有五种。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    03.HTTPS协议

    超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)是一种网络安全传输协议。具体介绍以前先来介绍一下以前常见的HTTP,HTTP就是我们平时浏览网页时候使用的一种协议。HTTP协议传输的数据都是未加密的,也就是明文,因此使用HTTP协议传输隐私信息非常不安全。HTTP使用80端口通讯,而HTTPS占用443端口通讯。在计算机网络上,HTTPS经由超文本传输协议(HTTP)进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网络服务器的身份认证,保护交换数据的隐私与完整性。这个协议由网景公司(Netscape)在1994年首次提出,随后扩展到互联网上。

    HTTPS协议和HTTP协议的区别:
    https协议需要到ca申请证书,一般免费证书很少,需要交费。
    http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。
    http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
    http的连接很简单,是无状态的 。
    HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议, 要比http协议安全。
    在这里插入图片描述
    SSL 证书
    从前面我们可以了解到HTTPS核心的一个部分是数据传输之前的握手,握手过程中确定了数据加密的密码。在握手过程中,网站会向浏览器发送SSL证书,SSL证书和我们日常用的身份证类似,是一个支持HTTPS网站的身份证明,SSL证书里面包含了网站的域名,证书有效期,证书的颁发机构以及用于加密传输密码的公钥等信息,由于公钥加密的密码只能被在申请证书时生成的私钥解密,因此浏览器在生成密码之前需要先核对当前访问的域名与证书上绑定的域名是否一致,同时还要对证书的颁发机构进行验证,如果验证失败浏览器会给出证书错误的提示。在这一部分我将对SSL证书的验证过程以及个人用户在访问HTTPS网站时,对SSL证书的使用需要注意哪些安全方面的问题进行描述。

    不走心的努力,都是在敷衍自己!你要坚信所有现在越不过去的坎,将来总有一天会当成笑话说出来。

    关注公众号【轻松玩编程】回复关键字“电子书”,“计算机资源”,“Java从入门到进阶”,”JavaScript教程“,“算法”,“Python学习资源”,“人工智能”等即可获取学习资源。
    在这里插入图片描述

    以梦为马,不负韶华。
  • 相关阅读:
    搭建自己的技术博客系列(三)让你的博客拥有评论功能!
    搭建自己的技术博客系列(二)把 Hexo 博客部署到 GitHub 上
    Excel2003 去除重复项
    Delphi 7拦截滚轮事件不响应滚轮的上下滚动
    APSC4xSeries_Ver32.exe在win764位提示缺少DLL错误解决办法
    Win7装在其他盘 (非C盘)办法
    Delphi7 安装ICS,与简单使用
    Python学习笔记
    使用IP spoofer 功能
    python在windows里怎么配置apache呢,
  • 原文地址:https://www.cnblogs.com/huangjiahuan1314520/p/12911423.html
Copyright © 2011-2022 走看看