就需要从HTTP1.0开始讲起,betway体育app:HTTP 协议

本文主要是看了

4.2.1 二进制帧

HTTP1.x的解析是基于文本的,基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多。而HTTP/2会将所有传输的信息分割为更小的消息和帧,然后采用二进制的格式进行编码,HTTP1.x的头部信息会被封装到HEADER frame,而相应的Request Body则封装到DATA frame里面。不改动HTTP的语义,使用二进制编码,实现方便且健壮。

betway体育app 1

iOS 对 HTTP/2 的支持

在 iOS 上,NSURLSession 提供了对 HTTP/2 的支持。只要服务器支持 HTTP/2,系统就会自动使用它,否则将自动选择 HTTP/1.1 或其它可用协议。

需要注意的是,iOS 只支持加密连接的 HTTP/2 协议,HTTP/2 服务器需要支持 ALPN 或者 NPN 加密连接。


移动客户端网络部分的不少初步优化还比较依赖于 HTTP/2 的推进。MTHawkeye 中已经加入了对 HTTP/2 的检测,大家平时在开发的过程中,可以关注下,是否有可能将现存的 HTTP/1.x 升级到 HTTP/2。


最近看到腾讯云支持QUIC的文章,突然意识到还没有好好认识HTTP2、QUIC,而要认识HTTP2,就需要从HTTP1.0开始讲起,才能清楚HTTP的发展历程。

API

NSURLSessionTaskDelegate代理中新增一个方法- URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didFinishCollectingMetrics:(NSURLSessionTaskMetrics *)metrics, 当收集完成的时候就会调用该方法.

我们只需要实现代理的这个方法就能在这里做统计, 输出等等操作.

苹果不再支持RC4加密.

以上图片均来自官方WWDC中的PDF.

参考资料 :HTTP/2NSURLSessionNSURLSessionTaskMetrics

2.1.1 请求报文:

为了形象点,我们把报文标准和实际的结合起来看。

betway体育app 2

下面是实际报文,以访问自己的网站()中的一个链接为例。

betway体育app 3

为何选择 HTTP/2

HTTP/2和HTTP/1.1的区别

  1. 二进制协议 HTTP/1.1的头信息是文本格式,数据体可以是文本,也可以是二进制。HTTP/2的头信息和数据体均为二进制,并且统称为“帧(frame)“:头信息帧和数据帧。
  2. 头信息压缩 HTTP是无状态协议,每次请求都要带上头信息,请求的很多字段都是重复的,会浪费很多带宽。HTTP/2 对这一点做了优化,引入了头信息压缩机制(header compression)。一方面,头信息使用gzipcompress压缩后再发送;另一方面,客户端和服务器同时维护一张头信息表,所有字段都会存入这个表,生成一个索引号,以后就不发送同样字段了,只发送索引号,这样就提高速度了。
  3. 多路复用 即在一个连接里,客户端可以同时发送多个请求,服务器可以同时发送多个响应,而且不用按照顺序一一对应,这样就避免了“队头阻塞”。举例来说,在一个TCP连接里面,服务器同时收到了A请求和B请求,于是先回应A请求,结果发现处理过程非常耗时,于是就发送A请求已经处理好的部分, 接着回应B请求,完成后,再发送A请求剩下的部分。

betway体育app 4

多路复用

  1. 数据流 HTTP/2 将每个请求或回应的所有数据包,称为一个数据流(stream)。每个数据流都有一个独一无二的编号。数据包发送的时候,都必须标记数据流ID,用来区分它属于哪个数据流。另外还规定,客户端发出的数据流,ID一律为奇数,服务器发出的,ID为偶数。
    数据流发送到一半的时候,客户端和服务器都可以发送信号(RST_STREAM帧),取消这个数据流。1.1版取消数据流的唯一方法,就是关闭TCP连接。这就是说,HTTP/2 可以取消某一次请求,同时保证TCP连接还打开着,可以被其他请求使用。
    客户端还可以指定数据流的优先级。优先级越高,服务器就会越早回应。
  2. 服务器推送 常见场景是客户端请求一个网页,这个网页里面包含很多静态资源。正常情况下,客户端必须收到网页后,解析HTML源码,发现有静态资源,再发出静态资源请求。其实,服务器可以预期到客户端请求网页后,很可能会再请求静态资源,所以就主动把这些静态资源随着网页一起发给客户端了。

