TCP/IP网络模型与HTTP、HTTPS核心要点整理

一、Web及网络基础

概述了 Web 是建立在何种技术之上, 以及 HTTP 协议是如何诞生并发展的。

1.使用 HTTP 协议访问 Web

        1)Web 使用 HTTP(超文本传输协议 ) 协议作为规范, 完成从客户端到服务器端等一系列运作流程。 而协议是指规则的约定。Web 是建立在 HTTP 协议上通信的。

        2)协议:计算机与网络设备要相互通信, 双方就必须基于相同的方法。 不同的硬件、 操作系统之间的通信, 所有的这一切都需要一种规则。 而我们就把这种规则称为协议(protocol) 。

2.HTTP 的诞生

        1) 为知识共享而规划 Web。1989 年 3 月,HTTP 诞生了。最初设想的基本理念是: 借助多文档之间相互关联形成的超文本, 连成可相互参阅的 WWW(万维网) 。现在已提出了 3 项 WWW 构建技术: 作为页面的文本标记语言的 HTML(超文本标记语言);作为文档传递协议的 HTTP; 指定文档所在地址的 URL(统一资源定位符) 。

        2) 驻足不前的 HTTP。1.HTTP/0.9:HTTP 于 1990 年问世。 那时的 HTTP 并没有作为正式的标准被建立。2.HTTP/1.0:HTTP 正式作为标准被公布是在 1996 年的 5 月, 版本被命名为HTTP/1.0,但该协议标准至今仍被广泛使用在服务器端。3.HTTP/1.1:1997 年 1 月公布的 HTTP/1.1 是目前主流的 HTTP 协议版本。HTTP1.1默认使用长连接,可有效减少TCP的三次握手开销。4.HTTP/2.0:在2013年8月进行首次合作共事性测试。在开放互联网上HTTP 2.0将只用于https://网址,而 http://网址将继续使用HTTP/1,目的是在开放互联网上增加使用加密技术,以提供强有力的保护去遏制主动攻击。

3.网络基础 TCP/IP

TCP/IP 协议族:通常使用的网络是在 TCP/IP 协议族的基础上运作的,即TCP/IP四层网络模型: 应用层、 传输层、 网络层和数据链路层。

        1)TCP/IP 层次化是有好处的。1.扩展更方便。比如, 如果互联网只由一个协议统筹, 某个地方需要改变设计时, 就必须把所有部分整体替换掉。 而分层之后只需把变动的层替换掉即可。 把各层之间的接口部分规划好之后, 每个层次内部的设计就能够自由改动了。2.职责分工明确,设计更简单。层次化之后, 设计也变得相对简单了。 处于应用层上的应用可以只考虑分派给自己的任务, 而不需要弄清对方在地球上哪个地方、 对方的传输路线是怎样的、 是否能确保传输送达等问题。

        2)TCP/IP 协议族各层的作用。1.应用层:应用层决定了向用户提供应用服务时通信的活动。如, FTP(文件传输协议) 和 DNS(域名系统) 服务、HTTP 协议。2.传输层: 提供处于网络连接中的两台计算机之间的数据传输。在传输层有两个性质不同的协议: TCP(传输控制协议) 和 UDP(用户数据报协议) 。3.网络层:用来处理在网络上流动的数据包。 数据包是网络传输的最小数据单位。 该层规定了通过怎样的传输路线到达对方计算机, 并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时, 网络层所起的作用就是在众多的选项内选择一条传输路线。4.链路层:用来处理连接网络的硬件部分。 包括控制操作系统、 硬件的设备驱动、 网卡, 及光纤等物理可见部分,硬件上的范畴均在链路层的作用范围之内。

        3)TCP/IP 通信传输流。利用 TCP/IP 协议族进行网络通信时, 会通过分层顺序与对方进行通信。 发送端从应用层往下走, 接收端则往应用层往上走。封装:发送端在层与层之间传输数据时, 每经过一层时必定会被打上一个该层所属的首部信息。 反之, 接收端在层与层传输数据时, 每经过一层时会把对应的首部消去。

 

