搞懂http与https

什么是http协议

  • http超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议。常基于TCP/IP协议传输数据,互联网上应用最广泛的一种最为广泛的网络协议,所有的www文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接受HTML页面的方法。
  • 现在常用的http的版本有:
    • HTTP/1.1(1997年) 内容:持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码。在2015年之前使用最广泛
    • HTTP/2(2015年) 内容:多路复用、服务器推送、头信息压缩、二进制协议(逐渐覆盖市场)
    • 多路复用指的是通过单一的HTTP/2连接请求发起多重的请求-响应消息,多个请求stream共享一个TCP连接,实现多路并行而不是依赖建立多个TCP连接。
HTTP之请求消息Request/响应消息Response
  • 客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行、请求头部(首部行)、空行(CRLF)和请求数据(主体)四个部分组成。
  • 一般情况下,服务器接收并处理客户端发过来的请求后会返回一个HTTP的响应消息。HTTP响应也由四个部分组成,分别是:状态行、消息报头(首部行)、空行和响应正文(实体主体)。
    在这里插入图片描述
http状态码

状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:

1xx:指示信息–表示请求已接收,继续处理

2xx:成功–表示请求已被成功接收、理解、接受

3xx:重定向–要完成请求必须进行更进一步的操作

4xx:客户端错误–请求有语法错误或请求无法实现

5xx:服务器端错误–服务器未能实现合法的请求

HTTP工作原理
  • 客户端连接到Web服务器
    一个HTTP客户端,通常是浏览器,与Web服务器的HTTP端口(默认为80)建立一个TCP套接字连接。例如,http://www.oakcms.cn。
  • 发送HTTP请求
    通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成。
  • 服务器接受请求并返回HTTP响应
    Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。
  • 释放连接TCP连接
    若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;
  • 客户端浏览器解析HTML内容
    客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示。
GET和POST的区别
  • GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的Body中.
  • GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
  • GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
  • GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.

什么是https协议

  • Https是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立安全信道,加密数据包、HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。(TLS是传输层加密协议,前身是SSL协议)
  • HTTPS协议的加密范围也比较有限,在黑客攻击,拒绝服务器攻击,服务器劫持等方面几乎都起不到作用
  • SSL整数的信用链体系并不安全。

HTTP与HTTPS区别

  • HHTP特点

    1、无状态:协议对客户端没有状态存储,对事物处理没有“记忆能力”。eg:访问一个网站需要反复进行登录操作。
    2、无连接:HTTP/1.1之前,由于无状态特点,每次请求需要通过TCP三次握手四次挥手,和服务器重新建立连接。eg:比如某个客户机在短时间多次请求同一个资源,服务器并不能区别是否已经响应过用户的请求,所以每次需要重新响应请求,需要耗费不必要的时间和流量
    3、基于请求和响应:基本的特性,由客户端发起请求,服务端响应
    4、通信使用明文,请求和响应不会对通信方进行通信,无法保护数据的完整性
  • HTTPS特点

    1、内容加密:采用混合加密技术,中间者无法直接查看明文内容
    2、验证身份:通过证书认证客户端访问的是自己的服务器
    3、保护数据完整性:防止传输的内容被中间人冒充或者篡改
    4、发送方事后不能否认所发送过的报文
  • 区别

    1、HTTPS连接缓存不如HTTP高效,流量成本高
    2、HTTPS连接服务器端资源占用高很多,支持访客多的网站需要投入更大的成本
    3、HTTPS协议握手阶段比较费时,对网站的响应速度有影响,影响用户体验。比较好的方式是采用分而治之,类似12306网站的主页使用HTTP协议,有关于用户信息等方面使用HTTPS。

TCP/IP四层模型

在这里插入图片描述

TCP三次握手与四次挥手

TCP三次握手
  • 三次握手:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误
    客户端发出的第一个请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以至于延误到连接释放以后的某个时间才到达服务端。本来这已经一个早已失效的报文段,但是服务端收到了这个已经失效的连接请求报文段后,就误认为是客户端再次发出的一个新的连接请求,于是向客户端发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要服务端发出确认,新的连接就建立了。由于客户端并没有发出建立连接的请求,因此不会理睬服务端的确认,也不会向服务端发送数据。但是服务端却以为新的运输连接已经建立,并一直等待客户端发送数据。所以没有采用“三次握手”,这种情况下的很多资源就白白浪费掉。
    在这里插入图片描述
TCP四次挥手
  • TCP是全双工模式,当客户端发出FIN报文段时,只是表示客户端已经没有数据要发送了,客户端告诉服务端,它的数据以及全部发送完毕了。但是,这个时候客户端还是可以接受来自服务端的数据;当服务端返回ACK报文段时,表示它已经知道客户端没有数据发送了,但是服务端还是可以发送数据给客户端的;当服务端也发送FIN报文段时,这个时候就表示服务端也没有数据要发送了,就会告诉客户端,我也没有数据要发送了,如果收到客户端确认报文段,之后彼此就会愉快的中断这次TCP连接。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值