QUIC协议

QUIC(Quick UDP Internet Connections)是由Google提出的一种基于UDP改进的低时延的互联网传输层(其实有疑义,QUIC基于UDP,其实更像应用层协议)协议。
优点:具有SPDY的所有优点;0-RTT连接;减少丢包;前向纠错,减少重传时延;自适应拥赛控制,减少重新连接;相当于TLS加密。

  1. QUIC主要目标是减少连接延迟,客户端第一次连接服务器时,QUIC只需要1RTT的延迟就可以建立可靠安全的连接,相对于TCP+TLS的1~3次RTT要更加快捷。之后客户端可以在本地缓存加密的认证信息,再次与服务端建立连接时可以实现0RTT的连接建立延迟。
  2. QUIC同时复用了HTTP2.0的多路复用(Multiplexing)功能,但由于QUIC基于UDP,避免了HTTP/2的Head-of-Line Bolcking问题。
  3. QUIC基于UDP,运行在用户域而不是系统内核,使得QUIC协议可以快速部署和更新。
  4. 重传与恢复
    与TCP类似,QUIC每发送一个包后,都会等待回复一个确认包。当丢包率超过协议的纠错阀值,会显示与隐式进行重传。
    对于某些重要的数据包,在确认丢失前就会进行重传。这样在网络中会有若干个相同包同时传输,任何一个成功抵达就完成了连接,通过这样降低丢包率。接收方对于关键数据包的多次发送和普通数据包的超时重传,都采用相同的重复包处理机制。
    QUIC在拥塞避免算法上还加入了心跳机包,用于减少丢包率。
    QUIC使用FEC(前向纠错)来恢复数据,FEC采用简单的异或方式。每次发送一组数据,包含若干个数据包后,并对这些数据包依次做异或运算,最后结果作为一个FEC包再发送出去。接收方收到一组数据后,根据数据包和FEC包即可以进行考验和纠错。
  5. 安全性
    QUIC对每个散装的UDP包都进行了加密和认证的保护,并且避免使用前向依赖(如CBC模式)的方法,这样每个UDP包可以独立地根据IV进行加密或者认证处理。
    QUIC使用了两级密钥机制:初始密钥和会话密钥。初次连接时不加密,并协商初始密钥。初始密钥协商完毕后再马上协商会话密钥,这样可以保证密钥的前向安全性,之后通信过程还可以实现密钥的更新。接收方收到密钥更新时,需要用新旧两种密钥对数据进行解密,直到成功才会正式使用新密钥。
  6. 0RTT握手过程
    QUIC握手过程需要一次数据交互,0RTT即可以完成握手过程的密钥协商,比TLS相比效率提供了5倍。
    QUIC在握手过程使用Diffie-Hellman算法协商初始密钥,初始化密钥依赖于服务器存储的一组配置参数,该参数会周期性更新。初始密钥协商成果后,服务端会提供一个临时随机数,双方根据这个随机数再生成会话密钥。
    client具体握手过程如下:
    betway体育app 5

iOS9新特性. 核心是防止用户的个人隐私数据被意外泄漏. 加强默认Configuration的安全性.

请求行

请求行由方法字段、URL 字段 和HTTP 协议版本字段 3 个部分组成,他们之间使用空格隔开。常用的 HTTP 请求方法有 GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT,这里我们使用的是GET方法,访问的是/biaoqianyun.do,协议使用的是HTTP/1.1。
GET:当客户端要从服务器中读取某个资源时,使用GET 方法。如果需要加传参数的话,需要在URL之后加个"?",然后把参数名字和值用=连接起来,传递参数长度受限制,通常IE8的为4076,Chrome的为7675。例如,/index.jsp?id=100&op=bind。
POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据;

标头压缩