4 与 HTTP 关系密切的协议 : IP、TCP 和DNS

        1) 负责传输的IP协议。位于网络层。1.IP 协议的作用是把各种数据包传送给对方。 要保证确实传送到对方那里, 则需要满足各类条件。 其中两个重要的条件是 IP 地址和 MAC地址 。IP 地址指明了节点被分配到的地址, MAC 地址指定网卡所属的固定地址。 IP 地址可以和 MAC 地址进行配对。 IP 地址可变换, 但 MAC地址基本上不会更改。2.ARP 协议:在网络上, 通信的双方在同一局域网 内的情况是很少的, 通常是经过多台计算机和网络设备中转才能连接到对方。 而在进行中转时, 会利用下一站中转设备的 MAC地址来搜索下一个中转目标。 这时, 会采用 ARP 协议。 ARP 是一种用以解析地址的协议, 根据通信方的 IP 地址就可以反查出对应的 MAC 地址。3.路由选择机制:在到达通信目标前的中转过程中, 那些计算机和路由器等网络设备只能获悉很粗略的传输路线。

 

        2)确保可靠性的TCP协议。位于传输层, 提供可靠的字节流服务。1.字节流服务是指: 为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。 2.可靠的传输服务是指: 能够把数据准确可靠地传给对方。3.TCP 协议为了更容易传送大数据才把数据分割, 而且 TCP 协议能够确认数据最终是否送达到对方。4.确保数据能到达目标:TCP 协议采用了三次握手策略。 用 TCP 协议把数据包送出去后, TCP不会对传送后的情况置之不理, 它一定会向对方确认是否成功送达。发送端首先发送一个带 SYN 标志的数据包给对方。 接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。 最后, 发送端再回传一个带 ACK 标志的数据包, 代表“握手”结束。若在握手过程中某个阶段莫名中断, TCP 协议会再次以相同的顺序发送相同的数据包。

5.负责域名解析的 DNS 服务

 

        1)DNS。位于应用层的协议。 它提供域名到 IP 地址之间的解析服务。

6.URI 和 URL

        1)URI(统一资源标识符)相比, 我们更熟悉 URL(统一资源定位符)。

        2)URI 用字符串标识某一互联网资源, 而 URL表示资源的地点(互联网上所处的位置) 。

二、HTTP协议简析

        HTTP超文本传输协议是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP 是基于 TCP/IP 协议通信协议来传递数据(HTML 文件、图片文件、查询结果等)。它不涉及数据包传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。

1.Http的特点

        1)简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、PUT、DELETE、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。2)灵活:HTTP允许传输任意类型的数据对象。3)无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。4)无状态:HTTP协议是无状态的,HTTP 协议自身不对请求和响应之间的通信状态进行保存。任何两次请求之间都没有依赖关系。直观地说,就是每个请求都是独立的,与前面的请求和后面的请求都是没有直接联系的。协议本身并不保留之前一切的请求或 响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把 HTTP 协议设计成如此简单的。

2.Http报文

        Http报文包括请求报文和响应报文两大部分,其中请求报文由请求行(request line)、请求头(header)、空行和请求体四个部分组成。而响应报文由状态行、响应头部、空行和响应体四个部分组成。

        1)请求行。用来说明请求类型、要访问的资源以及所使用的HTTP版本。POST  /chapter17/user.html HTTP/1.1 以上代码中 POST 代表请求方法, /chapter17/user.html 表示URI, HTTP/1.1 代表协议和协议的版本。

        2)请求头。由关键字 / 值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息。它包含许多有关的客户端环境和请求正文的有用信息。其中比如:Host:表示主机名,虚拟主机。Connection:HTTP/1.1增加的,使用keepalive,即持久连接,一个连接可以发多个请求。User-Agent:请求发出者,兼容性以及定制化需求。

        3)空行。最后一个请求头之后是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。

        4)请求体。可以承载多个请求参数的数据。name=tom&password=1234&realName=tomson

        上面代码,承载着name、password、realName三个请求参数。

3.HTTP请求方法

        1)GET:请求指定的页面信息,并返回实体主体。2)HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。3)POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。4)PUT:从客户端向服务器传送的数据取代指定的文档的内容。5)DELETE:请求服务器删除指定的页面。

