`

HTTP、HTTPS、HTTP1.0、HTTP1.1傻傻搞不清

    博客分类:
  • html
阅读更多
       HTTP:Hyper Text Transfer Protocol,超文本传输协议
       HTTPS:Hyper Text Transfer over Secure Socket Layer Protocol,给予安全套接字层的超文本传输协议
       HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
       综上,可以简单的理解为HTTPS = HTTP+加密+认证+完整性保护(完整性保护不知道从哪里看出来的,有待进一步理解)


       对于HTTP是无状态的,短连接、持久连接也蒙的,查资料得到下面的解释:
       1、HTTP是一种无状态(stateless)协议
       是说HTTP协议自身不对请求和响应之间的通讯状态进行保存,不保存之前一切请求和响应的报文信息,是为了更快的处理大量事务。
       但是随着web发展,很多情况都需要保存用户的状态。比如用户登录到一家购物网站,即使他跳转到该网站的其他页面后,也需要能继续保持登录状态。因此http1.1协议引入了Cookie技术,http1.1虽然仍是无状态的,但是通过Cookie实现了保持状态的功能。
       Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去,服务器端发现客户端发送过来的Cookie后,会去检查究竟是哪个客户端发送来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
       2、HTTP非持久连接、持久连接
       HTTP协议的初始版本中,每进行一次HTTP通讯就要断开一次TCP连接,下次通讯重新建立连接(非持久连接)。随着网络发展,同一个页面存在多个对象,在非持久连接下申请一个页面就需要大量的TCP连接和断开,增加网络传输负担,可能页面加载很慢。
       为了解决上述问题,HTTP1.1想出了持久连接(keep-alive或HTTP Persistent Connections)的方法,所谓持久连接,就是服务器在发送响应后并不关闭TCP连接,在一段时间内扔保持这个连接,这样在一次连接中就可以有多次数据请求和响应。


       由上面描述基本清楚了HTTP1.0和HTTP1.1的区别与联系:
       他们是HTTP协议的不同版本;
       HTTP1.0使用非持久连接,HTTP1.1实现持久连接;
       HTTP1.1还允许客户端不用等待上一次请求结果返回就可以发出下一次请求,服务器端必须按照接收到的客户端请求的先后顺序依次返回响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
       HTTP1.0认为每台服务器都绑定一个唯一的IP地址,请求消息中的URL并没有传递主机名。随着虚拟主机技术的发展,一台物理服务器可以存在多个虚拟主机,他们共享一个IP地址HTTP1.1中增加了host请求头字段,实现了在一台web服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。HTTP1.1的请求消息中如果没有Host头域会报400错误。
       HTTP1.1还提供了身份认证、状态管理和Cache缓存等机制


       下面是HTTP协议版本:
版本产生时间内容发展现状
HTTP/0.91991年不涉及数据包传输,规定客户端和服务器之间通信格式,只能GET请求没有作为正式的标准
HTTP/1.01996年传输内容格式不限制,增加PUT、PATCH、HEAD、 OPTIONS、DELETE命令正式作为标准
HTTP/1.11997年持久连接(长连接)、节约带宽、HOST域、管道机制、分块传输编码2015年前使用最广泛
HTTP/2.02015年多路复用、服务器推送、头信息压缩、二进制协议等逐渐覆盖市场




       HTTP请求报文格式:分为请求行、请求头、请求包体
       请求行:请求方法(空格)URL(空格)协议版本
       请求头:头字段名称:值
                      头字段名称:值
                      ......
       请求包体:

       HTTP响应报文格式:由状态行、响应头部、响应包体组成
       状态行:协议版本(空格)状态码(空格)状态码描述
       响应头部:头字段名称:值
                         头字段名称:值
                         .......
       响应包体:

       状态码由三位数字组成,第一位表示响应的类型,常用状态码有如下五大类:
       1xx:表示服务器已经接收了客户端请求,客户端可以继续发送请求;
       2xx:表示服务器已经成功接收到请求并进行处理;
       3xx:表示服务器要求客户端重定向;
       4xx:表示客户端的请求有非法内容;
       5xx:表示服务器未能正常处理客户端的请求而出现意外错误;
       常用状态码描述:
       200:请求成功
       301:
       302:能自动的向新的 URI 发送重复请求,必须跟用户确认是否该重发
       303:
       400:客户端请求有语法错误,服务器无法处理
       401:表示请求未经授权,该状态码必须与WWW-Anthenticate报头域一起使用
       403:服务器收到请求,但拒绝提供服务,通常会在响应正文给出不提供服务的原因,例如无权访问请求的文件
       404:请求资源不存在
       500:服务器发生不可预知的错误,无法完成客户端请求
       501:服务器不支持请求的方法
       503:服务器当前不可用,过段时间可能会回复正常
       505:服务器不支持HTTP的版本     



       TCP和UDP的区别:
       TCP是传输控制协议,提供的是面向连接的,可靠地字节流服务。实际数据传输之前服务器和客户端要进行三次握手,会话结束后结束连接。
       UDP是用户数据报协议,是无连接的。因为无连接,而且没有超时重发机制,所以UDP传输速度很快。主要用于视频传输(但其实现在各大视频商都是用HTTP协议,而HTTP是基于TCP),实时视频。
      TCP保证数据按序到达,提供流量控制和拥塞控制,在网络拥堵的时候会减慢发送字节数,是可靠的,而UDP不管网络是否拥堵,不可靠。
      TCP是连接的,所以服务是一对一服务,而UDP可以1对1,也可以1对多(多播),也可以多对多。
分享到:
评论

相关推荐

    http 1.0和1.1的差别

    HTTP 1.0 和 HTTP 1.1 的差异 HTTP(HyperText Transfer Protocol)是一种应用层协议,用于数据交换过程和数据本身的格式。它是 TCP/IP 中的一个应用协议,主要有两个版本:HTTP 1.0 和 HTTP 1.1。 HTTP 1.0 的...

    HTTP1.0&HTTP1.1(rfc2616)

    HTTP1.0和HTTP1.1是其两个主要版本,它们在互联网通信中扮演着至关重要的角色。这里我们将深入探讨这两个版本的区别与特点。 **HTTP1.0** HTTP1.0是HTTP协议的第一个广泛使用的版本,它定义了Web的基本通信机制。在...

    TLS1.0、1.1、1.2、1.3

    标题提及的“TLS1.0、1.1、1.2、1.3”指的是安全传输层协议(Transport Layer Security)的不同版本。TLS是互联网上广泛使用的安全协议,它确保了数据在客户端和服务器之间的加密传输,从而保护用户的隐私和信息安全...

    Fluid Flux V1.0、V1.1 兼容UE4、UE5最强の流体模拟插件,带使用教程

    Fluid Flux V1.0、V1.1 兼容UE4、UE5最强流体模拟插件,附带简单的使用教程 Fluid Flux V1.0、V1.1 兼容UE4、UE5最强流体模拟插件,附带简单的使用教程 Fluid Flux V1.0、V1.1 兼容UE4、UE5最强流体模拟插件,附带...

    ASAM XCP V1.0_V1.1

    它在V1.0和V1.1版本中进一步完善了对实时数据交换的支持,尤其适用于汽车ECU(电子控制单元)的测试和标定工作。 XCP标准的出现,旨在解决传统通信协议如CAN、LIN等在高速数据采集和精确控制时的局限性。它提供了一...

    ASAM XCP Part1~5 V1.0和V1.1

    文件如下: ASAM_XCP_Part1-Overview_V1-1-0.pdf ASAM_XCP_Part2-Protocol-Layer-Specification_V1-1-0.pdf ASAM_XCP_Part3-Transport-Layer-Specification_XCPonCAN_V1-1-0.pdf ASAM_XCP_Part3-Transport-Layer-...

    UVC 1.0/1.1/1.5协议

    **UVC 1.0/1.1/1.5协议详解** USB Video Class (UVC) 是一种标准,用于定义USB设备上的视频捕获功能,使得计算机可以通过USB接口与各种视频源(如网络摄像头、摄像机等)进行通信。UVC 1.0、1.1和1.5是这一标准的...

    USB UVC协议文档,包括1.0、1.1、1.5版本

    标题中的“USB UVC协议文档,包括1.0、1.1、1.5版本”意味着我们将探讨这三个主要的UVC规范迭代。每个版本都可能引入新的功能、改进或修正前一版本的问题。让我们逐一深入了解这些版本的要点: 1. **UVC 1.0**:这...

    HTTP 1.1与HTTP 1.0的比较

    ### HTTP 1.1与HTTP 1.0的主要区别 #### 持久连接(Persistent Connections) - **HTTP 1.0**:默认情况下,HTTP 1.0使用非持久连接,即每次请求都需要建立一个新的TCP连接。这种设计虽然简单,但在实际应用中导致...

    HTTP1.0和HTTP1.1区别[文].pdf

    【HTTP 1.0与HTTP 1.1的区别】 HTTP(超文本传输协议)是互联网上应用最广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。HTTP 1.0是早期版本,而HTTP 1.1是其后续改进版,主要针对性能和...

    hbase-1.0.1.1-bin.tar.gz.zip

    这个“hbase-1.0.1.1-bin.tar.gz.zip”文件是HBase的1.0.1.1版本的二进制发行版,包含了运行和管理HBase所需的所有文件。以下将详细介绍HBase的关键特性、架构以及如何使用这个压缩包进行安装和配置。 1. **HBase...

Global site tag (gtag.js) - Google Analytics