Web使用 一种名为HTTP(Hyper Text Transfer Protocol,超文本传输协议)的协议作为规范,完成从客户端到服务器端等一系列运作流程;协议是指规则的约定;Web是建立在HTTP协议上通信的
网络基础TCP/IP
通常使用的网络(也包括互联网)是在TCP/IP协议族的基础上运作的;HTTP属于其内部的一个子集
TCP/IP协议族(TCP/IP是互联网相关的各类协议族的总称)
计算机与网络设备要相互通信,双方就必须基于相同的方法。比如,如何探测到通信目标、由哪一边先发起通信、使用哪种语言通信、怎样结束通信等规则等需要事先确定。不同的硬件操作系统之间的通信,所有的这一切都需要一种规则,规则称之为协议
协议中存在各式各样的内容,从电缆的规格到IP地址的选定方法、寻找异地用户的方法、双方建立通信的顺序,以及Web页面显示需要处理的步骤等等
TCP/IP的分层管理
分为4层:应用层、传输层、网络层、数据链路层
层次化的好处:若互联网只由一个协议统筹,某个地方需要改变设计时,必须把所有部分整体替换掉,分层之后只需把变动的层替换掉即可;层次化之后设计也变得相对简单。处于应用层上的应用可以只考虑分派给自己的任务,不需要弄清对方在地球哪个地方,是否能确保传输送达等问题
应用层
应用层决定了向用户提供应用服务时通信的活动。TCP/IP协议族内预存了各类通用的应用服务,如FTP(FileTransferProtocol,文件传输协议)和DNS(Domain Name Systems域名系统)服务 就是其中两类。HTTP协议也处于该层
传输层
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输;在传输层有两个性质不同的协议:TCP(Transmission Control Protocol,传输控制协议)和UDP(User Data Protocol,用户数据报协议)
网络层
用来处理在网络上流动的数据包。数据包是网络传输最小数据单位。该层规定了通过怎样的路径(传输路线)到达对方计算机,并把数据包传送给对方。与对方计算机之间通过多台计算机或网络设备进行传输时 ,网络层所起的作用是在众多的选项内选择一条传输线路
链路层
用来处理连接网络的硬件部分,包括控制操作系统、硬件的设备驱动、NIC(Network Interface Card,网络适配器,即网卡),及光纤等物理可见部分,硬件上的范畴均在链路层的作用范围之内
TCP/IP通信传输流
利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,接收端则从应用层往上走
举例HTTP:首先作为发送端的客户端在应用层发出一个想看某个Web页面的HTTP请求接着为了传输方便,在传输层(TCP协议)把从应用层收到的数据(HTTP请求报文)进行分割,并在各个报文上打上标记序号及端口号后转发给网络层;在协议层(IP协议),增加作为通信目的的MAC地址后转发给链路层;接收端的服务器在链路层接收到数据,按序往上发送,一直到应用层。传送到应用层才算真正接收到由客户端发送过来的HTTP请求
发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收端在层与层传输数据时,每经过一层时会把对应的首部消去,这种把数据信息包装起来的做法称为封装

负责传输的IP协议
IP协议的作用是把各种数据包发送给对方,两个重要条件:IP地址和MAC地址
IP地址指明了节点被分配到的地址;MAC地址是指网卡所属的固定地址
IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更改
使用ARP协议凭借MAC地址进行通信
IP间的通信依赖MAC地址,在网络上,通信双方在同一局域网内是少见的,通常是经过多台计算机和网络设备中转才能连接到对方。而在中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时,会采用ARP协议。ARP是一种用以解析地址的协议;根据通信方的IP地址就可以反查出对应的MAC地址
在到达通信目标前的中转过程中,计算机和路由器等网络设备只能获悉很粗略的传输路线,这种机制称为路由选择
确保可靠性的TCP协议
按层次分,TCP位于传输层,提供可靠的字节流服务
字节流服务是指为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理;可靠的传输服务是指能够把数据准确可靠地传给对方
为了准确无误地将数据送到目标上,TCP协议采用了三次握手策略。用TCP协议把数据包送出去后,TCP会向对方确认是否成功传送
握手过程使用了TCP的标记—SYN(synchronized)和ACK
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包
负责域名解析的DNS服务
DNS服务是位于应用层的协议,提供域名IP地址之间的解析服务
DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务
各种协议与HTTP协议的关系