每个 HTTP 传输都承载一组标头,这些标头说明了传输的资源及其属性。 在 HTTP/1.x 中,标头中的数据始终以纯文本形式发送,通常会给每个传输增加 500–800 字节的开销。如果使用 HTTP Cookie,增加的开销有时会达到上千字节。为了减少此开销和提升性能,HTTP/2 使用 HPACK 压缩格式压缩请求和响应中的标头数据,这种格式采用两种简单但是强大的技术:

  • 这种格式支持通过静态 Huffman 编码对传输的标头字段进行编码,从而减小了各个传输的大小。
  • 这种格式要求客户端和服务器同时维护和更新一个包含之前见过的标头字段的索引列表,此列表随后会用作参考,对之前传输的值进行有效编码。

作为一种进一步优化方式,HPACK 压缩上下文包含一个静态表和一个动态表:静态表在规范中定义,并提供了一个包含所有连接都可能使用的常用 HTTP 标头字段的列表;动态表最初为空,将根据在特定连接内改变的值进行更新。

betway体育app 6

HPACK 标头压缩

HTTPS协议简介

HTTPS是网景在1994年创建,并应用在网景导航者浏览器中。 最初,HTTPS是与SSL一起使用的;在SSL逐渐演变到TLS时,最新的HTTPS也由在2000年五月公布的RFC 2818正式确定下来。

HTTP2.0

YouTube、淘宝已经支持http2.0.
HTTP2.0可以说是SPDY的升级版本,与SPDY的区别如下:

  1. HTTP2.0支持明文HTTP传输,而SPDY强制使用HTTPS。
  2. HTTP2.0消息头压缩算法使用HPACK,而SPDY使用DEFLATE。

HTTP2.0的主要目标是改进传输性能,实现低延迟和高吞吐量。

HTTP2.0新特性:

  1. 新的二进制(Binary Format)分帧层。HTTP1.x的解析基于文本,文本的展现形式多样,要做到健壮性考虑的场景必然很多,二进制则只有0和1,更高效健壮
  2. 多路复用(MultiPlexing),即连接共享,每一个request都是用作连接共享机制的。每一个request对应一个id,一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方根据request的id将request再归属到不同服务端请求里面。客户端只需要一个连接就可以加载一个页面。
  3. header压缩。避免了重复header的传输,又减少了需要传输的大小。
    1. HTTP2.0会压缩首部元数据,在client和server使用首部表跟踪和存储之前发送的健值对,对于相同数据,不需要每次请求响应都发送。首部表在HTTP2.0的连接有效期内始终存在,由client、server共同渐进地更新,每个新的首部健值对要么更新已有值要么append到表尾。
    2. 所有header必须全部小写,而且请求行要独立为健值对(即header+值)。
  4. 服务端推送(server push)。服务端可以对一个客户端请求发送多个响应。server push通过推送那些它认为客户端将会需要使用到的内容到客户端缓存中,以此避免往返的延迟。
    1. 客户端可以限定推送流的数量,也可以设置为0而完全禁用server push
    2. 所有推送都遵守同源策略,即服务器不能随便将第三方资源推送给客户端,而必须是经过双方确认的。
    3. PUSH_PROMISE帧:所有服务器推送流都通过PUSH_PROMISE发送,服务端发出有意push所述资源的信号,客户端接收到PUSH_PROMISE帧后,也可以拒绝这个流。
    4. 服务端必须遵循请求-响应的循环,只能借着对请求的响应推送资源。
    5. PUSH_PROMISE帧必须在返回响应之前发送,否则客户端会出现竞态条件。

HTTP2.0的升级改造需要考虑的点:

  1. HTTP2.0其实可以支持非HTTPS的,但是主流浏览器如chrome、Firefox还是只支持基于TLS部署的HTTP2.0协议,所以要升级HTTP2.0还是先升级HTTPS好。
  2. 升级HTTPS后,如果使用NGINX,只需要在配置文件中启动相应的协议就可以。
  3. HTTP2.0完全兼容HTTP1.x,对于不支持HTTP2.0的浏览器,NGINX会自动向下兼容。

为什么需要HTTP/2

