中国网站虚拟主机 排名,开发电子商务网站的主流语言,广西建网站公司,广西建设网行业版首页HTTP一、HTTP协议http协议#xff0c;是超文本传输协议#xff0c;此协议是基于TCP/IP的协议#xff0c;是互联网上应用最为广泛的一直网络协议是一种无状态协议#xff0c;默认端口为80,。设计HTTP的最初目的是为了提供一种发布和接受HTML页面的方法。通过HTTP或者HTTPS协…HTTP一、HTTP协议 http协议是超文本传输协议此协议是基于TCP/IP的协议是互联网上应用最为广泛的一直网络协议是一种无状态协议默认端口为80,。设计HTTP的最初目的是为了提供一种发布和接受HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(URI)来标识。 通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行一个或者多个头域一个指示头域结束的空行和可选的消息体组成。HTTP的头域包括通用头请求头响应头和实体头四个部分。每个头域由一个域名冒号(:)和域值三部分组成。域名是大小写无关的域值前可以添加任何数量的空格符头域可以被扩展为多行在每行开始处使用至少一个空格或制表符。二、各版本的http对比1、HTTP/0.9 HTTP 0.9是第一个版本的HTTP协议1991年发布。它的组成极其简单只允许客户端发送GET这一种请求且不支持MIME类型和请求头。由于没有协议头造成了HTTP 0.9协议只支持一种内容即纯文本。不过网页仍然支持用HTML语言格式化同时无法插入图片。 HTTP 0.9具有典型的无状态性每个事务独立进行处理事务结束时就释放这个连接。由此可见HTTP协议的无状态特点在其第一个版本0.9中已经成型。一次HTTP 0.9的传输首先要建立一个由客户端到Web服务器的TCP连接由客户端发起一个请求然后由Web服务器返回页面内容然后连接会关闭。如果请求的页面不存在也不会返回任何错误码。2、HTTP/1.0 HTTP/1.0是在1996年发布在原来HTTP/0.9的版本上添加了许多方法各种HTTP首部以及对多媒体对象的处理是请求和响应消息的协议版本。除了GET命令还引入了POST命令。HTTP的请求和回应格式也变了除了数据部分每次通信都必须包含头信息(HTTP Header)用来描叙一些元数据。相对于HTTP/0.9HTTP/1.0也支持了MIME使HTTP协议扩大了处理的数据类型支持对多媒体流信息的处理。 虽然HTTP/1.0相对于HTTP/0.9有了革命性的改变但HTTP/1.0依然有一些缺点主要就是每个TCP连接只能发生一个请求发送数据完毕之后连接就会自动关闭如果还要再请求其他的资源就要再创建一个连接。有些浏览器为了解决这个问题用了一个非标准的Connection头部也就是Keep-Alive模式(Connection:Keep-Alive)来避免了重新建立连接。但这个不是标准头部各个浏览器和服务器实现可能不一致因此不是根本解决办法。3、HTTP/1.1 HTTP/1.1在1999年正式发布是目前用得最广泛的协议版本。 HTTP1.1在HTTP1.0的基础上实现的一次飞跃主要的改进集中在性能、安全、数据类型处理等方面提出Server端缓冲 对象的概念是减少网络上相同类型内容的反复传送提高访问速度。默认的是Keep-Alive模式(持久连接)提高了性能。同时还增加了以下功能Host协议头 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址因此请求消息中的URL并没有传递主机名。但随着虚拟主机技术的发展在一台物理服务器上可以存在多个虚拟主机,并且它们共享一个IP地址。因此Host头的引入就很有必要了。Range分段请求 请求头中指定第一个字节的位置和最后一个字节的位置。用于告诉服务器自己想取对象的哪部分。如果服务器能够正常响应的话服务器会返回 206 Partial Content 的状态码及说明。如果不能处理这种Range的话就会返回整个资源以及响应状态码为 200 OK。分块传输编码(chucked)该编码将实体分块传送并逐块标明长度,直到长度为0块表示传输结束, 这在实体长度未知时特别有用(比如由数据库动态产生的数据)缓存处理等HTTP/1.1在1.0的基础上加入了一些cache的新特性新增更为强大的Cache-Control头。请求的流水线处理在一个TCP连接上可以传送多个HTTP请求和响应减少了建立和关闭连接的消耗和延迟。例如一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输但每个单独网页文件的请求和应答仍需要使用各自的连接。HTTP/1.1还允许客户端不用等待上一次请求结果的返回就可以发出下一次请求但服务器端必须按照请求的先后顺序一次返回响应的结果以保证客户端能够区分出每次请求的响应内容。4、HTTP/2 HTTP/2是最新的HTTP协议与2015年5月发布谷歌、IE11以及火狐等浏览器已经支持HTTP/2协议了。 注意是HTTP/2而不是HTTP/2.0因为IEFT(互联网工程任务组)认为HTTP/2已经很成熟了没有必要再发布子版本了以后要是有重大改动就直接发布HTTP/3。而HTTP/2与HTTP/1.1也存在着挺大的差别下面我们来看看HTTP/2独有的特性。1、二进制协议 我们都知道HTTP/1.1是超文本传输协议而HTTP/2是采用二进制协议。相比 HTTP/1.1 的纯文本数据二进制数据一个显而易见的好处是更小的传输体积。这就意味着更低的负载。二进制的帧也更易于解析而且不易出错纯文本帧在解析的时候还要考虑处理空格、大小写、空行和换行等问题而二进制帧就不存在这个问题。 消息头和消息体均采用二进制格式并成为帧(Frame)。目前有10个Frame由Type字段来区分各个Frame都有自己的二进制格式都封装在Frame Payload中。其中有两个重要的Frame:Header Frame(Type0x1)和Date Frame(Type0x0)分别对应HTTP/1.1中的消息头(Header)和消息体(Body),由此可见语义并没有太大变化而是文本格式变成二进制的Frame。两者的转换关系如下图: 此外HTTP/2中还有流(Stream)和消息(Message)的概念通过Strame Identifier(流ID)字段来标识流ID一样的是同一个流流中包含消息这个消息对于HTTP/1.x的请求消息或者响应消息消息是通过帧来传输的响应消息比较大时可能由多个Data Frame来传输2、多路复用 每个http2连接上传输的帧都关联到一个“流”。流是一个逻辑上的结合一个独立的双向的帧序列。它在客户端和服务器端中间通过http2连接进行帧交换。每个单独的http2连接都可以包含多个并发的流任何一端都可以交错地插入帧。流既可以被客户端/服务器端单方面的建立、使用也可以被双方共享。同时两边都可以关闭流。 也就是说在一个TCP连接里客户端和服务器端都可以同时发生多个请求或者响应对于HTTP/1.x来说各个请求和响应都是有严格的次序要求的而在HTTP/2中不用按照次序一一对应而且并发的多个请求或者响应中任何一个请求阻塞了不会影响其他的请求或者响应这样也就避免了队头阻塞。3、头部压缩 HTTP是无状态协议。简而言之这意味着每个请求必须要携带服务器需要的所有细节而不是让服务器保存住之前请求的元数据。因为http2没有改变这个范式所以它也需要这样(携带所有细节)因此 HTTP 请求的头部需要包含用于标识身份的数据比如 cookies和User Agent而这些数据的量也在随着时间增长。每一个请求的头部都包含这些大量的重复数据无疑是一种很大的负担。对请求头部进行压缩将会大大减轻这种负担尤其对移动端来说性能提高非常明显。 而HTTP/2则是采样HPACK格式进行压缩传输而HPACK简单的说就是使用2个索引表(静态索引表和动态索引表)来把头部映射到索引值并对不存在的头部使用 huffman 编码并动态缓存到索引从而达到压缩头部的效果。也就是说客户端和服务器端都需要维护一个索引表相同的消息头只要发送索引号从而提高效率和速度。 具体关于HPACK的介绍请参考: http://www.jianshu.com/p/f44b930cfcac4.服务器推送 服务器推送就是说在HTTP/2中服务器未经请求可以直接把资源推送给客户。而在HTTP/1.1中对服务器请求一个页面等页面解析之后会再去请求和这个页面有关的css或者js等资源。而HTTP/2则是在响应了某个页面进行请求之后会顺便把和这个页面有关的css和js等资源推送到到浏览器当浏览器解析了响应的页面之后发现要请求的有关这个页面的一些css和js等资源就已经在本地之后就会直接引用而不会说再次去请求服务器。这就节省了两次请求所花的网络时间大大提高了网络性能和用户体验。三、HTTPS 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容不提供任何方式的数据加密如果攻击者截取了Web浏览器和网站服务器之间的传输报文就可以直接读懂其中的信息因此HTTP协议不适合传输一些敏感信息比如信用卡号、密码等。 为了解决HTTP协议的这一缺陷需要使用另一种协议安全套接字层超文本传输协议HTTPS。为了数据传输的安全HTTPS在HTTP的基础上加入了SSL协议SSL依靠证书来验证服务器的身份并为浏览器和服务器之间的通信加密。其主要用途如下1.认证用户和服务器确保数据发送到正确的客户机和服务器2.加密数据以防止数据中途被窃取3.维护数据的完整性确保数据在传输过程中不被改变。SSL存在三个特性1.机密性SSL使用密钥加密通信数据2.可靠性服务器和客户都会被认证客户的认证是可选的3.完整性SSL协议会对传输的数据进行完整性检查HTTPS和HTTP的区别主要为以下四点一、https协议需要到ca申请证书一般免费证书很少需要交费。二、http是超文本传输协议信息是明文传输https 则是具有安全性的ssl加密传输协议。三、http和https使用的是完全不同的连接方式用的端口也不一样前者是80后者是443。四、http的连接很简单是无状态的HTTPS协议是由SSLHTTP协议构建的可进行加密传输、身份认证的网络协议比http协议安全。