URI(Uniform Resource Identifier)统一资源标识符
Uniform:规定统一的格式可方便处理多种不同类型的资源,不用根据上下文环境来识别资源指定的访问方式。加入新增的协议方案(如http:或flp:)也更容易
Resource:资源的定义是“可标识的任何东西”,除了文档文件中、图像或服务等能区别其他类型,全部可作为资源;资源不仅可以是单一的,也可以是多数的集合体
Identifier:表示可标识的对象
URI用字符串标识某一互联网资源,URL表示资源的地方,即URL是URI的子集
URI格式
如图

使用http:/https:等协议方案名获取访问资源时要指定协议类型。不区分大小写,、
登录信息(认证):指定用户和密码作为服务端获取资源时必要的登录信息
服务器地址:使用绝对URI必须指定待访问的服务器地址。地址可以是类似hachr.jp这种DNS可解析名称
服务器端口号:指定服务器连接的网络端口号。此项是可选项,若用户节省则自动使用默认端口号
带层次的文件路径:指定服务器上的文件路径来定位特指的资源。这与UNI系统的文件目录结构相似
查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数
片段标识符:可标记已获取资源中的子资源,在RFC中并没有明确规定其使用方法
HTTP协议用于客户端和服务器端之间的通信
请求访问文本或图像等资源的一端称为客户端,提供资源响应的一端称为服务器端,两台计算机之间使用HTTP协议通信时,在一条通信路线上必有一端是客户端,另一端则是服务器端
通过请求和响应的交换达成通信
HTTP协议规定,请求从客户端发生,最后服务器端响应该请求并返回
如下是从客户端发送给某个HTTP服务器端的请求报文中的内容
GET /index.htm HTTP /1.1
Host :hackr.jp.
开头的GET表示请求访问服务器的类型,称为方法。随后的字符串/index.htm指明了请求访问的资源对象,也叫请求URI。最后的HTTP/1.1 即HTTP的版本号,用来提示客户端使用的HTTP协议功能
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的

在起始行开头的HTTP/1.1表示服务器对应的HTTP版本,200 OK表示请求的处理结果的状态码和原因短语。下一行显示了创建响应的日期时间,是首部字段内的一个属性,接着以一空行分隔,之后的内容称为资源实体的主体
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成

HTTP是不保存状态的协议
HTTP是一种不保存状态,即无状态协议。HTTP协议自身不对请求和响应之间的通信状态进行保存,协议对于发送过的请求或响应都不做持久化处理
使用HTTP协议,每当有新的请求发送时,就会有对立的新响应产生。协议本身不保留之前一切的请求或响应报文的信息
请求URI定位资源
当客户端请求访问资源而发送请求时,URI需要将作为请求报文中的请求URI包含在内。指定请求URI的方式有很多
告知服务器意图的HTTP方法
GET:获取资源
用来请求访问已被URI识别的资源。指定的资源经服务器端解析后返回相应内容

POST:传输实体的主体
与GET相似,但POST的主要目的不是获取响应的主体内容

PUT:传输文件
要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置

HEAD:获取报文首部
不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等

DELETE:删除文件
与PUT相反的方法,按请求URI删除指定的资源

OPTIONS:访问支持的方法
查询针对请求URI指定的资源支持的方法

TRACE:追踪路径
让Web服务器端将之前的请求通信环回给客户端的方法


CONNECT:要求用隧道协议连接代理
实现用隧道协议进行TCP通信,主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输

使用方法下达命令
向请求URI指定的资源发送请求报文时,采用称为方法的命令,方法的作用在于可以指定请求的资源按期望产生某种行为
HTTP/1.0 和 HTTP/1.1 支持的方法

持久连接节省通信号
HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接
持久连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态好处是减少了TCP连接的重复建立和断开造成的额外开销,减轻了服务器端的负载,减少开销的那部分时间,使HTTP请求和响应能够更早地结束
在HTTP/1.1中,所有的连接默认都是持久连接,但在HTTP/1.0内并未标准化
管线化
之前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应即可直接发送下一个请求
使用Cookie的状态管理
Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态
Cookie会根据从服务器端发送的响应报文的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务端发现客户端发来的Cookie后,检查是从哪一个客户端发来的连接请求,对比服务器上的记录,最后得到之前的状态信息
HTTP请求报文和响应报文内容如下
1、请求报文(没有Cookie信息的状态)
GET /reader/HTTP/1.1
Host:hackr.jp
2、响应报文(服务端生成Cookie信息)

3、请求报文(自动发送保存着的Cookie信息)

HTTP报文内的HTTP信息
HTTP报文
用于HTTP协议交互的信息被称为HTTP报文。客户端的HTTP报文叫做请求报文,服务器端的叫做响应报文。HTTP报文本身是由多行数据构成的字符串文本
请求报文及响应报文的结构
请求行:包含用于请求的方法,请求URI和HTTP版本
状态行:包含表明响应结果的状态码,原因短语和HTTP版本
首部字段:包含表示请求和响应的各种条件和属性的各类首部
一般有4种首部:通信首部、请求首部、响应首部、实体首部