由于HTTP/1.1存在许多问题 :

  • 单路连接 请求低效

    • 每个TCP连接只能对应一个HTTP请求, 每个HTTP请求只请求一个资源, 浏览器只能通过建立多个TCP连接来解决, 但是由于文本协议开销, 缺乏头压缩, 意味着对客户端和服务器的要求更高且性能更低下

    betway体育app 7HTTP/1.1 without pipelining

    • 使用HTTP管道, 但是HTTP管道并不适用于所有的服务器或网络, 实际上在很多浏览器上是被禁止的. 事实上效率并不高.

    betway体育app 8HTTP/1.1 with pipelining

  • HTTP只允许由客户端主动发起请求
    • 意味着缺少预加载的功能
  • HTTP头冗余
    • 每次发送HTTP请求都有一堆重复的header value

2.3 影响HTTP的因素

影响HTTP请求的因素:

  1. 带宽
    好像只要上网这个因素是一直都有的。。。即使再快的网络,也会有偶尔网络慢的时候。。。
  2. 延迟
    (1) 浏览器阻塞
    一个浏览器对于同一个域名,同时只能有4个链接(根据不同浏览器),如果超了后面的会被阻塞。
    常用浏览器阻塞数量看下图。
    betway体育app 9

(2) DNS查询
浏览器建立连接是需要知道服务器的IP的,DNS用来将域名解析为IP地址,这个可以通过刷新DNS缓存来加快速度。
(3) 建立连接
由之前第一章的就可以看出,HTTP是基于TCP协议的,即使网络、浏览器再快也要进行TCP的三次握手,在高延迟的场景下影响比较明显,慢启动则对文件请求影响较大。

服务端推送

HTTP/2 新增的另一个强大的新功能是,服务器可以对一个客户端请求发送多个响应。 换句话说,除了对最初请求的响应外,服务器还可以向客户端推送额外资源,而无需客户端明确地请求。之所以要提供这个服务,是因为一个文档被请求回来时,往往还需要再次请求很多文档内的其他资源,如果这些资源的请求不用客户端发起,而是服务端提前预判发给客户端,那么就会减少大量时延。

HTTP2 协议也没有规定服务器端到底该怎样推送这个资源。服务端可以自己制定不同的策略,可以是根据客户端明确写出的推送请求;或者是服务端通过学习得来;再或者是通过额外的HTTP首部想服务端表明意向。

这个服务的特点是:

  • 只有建立连接后,服务器才可以推送资源(发送 PUSH_PROMISE 帧),也就是说服务器不能无缘无故的主动向客户端推送资源。
  • 客户端可以发送 RST_STREAM 拒绝服务器推送来的资源。
  • 推送的资源可以由不同页面共享
  • 服务器可以按照优先级来推送资源

参考文献

HTTP 协议入门 - 阮一峰的网络日志
HTTP,HTTP2.0,SPDY,HTTPS你应该知道的一些事

如有描述不当之处,欢迎指出与补充,谢谢!

HTTPS

HTTPS(网景1994创建)就是安全版的HTTP,与HTTP的区别如下:

  1. HTTPS协议需要到CA申请证书,免费证书很少,一般需要交费。
  2. HTTP协议运行在TCP之上,所有传输内容都是明文;HTTPS运行在SSL/TLS(Transport Layer Secure)上,SSL/TLS运行在TCP上,所有传输内容都是加密的。
  3. HTTP和HTTPS使用端口不同:HTTP默认80,HTTPS默认443。
  4. HTTPS可以有效防止运营商劫持。

一个HTTP网站全站改造为HTTPS,需要关注的点:

  1. 安装CA证书
  2. 购买证书后,在证书提供网站上配置自己的域名,将证书下载下来后,配置自己的web服务器,同时进行代码改造。
  3. HTTPS降低用户访问速度。SSL握手会一定程度降低速度。如果使用SPDY,HTTPS速度甚至还要比HTTP快。
  4. HTTPS中大量的密钥算法计算,会消耗服务端大量CPU资源。

Property

  • taskInterval : 任务从开始到结束总共用的时间

  • redirectCount : 任务重定向的次数

  • transactionMetrics : 在任务执行期间产生的每个请求/响应事务, 它是一个装着许多NSURLSessionTaskTransactionMetrics对象的数组

四、HTTP2.0