4.GET与POST区别

        1)GET在浏览器回退时是无害的,而POST会再次提交请求。2)GET请求会被浏览器主动缓存,而POST不会,除非手动设置。3)GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。4)GET请求在URL中传送的参数是有长度限制的,而POST没有限制。5)GET参数通过URL传递,POST放在Request body中。

5.Http状态码

        状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别:1)1xx:指示信息——表示请求已接收,继续处理。2)2xx:成功——表示请求已被成功接收、理解、接受。3)3xx:重定向——要完成请求必须进行更进一步的操作。4)4xx:客户端错误——请求有语法错误或请求无法实现。5)5xx:服务器端错误——服务器未能实现合法的请求。

6.持久连接

        1)为什么需要持久连接。HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。以当年的通信情况来说,因为都是些容量很小的文本传输,所以即使这样也没有多大问题。可随着 HTTP 的 普及,文档中包含大量图片的情况多了起来。比如,使用浏览器浏览一个包含多张图片的 HTML 页面时,在发送请求访问 HTML 页面资源的同时,也会请 求该 HTML 页面里包含的其他资源。因此,每次的请求都会造成无谓的 TCP 连接建立和断开,增加通信量的开销。

        2)持久连接的特点。为解决上述 TCP 连接的问题, HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

        3)优点:持久连接的好处在于减少了 TCP 连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外, 减少开销的那部分时间,使 HTTP 请求和响应能够更早地结束,这样 Web 页面的显示速度也就相应提高了。

        4)在 HTTP/1.1 中,所有的连接默认都是持久连接,但在 HTTP/1.0 内并未标准化。

7.管线化

        1)管线化:持久连接使得多数请求以管线化方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。这样就能够做到同时并行发送多个请求,而不需要一个接一个地等待响应了。通俗地讲,请求打包一次传输过去,响应打包一次传递回来。管线化的前提是在持久连接下。

        假如当请求一个包含 10 张图片的 HTML Web 页面,与挨个连接相比,用持久连接可以让请求更快结束。 而管线化技术则比持久连接还要快。请求数越多,时间差就越明显。客户端需要请求这十个资源。以前的做法是,在同一个TCP连接里面,先发送A请求,然后等待服务器做出回应,收到后再发出B请求,以此类推,而管道机制则是允许浏览器同时发出这十个请求,但是服务器还是按照顺序,先回应A请求,完成后再回应B请求。

        于是在使用持久连接的情况下,某个连接上消息的传递类似于:请求1 -> 响应1 -> 请求2 -> 响应2 -> 请求3 -> 响应3。管线化方式发送变成了类似这样:请求1 -> 请求2 -> 请求3 -> 响应1 -> 响应2 -> 响应3

 

三、HTTP2.0

HTTP发展史

1.HTTP1.1和HTTP1.0的区别

        1)HTTP1.1支持长连接和请求的流水线处理。HTTP1.0规定浏览器与服务器只保持短连接,每次请求都要建立一个TCP连接,请求处理完后断开TCP连接。HTTP1.1的持续连接,在Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;为close时,返回后关闭连接。

        2)HTTP1.1还提供了与身份认证、状态管理和Cache缓存机制相关的请求头和响应头。

        3)HTTP1.1增加了host字段。在HTTP1.0中认为每台服务器都绑定唯一的IP地址,因此,请求消息中的URL并没有传递主机名。 HTTP1.1的请求消息和响应消息都应支持Host头域,且请求消息中如果没有Host头域会报告一个错误(400 Bad Request)。

        4)100Status。HTTP1.1加入新的状态码100.客户端事先只发送一个只带头域的请求,如果服务器因权限拒绝了请求就回401;如果服务器接收此请求就回送响应码100,客户端就可以发送完整请求。

2.HTTP2.0相比于HTTP1.x大幅度的提升了web性能。

        AKamai公司官方演示,用以说明HTTP/2相比于HTTP/1.1在性能上的大幅度提升。同时请求379张图片,从Load Time:3.38s(HTTP/1.1)>1.26s(HTTP/2)。

        1)交互方式:HTTP1.0利用文本与服务器交互,而HTTP2.0的基本协议单位为二进制帧流。

        HTTP2.0帧具有优先级,允许客户端提供排序思路,以让服务器优先处理一部分请求,仍然是以二进制帧的形式返回数据。

        2)多路复用,所有的请求都是通过一个 TCP 连接并发完成。HTTP/1.x 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 HTTP/2 做到了真正的并发请求。同时,流还支持优先级和流量控制。