编码提升传输效率
在传输时编码能有效地处理大量的访问请求。编码的操作需要计算机完成,消耗更多CPU等资源
报文:HTTP通信的基本单位,由8位组字节流组成,通过HTTP通信传输
实体:作为请求或响应的有效载荷数据被传输,内容由实体首部和实体主体组成
报文的主体用于传输请求或响应的实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异
压缩传输的内容编码
向待发送邮件内附件时,为了使邮件容量变小,先用ZIP压缩文件之后再添加附件发送。内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码
常用的内容编码有以下几种:gzip(GNU zip) compress(UNIX系统的标准压缩) deflate(zlib) identify(不进行编码)
分割发送的分块传输编码
在传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面,把实体主体分块的功能称为分块传输编码
分块传输编码会将实体主体分成多个部分,每一部分都会用十六进制来标记块的大小,实体主体的最后一块会使用“0”来标记,主体实体会由接收的客户端负责解码,恢复到编码前的实体主体
发送多种数据的多部分对象集合
HTTP协议中也采用了多部分对象集合,发送的一份报文主体可含有多类型实体,通常是在图片或文本文件等上传时使用
多部分对象集合包含的对象如下
multipart/form-data 在Web表单文件上传时使用 multipart/byteranges 状态码206响应报文包含了多个范围的内容时使用
在HTTP报文中使用多部分对象集合时,需要在首部字段加上Content-type,使用boundary字符串来划分多部分对象集合指明的各类实体
获取部分内容的范围请求
要实现功能需要指定下载的实体范围,指定范围发送的请求叫做范围请求
对一份10000字大小的资源,如果使用范围请求,可以只请求5001~10000字节内的资源
执行范围请求时,用到首部子部Range来指定资源的byte范围,指定形式大小如下:
5001~10000字节:Range:bytes = 5001~10000 从5001字节之后全部的:Range:byte = 5001 -
从一开始到3000个字节和5000~7000字节的多重范围:Range :bytes = -3000.5000-7000
针对范围请求,响应会返回状态码为206 Partial Content的响应报文。对于多重范围的范围请求,响应会在首部字段Content-Type标明multipart/byteranges后返回相应报文。如果服务端无法响应范围请求,则会返回状态码200 OK和完整的实体内容
内容协商返回最适合的内容
当浏览器的默认语言为中文,访问相同URI的web页面时,会显示对应的中文版的Web页面,这样机制称为内容协商,机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码等作为判断的标准
包含在请求报文中的某些首部字段(如下)就是判断的基准
Accept Accept-Charset Accept_Encoding Accept-Language Content-Language
内容协商技术有以下三种
服务器驱动协商:以请求的首部字段为参考,在服务器端自动处理。对用户来说,以以浏览器发送的信息作为判定的依据,并不一定能筛选出最优的内容
客户端驱动协商: 用户从浏览器显示的可选项列表中手动选择,还可以利用JavaScript脚本在Web页面上自动进行上述选择。比如按OS类型或浏览器类型,自行切换成PC版或手机版页面
透明协商:上两种结合体,由服务端和客户端各自进行内容协商的一种方法
返回结果的HTTP状态码
HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作
状态码告知从服务器端返回的请求结果
状态码的职责是当客户端向服务器端发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误
状态码的类别如图