HTTP2.0,相较于HTTP1.x,大幅度的提升了web性能。在与HTTP/1.1完全语义兼容的基础上,进一步减少了网络延迟和传输的安全性。HTTP2.0可以说是SPDY的升级版(基于SPDY设计的),但是依然存在一些不同点:HTTP2.0支持明文传输,而SPDY强制使用HTTPS;HTTP2.0消息头的压缩算法采用HPACK,而非SPDY采用的DEFLATE。

连接复用

在 HTTP/1.x 中,如果客户端要想发起多个并行请求以提升性能,则必须使用多个 TCP 连接。但 HTTP/2 中新的二进制分帧层突破了这些限制,实现了完整的请求和响应复用:客户端和服务器可以将 HTTP 消息分解为互不依赖的帧,然后交错发送,最后再在另一端把它们重新组装起来。这是 HTTP 2 最重要的一项增强。

betway体育app 10

Multiplexing

HTTP/2 中的新二进制分帧层解决了 HTTP/1.x 中存在的队首阻塞问题,也消除了并行处理和发送请求及响应时对多个连接的依赖。最终使得应用速度更快、开发更简单、部署成本更低。

值得注意的是,HTTP/2 解决了 HTTP 的 HOL 阻塞,但并没有解决 TCP 上的 HOL 阻塞。

HTTP/1.1和HTTP/1.0的区别

  1. 新增方法 PUTPATCHHEADOPTIONSDELETE
  2. 请求头新增Host字段 用来指定服务器的域名,有个该字段,就可以将请求发往同一台服务器上的不同网站,为虚拟主机的兴起打下了基础。请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。
  3. 持久连接 HTTP1.1默认使用长连接。即TCP连接默认不关闭,可以被多个请求复用,不像HTTP1.0需要声明Connection: keep-alive。当连接一段时间未使用时,则自动关闭。
  4. 管道机制 HTTP1.1引入管道机制(pipelining)。即在同一个TCP连接里面,客户端可以同时发送多个请求,不过服务器还是按照顺序,先响应A请求,完成后再响应B请求。以前是在同一个TCP连接中,先发送A请求,等服务做出响应后,再发送B请求。(如果A需要处理很长时间,则会阻塞,HTTP/2 能解决这个问题)
  5. 响应头新增Content-Length字段 由于一个TCP连接可以传送多个响应,所以需要该字段来声明本次响应的数据长度来区分数据包是属于哪一个响应的。
  6. 支持分块传输编码
  7. 缓存处理 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准,HTTP1.1则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  8. 带宽优化及网络连接的使用 HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能,HTTP1.1则在请求头引入了range头域,它允许只请求资源的某个部分,即返回码是206(Partial Content),这样就方便了开发者自由的选择以便于充分利用带宽和连接。
  9. 错误通知的管理 在HTTP1.1中新增了24个错误状态响应码,如409(Conflict)表示请求的资源与资源的当前状态发生冲突;410(Gone)表示服务器上的某个资源被永久性的删除。

HTTP1.x

HTTP(HyperText Transfer Protocol)超文本传输协议伴随着计算机网络和浏览器的诞生,HTTP1.0也随之而来,处于计算机中的应用层。HTTP是建立在TCP协议之上,所以HTTP协议的瓶颈及其优化技巧都是基于TCP协议本身的特性,如TCP三次握手四次挥手建立连接带来的RTT延迟时间等。
HTTP建立之初,就是为了将HTML文档从Web服务器传送到客户端浏览器。
影响一个HTTP网络请求的主要因素:带宽和延迟

  • 带宽
  • 延迟
    • 浏览器阻塞(HOL blocking):浏览器对同一个域名,会限制最大连接数。
    • DNS查询(DNS Lookup):缓存DNS
    • 建立链接(Initial connection):TCP三次握手

HTTP 1.1与HTTP 1.0的区别:

  1. 缓存处理,引入更多缓存头控制缓存策略
  2. 带宽优化及网络连接的使用,增加断点续传功能
  3. 错误通知的管理:新增24个错误状态码,如409(conflict)表示请求资源与资源当前状态冲突、410(Gone)表示服务器上某个资源被永久性删除。
  4. Host头处理。随着虚拟主机技术的发展,一台物理服务器上可以存在多个虚拟主机且共享同一个IP。HTTP 1.1请求和响应都支持host头,请求消息中如果缺少host,会抱400(Bad Request)
  5. 长连接,HTTP 1.1支持长连接(PersistentConnection)和请求的流水线(Pipelining)处理,在一个TCP连接上可以传送多个HTTP请求和响应,减少建立、关闭连接的消耗和延迟。HTTP 1.1中默认开启Connection:keep-alive。