3.HTTP2.0和HTTP1.1区别

        1)多路复用。1.多路复用。允许单一的HTTP/2连接同时发起多重的请求-响应的消息。HTTP2.0通过让所有数据流共用同一个连接,可以更有效地使用TCP连接,让高带宽能真正提高HTTP的性能。多路复用技术:单连接多资源的方式,减少服务端的链接压力,内存占用更少,连接吞吐量更大;由于减少TCP慢启动时间,提高传输的速度。2.二进制分帧。在二进制分帧层中,HTTP2.0会将所有传输的信息分割为帧(frame),并对它们采用二进制格式的编码,其中首部信息会被封装到HEADER frame,Request Body封装到DATA frame里。3.性能。HTTP性能优化的关键并不在于高带宽,而是低延迟。TCP连接会随着时间进行自我【调谐】,起初会限制连接的最大速度,如果数据成功传输,会随着时间的推移提高传输的速度。这种调谐被称为TCP慢启动。因此具有突发性和短时性的HTTP连接变得十分低效。

        2)首部压缩。在HTTP1中,HTTP请求和响应都是由【状态行、请求/响应头部、消息主体】三部分组成。一般消息主体会经过gzip压缩但状态行和头部没有经过任何压缩,直接以纯文本传输。头部压缩需要在支持HTTP2.0的浏览器和服务端之间:1.维护一份相同的静态字典,包含常见的头部名称,以及特别常见的头部名称与值的组合。2.维护一份相同的动态字典可以动态的添加内容。3.支持基于静态哈夫曼码表的哈夫曼编码。静态字典例method:GET可以直接使用一个字符表示。浏览器和服务端都可以向动态字典添加键值对,之后这个键值对就可以使用一个字符表示。动态字典与上下文有关,需要每个HTTP2.0连接维护不同的字典。4.传输过程中使用字符代替键值大减少传输的数据量。

        3)HTTP2.0支持服务器推送。1.服务端推送。是一种在客户端请求之前发送数据的机制。网页中使用许多资源:HTML、样式表、脚本、图片等。在HTTP1中这些资源每一个都必须明确地请求。为了改善延迟,HTTP2.0引入server push,它允许服务端在浏览器明确地请求之前,推送资源给浏览器。一个服务器经常知道一个页面需要很多附加资源,在它响应浏览器第一个请求的时候,可以开始推送这些资源。2.允许服务端去完全充分地利用一个可能空闲的网络,改善页面加载时间。

        4)HTTP2.0只适用于HTTPS的场景。HTTPS是在HTTP和TCP之间增加了一层SSL,增加了数据安全传输及客户端和服务器端的身份认证,HTTP2.0只适用于HTTPS的场景。

4.总结

        1)HTTP1.0的缺陷:1.每个请求都需要单独建立连接2.每个请求和响应都需要完整的头信息3.数据未加密。

        2)HTTP1.1:1.支持长连接和请求的流水线处理2.提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头3.增加host字段4.增加状态码100,节约带宽。

        3)HTTP2.0的优势:1.多路复用2.压缩头信息3.请求划分优先级4.支持服务器端主动推送。

四、确保Web安全的HTTPS

        HTTP存在的安全问题:1.通信使用明文,内容可能会被窃听。2.不验证通信方的身份,因此有可能遭遇伪装。3.无法证明报文的完整性,所以有可能已遭篡改。这些问题在其它未加密的协议中也会存在。HTTPS通信机制可以有效地防止这些问题。

1.通信使用明文可能会被窃听

        1)HTTP报文使用明文方式发送(不具备加密的功能),所以无法对通信的请求和响应的内容进行加密。

        2)按TCP/IP协议族的工作机制,通信内容在所有的通信线路上都有可能遭到窥视。即使经过加密处理的通信,但加密处理后的报文信息本身还是会被窥视到。窃听相同段上的通信,只需要收集在互联网上流动的数据包即可,收集来的数据包解析工作可以交给抓包(Packet Capture)或嗅探器(Sniffer)工具。