2XX成功
200 OK
表示从客户端发来的请求在服务端被正常处理了
在响应报文内,随状态码一起返回的信息会因方法的不同而发生改变;如果使用HEAD方法时,对应请求资源的实体首部不随报文主体作为响应返回
204 No Content
该状态码代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分,也不允许返回任何实体的主体。如当从浏览器发送请求处理后,返回204响应,那么浏览器显示的页面不发生更新
一般在只需要从客户端往服务器发送信息,而客户端不需要发送新信息内容的情况下使用
206 Partial Content
该状态码表示客户端进行范围请求,而服务器端成功执行了这部分GET请求。响应报文中包含由Content-Range指定范围的实体内容
3XX重定向
3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求
301 Moved Permanently
永久性重定向。该状态表示请求的资源已被分配了新的URL,以后应使用现在所指的URI
302 Found
表示由于请求对应的资源存在着另一个URI,希望用户能使用新的URI访问。302状态码代表的资源不是被永久移动,只是临时性质的
303 See Other
表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
304 Not Modified
表示客户端发送附带条件的请求时,服务端允许请求访问资源,但为满足条件的情况。304状态返回时,不包含任何响应的主体部分
307 Temporary Redirect
临时重定向,与302Found有相同含义,尽管302标准禁止POST变成GET,实际并不用遵守
4XX客户端错误
400 Bad Request
表示请求报文中存在语言错误,当错误发送时,需修改请求的内容后再次发送请求
401 Unauthorized
表示发送的请求需要有通过HTTP认证的认证信息。若之前已进行过1次请求,表示用户认证失败
403 Forbidden
表示对请求资源的访问被服务器拒绝了。未获得文件系统的访问授权,访问权限出现某些问题等列举的情况都可能发生403的原因
404 Not Foud
表明服务器上无法找到请求的资源,也可以在服务器端拒绝请求且不想说明理由时使用
5XX服务器错误
500 Internal Server Error
表明服务器端在执行请求时发生了错误,也可能是Web应用存在的bug或某些临时的故障
503 Service Unavaiable
表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。如果事先得知解除以上状态需要的时间,最好写入RetryAfter首部字段再返回给客户端
确保Web安全的HTTPS
HTTP的缺点
1、通信使用明文(不加密),内容可能会被窃听 2、不验证通信方的身份,有可能遭遇伪装 3、无法证明报文的完整性,有可能已遭篡改
通信使用明文可能会被窃听
由于HTTP本身不具备加密功能,无法做到对通信进行加密。即HTTP报文使用明文方式发送
TCP/IP是可能被窃听的网络
即使已经过加密处理的通信,也会被窥视到通信的内容,这点和未加密的通信是相同的
通信的加密
HTTP协议中没有加密机制,但可以通过和SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密HTTP的通信内容与SSL组合使用的HTTP被称为HTTPS
内容的加密
把HTTP报文里所含的内容加密处理。在这种情况下,客户端需要时HTTP报文进行加密处理后再发送请求。为了做到有效的内容加密,前提是要求客户端和服务器同时具备加密和解密机制。主要应用在Web服务器上
不验证通信方的身份就可能遭遇伪装
HTTP协议中的请求和响应不会对通信方进行确认,即存在“服务器是否就是发送请求中URI真正指定的主机,返回的响应是否真的返回到实际提出请求的客户端”等类似问题
在HTTP协议通信时,由于不存在确认通信方的处理步骤,任何人都可以发起请求,服务器只要接收到请求,不管对方是谁都会返回一个响应
不确认通信方会存在以下隐患
1、无法确定请求发送至目标的Web服务器是否是按真实意图返回响应的那台服务器,有可能是已伪装的Web服务器
2、无法确定响应返回到客户端是否是按真实意图返回响应的那台服务器,有可能是已伪装的Web服务器
3、无法确定正在通信的对方是否具备访问权限,因为某些Web服务器上保存着重要的信息,只想发送特定用户通信的权限
4、无法判定请求是来自何方,出自谁手
5、即使是无意义的请求也会照单全收。无法阻止海量请求下的DoS攻击(Denial of Service,拒绝服务攻击)
查看对手的证书
证书由值得信任的第三方机构颁发,用以证明服务器和客户端是实际存在的,通过使用证书,以证明通信方是服务器,也减少了个人信息泄漏的危险性,客户端持有证书即可完成个人身份的确认,也可用于对Web网站的认证环节

无法证明报文完整性,可能已遭篡改
完整性是指信息的准确度,若无法证明其完整性,意味着无法判断信息是否准确
接收到的内容可能有误
由于HTTP协议无法证明通信的报文完整性,因此,在请求或响应送出之后直到对方接收之前的这段时间内,即使请求或响应的内容遭到篡改,也没办法获悉
比如,从某个Web网站上下载内容,无法确定客户端下载的文件和服务器上存放的文件是否前后一致。文件内容在传输途中可能已经被篡改为其他的内容。即使内容真的已改变,作为接收方的客户端也是察觉不到的
如何防止篡改
常用的MD5和SHA-1等散列值校验的方法,以及用来确认文件的数字签名方法提供下载服务的Web网站也会提供相应的以PGP创建的数字签名及MD5算法生成的散列值。PGP是用来证明创建文件的数字签名,MD5是由单向函数生成的散列值。这些方法依然无法百分百确认结果正确。因为PGP和MD5本身被改写的话,用户也没有办法意识到。为了有效防止这些弊端,有必要使用HTTPS
HTTP+加密+认证+完整性保护=HTTPS
把添加了加密及认证机制的HTTP称为HTTPS(HTTP Secure)
经常会在Web的登录页面和购物结算界面等使用HTTPS通信。使用HTTPS通信时,不再用http://,而是使用https://。另外,当浏览器访问HTTPS通信有效的Web网站时,浏览器的地址栏会出现一个带锁的标记
HTTPS是身披SSL外壳的HTTP
HTTPS并非是应用层的一种新协议,只是HTTP通信接口部分用SSL和TLS协议代替。通常,HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信
SSL是独立于HTTP的协议,所以不光是HTTP协议,其他运行在应用层的SMTP和Telent等协议均可配合SSL协议使用