HTTP 1.0与1.1存在的问题:

  1. HTTP传输数据,每次都要3次握手建立连接,增加了大量延迟
  2. 明文传输
  3. header携带内容过大,增加传输成本,并且每次请求header变化不大,移动端增加用户流量
  4. 虽然HTTP1.1支持了keep-alive,但是keep-alive使用多了同样给服务端带来大量的性能压力,因为文件被请求后,服务端需要保持不必要的连接很长时间。

HTTP/2 多路复用

Q : HTTP/2多路复用是如何队首阻塞的问题的?

A : 在HTTP/1.1的时候曾试过采用HTTP pipelining (HTTP 管道/流水线 技术)能实现同一TCP连接中不用等待旧请求的响应就可以发送新请求. 但是HTTP pipelining有个致命的缺点 : HTTP响应仍然是按照请求的顺序依次收到.

HTTP/2 多路复用+请求优先级, 发送的时候还是依次发送请求, 但是与此同时我们同时得到了回复, 同时, 更高优先级的请求我们得到以及发送给客户端的速度更快, 如下图所示 :

betway体育app 11HTTP/2 Multiplexing

状态行

状态行由 HTTP 协议版本字段、状态码和状态码的描述文本 3 个部分组成,他们之间使用空格隔开,描述文本一般不显示;
状态码:由三位数字组成,第一位数字表示响应的类型,常用的状态码有五大类如下所示:
1xx:服务器已接收,但客户端可能仍要继续发送;
2xx:成功;
3xx:重定向;
4xx:请求非法,或者请求不可达;
5xx:服务器内部错误;

延伸阅读

  • HTTP/2 简介
  • Brief History of HTTP
  • Google 公布 HTTP/2 的博客
  • WWDC 711
  • HTTP pipelining
  • ALPN 和 NPN 简介
  • QUIC 文档

HTTP和HTTPS对比

  1. HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的。
  2. HTTPS协议需要到CA申请证书。
  3. HTTP默认使用80端口,HTTPS默认使用443端口。
  4. HTTPS用户访问速度较慢、服务端资源压力较大(因为要进行大量的密钥算法计算,消耗CPU、内存)。因此使用HTTPS的话,需要做好足够的优化。

SPDY

SPDY位于HTTP之下,TCP和SSL之上,可以轻松兼容老版本的HTTP协议,也可以使用已有的SSL功能。
SPDY是Google2012年提出,主要解决如下问题:

  1. 降低延迟。针对HTTP高延迟的问题,SPDY采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接,解决了HOL blocking问题,降低延迟同时提高了带宽的利用率。
  2. 请求优先级(request prioritization)。多路复用的连接共享机制有可能导致关键请求被阻塞。SPDY允许给每个request设置优先级,重要请求优先得到响应。
  3. header压缩。
  4. 基于HTTPS的加密协议传输,大大提高了传输数据的可靠性。
  5. 服务端推送(Server push)

cookie 共享

增加sessionCookieGroup以实现app与其扩展之间cookie的共享.

let ident = "group.mycompany.mygroupname" let cookieStorage = NSHTTPCookieStorage.sharedCookieStorageForGroupContainerIdentifier( identifier: ident)let config = NSURLSessionConfiguration.defaultSessionConfiguration()config.HTTPCookieStorage = cookieStoragelet session = NSURLSession(configuration: config)

2.2.1 无状态性

即,当客户端访问完一次服务器再次访问的时候,服务器是无法知道这个客户端之前是否已经访问过了。优点是不需要先前的信息,能够更快的应答,缺点是每次连接传送的数据量增大。这种做法不利于信息的交互,随后,Cookie和Session就应运而生,至于它俩有什么区别,可以看看COOKIE和SESSION有什么区别?。

HTTP/2 的改进

[TOC]

本文由必威发布于必威-编程,转载请注明出处:就需要从HTTP1.0开始讲起,betway体育app:HTTP 协议

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。