2.加密处理防止被窃听,防止窃听保护信息的对策:

        1)通信的加密。HTTP协议中没有加密,但可以通过和SSL(安全套接层)或TLS(安全层传输协议)的组合使用,加密HTTP的通信内容。与SSL组合使用的HTTP称为HTTPS(超文本传输安全协议)。

        2)内容的加密。将参与通信的内容本身加密的方式。 这种方式要求客户端和服务器同时具备加密和解密机制。该方式不同于SSL将整个通信线路加密处理,所以内容仍有被篡改的风险。

3.不验证通信方的身份就可能遭遇伪装

        HTTP协议中的请求和响应不会对通信方进行确认。存在隐患:

        1)请求发送给伪装的服务器。服务器是否是发送请求中真正指定的主机,有可能是已伪装的服务器。

        2)响应发送给伪装的客户端。返回的响应是否真的返回到实际发送请求的客户端,有可能是已伪装的客户端。

        3)无法确认正在通信的对方是否具备访问权限,服务器上某些重要信息只想发给特定用户。

        4)无法判断请求方是谁。

        5)无法阻止海量请求下的DoS攻击( 拒绝服务攻击) 。

4.查明对手的证书,验证通信方的身份

        使用SSL可以确定通信方,SSL不仅提供加密处理,还使用证书来确定通信方。

        1)证书由值得信任的第三方机构颁发。用以证明服务器和客户端是实际存在的。

        2)伪造证书从技术角度是异常困难的。

5.无法证明报文完整性,可能已遭篡改

        完整性是指信息的准确度。若无法证明其完整性,意味着无法判断信息是否准确。

        1)接收到的内容可能有误。即使请求或响应的内容遭到篡改,也无法获悉。

        2)请求或响应在传输途中,遭攻击者拦截并篡改内容的攻击称为中间人攻击(MITM) 。

6.如何防止篡改

        1)使用HTTP常用确定报文完整性的方法是MD5和SHA-1等散列值校验方法,以及用来确认文件的数字签名方法。这些方法无法百分百保证确认结果正确,因为PGP和MD5本身被改写的话,用户没有办法知道。

        2)使用HTTPS。SSL提供认证和加密及摘要功能。

7.HTTP+加密+认证+完整性保护 = HTTPS

        HTTP加上加密处理和认证以及完整性保护后即是HTTPS。

        1)HTTPS是身披SSL外壳的HTTP。 HTTP 通信接口部分用SSL 和 TLS协议代替而已。在采用 SSL后, HTTP 就拥有了 HTTPS 的加密、 证书和完整性保护这些功能。SSL是独立于 HTTP 的协议,其它应用层协议均可配合SSL使用。可以说SSL是当今世界上应用最为广泛的网络安全技术。

8.相互交换密钥的公开密钥加密技术

        1)公开密钥加密。加密算法是公开的, 而密钥却是保密的。 加密和解密都会用到密钥,何人只要持有密钥就能解密了。

        2)共享密钥加密。加密和解密同用一个密钥的方式称为共享密钥加密, 也被叫做对称密钥加密。以共享密钥方式加密时必须将密钥也发给对方,设法安全地保管接收到的密钥。密钥就落入攻击者之手, 加密也就失去了意义。

        3)使用两把密钥的公开密钥加密。公开密钥加密使用一对非对称的密钥。 一把叫做私有密钥不能让其他任何人知道 , 另一把叫做公开密钥任何人都可以获得。使用公开密钥加密方式, 发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后, 再使用自己的私有密钥进行解密。利用这种方式, 不需要发送用来解密的私有密钥,不必担心密钥被攻击者窃听而盗走。另外, 要想根据密文和公开密钥, 恢复到信息原文是异常困难的。

        4)HTTPS采用混合加密机制。HTTPS 采用共享密钥加密和公开密钥加密两者并用的混合加密

机制。公开密钥加密与共享密钥加密相比, 其处理速度要慢。 在交换密钥环节使用公开密钥加密方式, 之后的建立通信交换报文阶段则使用共享密钥加密方式。