相互交换密钥的公开密钥加密技术
SSL采用一种叫做公开密钥加密的加密处理方式,加密和解密同用一个密钥的方式称为共享密钥加密,也叫对称密钥加密
使用两把密钥的公开密钥加密
公开密钥加密使用一对非对称的密钥 。一把叫做私有密钥 ,另一把叫做公开密钥。使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对手收到被加密的信息后,再使用自己的私有密钥进行解密
想根据密文和公开密钥,恢复 到信息原文是异常困难的,因为解密 过程就是在对离散对数值进行求值
HTTPS采用混合加密机制
HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制。若密钥能够实现安全交换,那么有可能会考虑仅使用公开密钥来加密通信,但公开密钥加密与共享密钥加密相比,其处理速度要慢。所以应充分利用两者各自的优势,将多种方法组合起来通信。在交换密钥环节使用公开密钥加密方式,之后的建立通信交报文阶段则使用共享密钥加密方式
证明公开密钥正确性的证书
数字证书认证机构处于客户端与服务器双方都可信赖第三方机构的立场上
数字认证机构的业务流程:首先,服务器的运营人员向数字证书认证机构 提出公开密钥的申请。数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起
服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信
可证明组织真实性的EU SSL证书
证书的一个作用是用来证明作为通信一方的服务器是否规范,另外一个作用是可确认对方服务器背后运营的企业是否真实存在,拥有该特性的证书就是EU SSL证书,其规定了对运营组织是否真实的确认方针
HTTPS的安全通信机制
HTTPS的通信步骤:
1、客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本.加密组件列表(所使用的加密算法及密钥长度等)
2、服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是以从接收到的客户端加密组件内筛选出来的
3、之后服务器发送Certificate报文。报文中包含公开密钥证书
4、最后服务器发送 Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束
5、SSL第一次握手结束之后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密
6、接着客户端继续发送Change Cipher Space报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密
7、客户端发送Finished报文,该报文包含连接至今全部报文的整体校验值。这次握手协议是否能够成功,要以服务器是否能够正确解密该报文作为判断标准
8、服务器同样发送Change Cipher Spec报文
9、服务器同样发送Finished报文
10、服务器和客户端的Finished报文交换完毕之后,SSL连接算建立完成。当然,通信会受到SSL的保护,从此处开始进行应用层协议的通信,即发送HTTP请求
11、应用层协议通信,即发送HTTP响应
12、最后由客户端断开连接。断开连接时,发送close-notify报文
应用层发送数据时会附加一种叫做MAC的报文摘要,MAC能够查知报文是否遭到篡改,从而保护报文的完整性
HTTPS使用SSL和TLS两个协议
SSL的慢分两种,一种是通信慢,另一种是由于大量消耗CPU及内存等资源导致处理速度变慢。和使用HTTP相比,网络负载可能会变慢2到100倍。除去和TCP连接发送HTTP请求响应以外,还必须进行SSL通信,因此整体上处理通信是不可避免会增加的
另一点是SSL必须进行加密处理,在服务器和客户端都需要进行加密和解密的运算处理。因此,从结果上讲,比起HTTP会更多消耗服务器和客户端的硬件资源,导致负载增加
速度变慢这一问题并没有根本性的解决方案,可以使用SSL加速器硬件来改善,相对软件更能提高数据SSL的计算速度,仅在SSL处理时发挥SSL加速器的功效,以分担负载
为什么不一直使用HTTPS
因为与纯文本通信相比,加密通信会消耗更多的CPU及内存资源,如果每次通信都加密,会消耗相当多的资源,平分到一台PC上时,能够处理的请求数量必定也会随之减少。因此,如果是非敏感信息则使用HTTP通信,只有在包含个人信息等敏感数据时,才利用HTTPS加密通信
本文详细介绍了HTTP协议的工作原理,包括其无状态特性、请求和响应的结构、方法(如GET、POST)以及TCP/IP分层模型。此外,还深入探讨了HTTPS的安全性,解释了其如何通过SSL/TLS提供加密、身份验证和完整性保护,以及HTTPS的握手过程。内容还涵盖了网络基础,如IP地址、MAC地址、DNS服务以及TCP的三次握手和持久连接。
448

被折叠的 条评论
为什么被折叠?



