美文网首页
图解HTTP(读书笔记)

图解HTTP(读书笔记)

作者: 清CChen | 来源:发表于2018-12-16 18:46 被阅读0次

    HTTP超文本传输协议

    总纲如下(自整理,比较不重要的章节省略):

    图解HTTP总纲

    第一章 了解Web及网络基础

    关于部分概念

     通常我们使用的网络是在TCP/IP协议族的基础上运行的,HTTP属于它内部的一个子集。在这边就不多介绍TCP/IP了,关于它,可以看更详实的专业书,如谢希仁老师所著的《计算机网络》(第七版)

    FTP(File Transfer Protocol)文件传输协议

    DNS(Domain Name System)服务提供域名到IP地址之间的解析服务

    URI(Uniform Resource Identifier)统一资源标识符,URI用字符串标识某一互联网资源

    URL(Uniform Resourcem Locator)统一资源定位符,URL表示资源的地点(互联网上所处的位置)。URL是URI的子集。

    绝对URI的格式:

    绝对URI格式

    第二章 简单的HTTP协议

    HTTP协议规定,请求从客户端发出,最后服务器端响应该请求并返回。换句话说,肯定是从客户端开始建立通信的,服务器端在没有收到接收到请求之前不会发送响应。

    HTTP是一种无状态协议,即自身不对请求和响应之间的通信状态进行保存(优点是服务器不必保存状态,可以减少服务器的CPU及内存资源的消耗)。后面为了实现期望的保持状态功能引入了Cookie技术。

    HTTP请求报文的组成:请求方法,请求URI,协议版本,可选的请求首字段,内容实体

    响应报文的组成:协议版本,状态码,用以解释状态码的原因短语,可选的响应首部字段,实体主体

    HTTP方法:

        ①GET:获取资源

        ②POST:传输实体主体

        ③PUT:传输文件,上传文件

        ④HEAD:和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间

        ⑤DELETE:删除文件,与PUT相反,一般不用

        ⑥OPTIONS:询问支持的方法,用来查询针对请求URI指定的资源支持的方法

        ⑦TRACE:追踪路径,让Web服务器端将之前的请求通信环回给客户端的方法(客户端TRACE方法被用来确认连接过程中发生的一系列操作,一般不用,容易引起XST跨站追踪攻击)

        ⑧CONNECT:要求用隧道协议连接代理

    TCP短链接:HTTP的初始版本中,每进行一次HTTP通信就要断开一次连接,通信开销大

    TCP长连接:只要任意一端没有明确提出断开连接,则保持TCP连接状态,HTTP1.1中,所有的默认为持久连接(管线化方式发送成为可能,可以并行发送多个请求)

    第三章 HTTP报文内的HTTP信息

    报文结构:

    报文结构

    HTTP报文中使用多部分对象集合时:

        ①需要在首部字段里加Content-type

        ②使用boundary字符串来划分多部分对象集合指明的各类实体

        ③多部分对象集合的每个部分类型中,都可以含有首部字段

    第四章 返回结果的HTTP状态码

    状态码

    2XX 成功

        ①200 OK 正常

        ②204 No Content 服务器接受的请求已成功处理,但返回的响应报文中不含实体的主体部分

        ③206 Partial Content 表示客户端进行了范围请求,服务器成功执行了这部分的GET请求

    3XX 重定向

        ①301 Moved Permanently 永久性重定向。请求的资源已被分配了新的URI,以后应使用资源现在所指的URI

        ②302 Found 临时性重定向。

        ③303 See Other 请求的资源存在着另一个URI,应使用GET方法

        ④304 Not Modified  表示客户端发送附带条件的请求时,服务器允许请求访问资源,但未满足条件的情况

        ⑤307 Temporary Redirect 临时重定向与302有相同含义。

        (当301,302,303响应状态码返回时,几乎所有的浏览器都会把POST改成GET,并删除请求报文内的主体之后请求会自动再次发送)

    4XX 客户端错误

        ①400 Bad Request 请求报文中存在语法错误

        ②401 Unauthorized 请求需要有通过HTTP(BASIC认证DIGEST认证)认证的认证信息,若之前已进行过一次请求,则表示用户认证失败。

        ③403 Forbidden 表明对请求资源的访问被服务器拒绝了

        ④404 Not Found  服务器上无法找到请求的资源

    5XX 服务器错误

        ①500 Internal Server Error 服务器端在执行请求时发生了错误

        ②503 Service Unavailable 服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

    第五章 Web服务器

    通信数据转发程序

        ①代理 只转发不改变URI,充当中间人角色。但转发时,需要附带Via首部字段以标记出经过的主机信息(分类,一种是是否使用缓存:缓存代理,缓存服务器;一种是是否会修改报文:透明代理,非透明代理)

        ②网关 客户端与客户端之间使用HTTP协议服务,但与服务器之间可以提供非HTTP协议服务。故而可以提高通信安全性,工作机制与代理类似

        ③隧道 建立安全的通信线路,使用SSL等加密手段进行通信

    第六章 HTTP首部

    HTTP协议的请求和响应报文中必定包含HTTP首部,首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。

    首部包含四类如下:

    通用首部字段 请求首部字段 响应首部字段 实体首部字段

    部分笔记整理

    通用首部字段:

    1.Cache-Control :控制缓存的行为(请求/响应):

        ①no-cache:强制向源服务器再次验证

        ②no-store:不缓存请求或响应的任何内容

        ③......(private,public)

    2.Connection:管理持久连接,控制不再转发给代理的首部字段(例如connection:upgrade则把upgrade删除再转发)

    3.Date:日期

    4.trailer:报文末端的首部一览

    5......

    (no-cache可以在本地缓存,也可以在代理服务器缓存,但需要服务器验证才可以,no-store则彻底禁用缓存)

    关于Cookie管理的首部字段:

    1.set-cookie:

        ①expires:指定浏览器可发送Cookie的有效期

        ②path:限制指定Cookie的发送范围的文件目录

        ③domain:不使用更安全

        ④secure:仅HTTPS才可以发送Cookie

        ⑤httponly:防止跨站脚本攻击

    2.......

    第七章 确保Web安全的HTTPS

    1.HTTP的缺点:

        ①通信使用明文可能会被窃听(加密)

        ②不验证通信方的身份可能遭遇伪装(证书认证)

        ③无法证明报文完整性,可能遭到篡改(加密算法,数字签名)

    2.解决缺点即是HTTPS:

        ①HTTP+加密(SSL)+认证+完整性保护=HTTPS

        ②HTTPS是身披SSL外壳的HTTP

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

    3.HTTPS采用混合加密机制

        HTTPS采用共享密钥加密和公开密钥加密两者并用的混合加密机制,在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。(提高处理速度)

    4.公开密钥证书由数字证书认证机构和其相关机关颁发

        流程如下:

        ①服务器运营人员向数字证书认证机构提出公开密钥的申请

        ②数字证书认证机构在判明提出申请者的身份之后,会对已申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将该公开密钥放入公钥证书后绑定在一起

        ③服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端,以进行公开密钥加密方式通信。

        ④接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证。

    (多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥,用以保证认证机关的公开密钥安全转交到用户客户端)

    5.完整HTTPS安全通信机制

        ①SSL握手阶段:

            步骤1:客户端通过发送Client Hello报文开始SSL通信

            步骤2:服务器可进行SSL通信时,会以Server Hello报文作为应答

            步骤3:服务器发送Certificate报文,报文中包括公开密钥证书

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

        ②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报文

        ③HTTP通信建立:

            步骤10:Finished报文交换完毕之后,SSL连接建立完成。通信受到SSL的保护,从此开始应用层协议的通信,发送HTTP请求。

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

            步骤12:最后由客户端断开连接。断开连接时,发送close_notify报文。

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

    第八章 确认访问用户身份的认证

    1.SSL客户端认证

        需要事先将客户端证书分发给客户端,且客户端必须安装此证书,与上面的流程相似,这边省略,一般会和基于表单认证组合形成一种双因素认证来使用。

    2.基于表单认证

        一般情况就是用户账号密码

    (大部分情况下认证都是基于表单认证,SSL客户端认证虽然具有高度安全性,但由于导入及维持费用,尚未普及)

    3.Session管理及Cookie应用

        步骤1:客户端把用户ID和密码等登陆信息放入报文的实体部分,通常以POST方法把请求发送给服务器。而这时,会使用HTTPS通信来进行HTML表单画面的显示和用户输入数据的发送。

        步骤2:服务器会发送用以识别用户的Session ID。通过验证从客户端发送过来的登陆信息进行身份认证,然后把用户认证状态与Session ID绑定后记录在服务器端。

    (Session ID使用难以推测的字符串,同时服务器端也需要进行有效期的管理,保证安全性。另外,为减轻跨站脚本攻击XSS造成的损失,建议事先在Cookie内加上httponly属性)

        步骤3:客户端接收到从服务器端发来的Seeion ID后,会将其作为Cookie保存在本地

    第九章 基于HTTP的功能追加协议

    1.使用浏览器进行全双工通信的WebSocket

    2.HTTP/2.0

    3.web服务器管理文件的WebDAV

    第十章 构建Web内容的技术(略)

    第十一章 Web的攻击技术

    1.XSS跨站脚本攻击

    2.SQL注入攻击

    3.DDoS攻击

    4.······

    (Web攻击主要分为两类主动攻击和被动陷阱触发攻击,这边基本上只是简单的了解,需要找一些书籍做更深入的探索)

    相关文章

      网友评论

          本文标题:图解HTTP(读书笔记)

          本文链接:https://www.haomeiwen.com/subject/lijxkqtx.html