9.证明公开密钥正确性的证书

        公开密钥加密方式还是存在一些问题的。 那就是无法证明公开密钥本身就是货真价实的公开密钥。 或许在公开密钥传输途中, 真正的公开密钥已经被攻击者替换掉了。

        为了解决上述问题, 可以使用由数字证书认证机构(CA) 和其相关机关颁发的公开密钥证书。数字证书认证机构处于客户端与服务器双方都可信赖的第三方机构的立场上。 威瑞信 就是其中一家非常有名的数字证书认证机构。

        1)数字证书认证机构的业务流程。

        2)可证明组织真实性的 EV SSL 证书。

        3)用以确认客户端的客户端证书。获取证书时, 用户得自行安装客户端证书,客户端证书是要付费购买的, 客户端证书只能用来证明客户端实际存在, 而不能用来证明用户本人的真实有效性。

10.HTTPS人安全通信机制

        步骤 1: 客户端通过发送 Client Hello 报文开始 SSL通信。 报文中包含客户端支持的 SSL的指定版本、 加密组件(Cipher Suite) 列表(所使用的加密算法及密钥长度等) 。

        步骤 2: 服务器可进行 SSL通信时, 会以 Server Hello 报文作为应答。 和客户端一样, 在报文中包含 SSL版本以及加密组件。 服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。

        步骤 3: 之后服务器发送 Certificate 报文。 报文中包含公开密钥证书。

        步骤 4: 最后服务器发送 Server Hello Done 报文通知客户端, 最初阶段的 SSL握手协商部分结束。

        步骤 5: SSL第一次握手结束之后, 客户端以 Client Key Exchange 报文作为回应。 报文中包含通信加密中使用的一种被称为 Pre-master secret 的随机密码串。 该报文已用步骤 3 中的公开密钥进行加密。

        步骤 6: 接着客户端继续发送 Change Cipher Spec 报文。 该报文会提示服务器, 在此报文之后的通信会采用 Pre-master secret 密钥加密。

        步骤 7: 客户端发送 Finished 报文。 该报文包含连接至今全部报文的整体校验值。 这次握手协商是否能够成功, 要以服务器是否能够正确解密该报文作为判定标准。

        步骤 8: 服务器同样发送 Change Cipher Spec 报文。

        步骤 9: 服务器同样发送 Finished 报文。

        步骤 10: 服务器和客户端的 Finished 报文交换完毕之后, SSL连接就算建立完成。 当然, 通信会受到 SSL的保护。 从此处开始进行应用层协议的通信, 即发送 HTTP 请求。

        步骤 11: 应用层协议通信, 即发送 HTTP 响应。

        步骤 12: 最后由客户端断开连接。 断开连接时, 发送 close_notify 报文。 上图做了一些省略, 这步之后再发送 TCP FIN 报文来关闭与 TCP的通信。

        在以上流程中, 应用层发送数据时会附加一种叫做 MAC(Message Authentication Code) 的报文摘要。 MAC 能够查知报文是否遭到篡改, 从而保护报文的完整性。

11.SSL他TLS

        HTTPS 使用 SSL和 TLS这两个协议。SSL技术最初是由浏览器开发商网景通信公司率先倡导的, 开发过 SSL3.0 之前的版本。目前主导权已转移到 IETF(工程任务组) 的手中。IETF 以 SSL3.0 为基准, 后又制定了 TLS1.0、 TLS1.1 和TLS1.2。 TSL是以 SSL为原型开发的协议, 有时会统一称该协议为 SSL。 当前主流的版本是 SSL3.0 和 TLS1.0。

        SSL 速度慢吗。HTTPS 也存在一些问题, 那就是当使用 SSL时, 它的处理速度会变慢。

SSL的慢分两种。 一种是指通信慢。 另一种是指由于大量消耗CPU 及内存等资源, 导致处理速度变慢。

为什么不一直使用 HTTPS。

        其中一个原因是, 因为与纯文本通信相比, 加密通信会消耗更多的CPU 及内存资源。 如果每次通信都加密, 会消耗相当多的资源, 平摊到一台计算机上时, 能够处理的请求数量必定也会随之减少。因此, 如果是非敏感信息则使用 HTTP 通信, 只有在包含个人信息等敏感数据时, 才利用 HTTPS 加密通信。

除此之外, 想要节约购买证书的开销也是原因之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值