感悟
滑至尾页的那一刻,内心突兀的涌来一阵畅快的感觉。如果说从前对互联网只是懵懵懂懂,但此刻却觉得她是如此清晰而可爱的呈现在哪里。
介绍中说,《图解HTTP》适合作为第一本网络协议书。确实,它就像一座桥梁,连接了 "零基础" 与 "系统性学习",对入门者及其友好。
不过,从辩证的角度来看,这毕竟是十年前的老书了,HTTP早以更新至HTTP/3,而本书是以HTTP/1.1为核心讲解,多少让人有点遗憾。不过好在,该有的知识点,还都有( •̀ ω •́ )✧
核心知识点
- 系统的讲解了 HTTP/1.1 协议核心内容:
- 报文格式(请求行、首部字段、实体主体)
- 状态码(如200、404、503)
- 缓存机制(Cache-Control、ETag)
- Cookie与会话管理
- 对HTTP加密原理(SSL/TLS握手、混合加密机制)的简化解释足够清晰。
当然,我写这篇博客的意义不是为了赞美或批评《图解HTTP》。接下来,我会把大纲列出,用最白的话,来叙述每章大致内容,方便日后浏览、复习。
总览大纲
一、了解Web及网络
1、使用HTTP协议访问Web:
客户端与服务器端之间 在遵守一个叫HTTP协议的规范前提下,进行交流。
2、HTTP的诞生:
早期,世界各地知识分子为了共享知识,于是诞生了Web。以HTML(SGML标准通用标记语言)、HTTP(文档传递协议)、URL(指定文档所在地址的统一资源定位符)为基础形成了WWW(World Wide Web,万维网)。
3、网络基础TCP/IP:
TCP/IP也就是TCP/IP协议族,HTTP是它内部的一个子集。TCP/IP按层次分可分为四层:应用层(HTTP·主要)、传输层(TCP·主要)、网络层(IP·主要)、链路层(网络·主要)。
4、与HTTP关系密切的协议:IP、TCP和DNS:
IP协议(包括 IP地址、MAC地址)为寻找到传输目的地而存在。
TCP协议,功能有:为建立连接,实现三次握手(SYN、SYN/ACK、ACK)。将大块数据分割成以报文段等。
5、负责域名解析的DNS服务:
计算机适合辨别二进制,而人适合记忆字母。所以在为主机名和域名赋名时,用字母。在查找对应计算机时,通过DNS将对应字母转化为二进制。
6、各种协议与HTTP协议的关系:
大致是相互配合,传递信息。
HTTP协议生成报文->TCP协议切割->IP协议进行传递中转->TCP协议组装->HTTP协议响应
7、URI与URL:
URI(统一资源标识符)、URL(统一资源定位符)。
其中URL是URI的子集。
URI格式:
二、简单的HTTP协议
1、HTTP协议用于客户端和服务器之间的通讯:
请求的一端是客户端,响应的一端是服务器端。通信时两者皆存在,两者身份可互换。
2、通过请求和响应的交换达成通信:
字面意思,你问他要,并且他给你了,代表你俩交流成功。
3、HTTP是不保存状态的协议:
简而言之,客户端与服务器端都有健忘症,他俩都不记得曾经说过啥,也就是不论发多少个http协议,双方都记不住。
4、请求URI定位资源:
互联网上的所有资源都被URI打了个标记,就相当与你家的地址,只要知道URI就能找到资源所在地。
5、告知服务器意图的HTTP方法:
GET、POST、PUT、HEAD、DELETE、OPTIONS、TRACE、CONNECT、LINK、UNLINE等
重点:大写
6、使用方法下达命令:
其中,有三个较为常用:
7、持久连接节省通信量:
每次通信都需要TCP连接,完毕后在断开。大规模通信情况下,会极大的增加开销。于是就找了个持久的通道。
8、使用Cookie的状态管理:
前面不是说,服务器与客户端健忘吗,记不住曾经发过的http协议。于是搞了个备忘录,起名叫Cookie,专门用来提醒对方。
三、HTTP报文内的HTTP信息
1、HTTP报文:
应用层通过http协议生成的。
结构为:报文首部、报文主体。两部分通过 空行(CR+LF) 分割开。
2、请求报文及响应报文的结构:
3、编码提升传输效率:
就是传输的数据太大,压缩一下在传输。就像用微信传输时,一般先压缩为zip格式,在发送。
4、发送多种数据的多部份对象集合:
这里的多部分对象为:文本、图片、音频等,需要在传输时划分开。
5、获取部分内容的范围请求:
举个简单的例子,在网上下载东西时,总是1%、1%的下载,每次只申请百分之一的资源。
既能防止一次性传输内容过大,而且能在突然断网后,在联网之后知道从哪里重新申请资源。
6、内容协商返回最合适的内容:
相当于,你申请过来了一个网站的大概框架,里面数据返回的具体内容,是中文还是其他语言,是经过辨别你发的请求后给出的。
四、返回结构的HTTP状态码
1、状态码告知从服务器端返回的请求结果:
通过状态码,你能知道你发出的请求是正确还是错误。她就相当于反馈。
2、2XX 成功:
- 200 OK
- 204 No Content
- 206 Partial Content
3、3XX 重定向:
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 307 Temporary Redirect
4、4XX 客户端错误:
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Not Found
5、5XX 服务器错误:
- 500 Internal Server Error
- 503 Service Unavailable
五、与HTTP写作的Web服务器
1、用单台虚拟主机实现多个域名:
相当于厉害点的人格分裂症、这个人还顶聪明。有一个主人格,并且能有意识的切换人格。
2、通信数据转发程序:代理、网关、隧道
代理:相当于中间人角色,你拿不了的东西,让代理替你拿,在交给你。(VPN)
网关:让不同协议之间通信,功能上类似代理。
隧道:使用 SSL 加密手段建立的一个通信线路
3、保存资源的缓存:
缓存是指代理服务器或客户端本地磁盘内保存的资源副本。再次请求时,如果缓存中有,就可以直接用,而不用,在向服务器发出请求。
六、HTTP首部
1、HTTP报文首部:
前面已经看过了(三-2)分为:请求报文首部与响应报文首部。
2、HTTP首部字段
分别就是下方的3、4、5、6。
通用首部字段、请求首部字段、响应首部字段、实体首部字段。
3、HTTP/1.1 通用首部字段
通用首部字段是指,请求报文和响应报文双方都会使用的首部。
4、请求首部字段
请求首部字段是从客户端往服务器端发送请求报文中所使用的字段, 用于补充请求的附加信息、客户端信息、对响应内容相关的优先级等 内容。
5、响应首部字段
响应首部字段是由服务器端向客户端返回响应报文中所使用的字段, 用于补充响应的附加信息、服务器信息,以及对客户端的附加要求等 信息。
6、实体首部字段
实体首部字段是包含在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息。
7、为Cookie服务的首部字段
8、其他首部字段
HTTP 首部字段是可以自行扩展的。所以在 Web 服务器和浏览器的应 用上,会出现各种非标准的首部字段。
七、确保Web安全的HTTPS
1、HTTP的缺点:
- 通信使用明文(不加密),内容可能会被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
2、HTTP + 加密 + 认证 + 完整性保护 = HTTPS:
简单来说就是:HTTP协议+SSL/TLS协议+有信誉的认证公司+确保发送的信息是完整的=HTTPS
φ(* ̄0 ̄)。所以HTTPS就是,穿上了安全服的HTTP。
八、确认访问用户身份的认证
1、何为认证:
简单点说,就是计算机本身无法判断坐在显示器前的使用者的身份。所以需要类似账号密码的认证。
2、BASIC认证:
就是简单的账号、密码认证,虽被Base64编码,但是在传输过程中几乎仍为明文传输,容易被监听窃取。
3、DIGEST认证:
为弥补 BASIC 认证存在的弱点,从 HTTP/1.1 起就有了 DIGEST 认证。 DIGEST 认证同样使用质询 / 响应的方式 (challenge/response),但不会像 BASIC 认证那样直接发送明文密码。但仍然无法从根本上解决问题。
4、SSL客户端认证:
SSL是凭借着,证书进行认证。相当于你找了个担保人。但实际操作可远不止这么简单,具体去下方链接了解一下吧( ̄︶ ̄)↗
5、基于表单认证:
简而言之,就是用户通过表单提交账号密码,服务器验证身份后授权访问。
九、基于HTTP的功能
1、基于HTTP的协议:
这个小节的大概意思是,Web长大了,http配不上了,但又因为抛弃不了http。所以就给http,又扩展了些新功能,让他适应Web。
2、消除HTTP瓶颈的SPDY:
SPDY通过多路复用、头部压缩和服务器推送降低延迟,提升了加载速度。
3、使用浏览器进行全双工通信的WebSocket:
WebSocket全双工通信的大致流程为:1. 客户端发起HTTP升级请求(Upgrade: websocket),服务端响应101状态码切换协议;2. TCP连接保持,双方通过数据帧实时双向通信;3. 数据以消息形式传输,无需重复握手;4. 任一端可发送关闭帧终止连接,实现低延迟双向通信。
4、期盼已久的HTTP/2.0
HTTP/2.0 的目标是改善用户在使用 Web 时的速度体验。
5、Web服务器管理文件的WebDAV
WebDAV(Web-based Distributed Authoring and Versioning,基于万维网 的分布式创作和版本控制)是一个可对 Web 服务器上的内容直接进行文件复制、编辑等操作的分布式文件系统。
除了创建、删除文件等基本功能,它还具备文件创建者管理、文件编辑过程中禁止其他用户内容覆盖的加锁功能,以及对文件内容修改的 版本控制功能。
简而言之,WebDAV 是用于 Web 服务器管理文件的扩展协议,支持多种文件操作。
十、构建Web内容的技术
1、HTML:
HTML(HyperText Markup Language,超文本标记语言)是为了发送 Web 上的超文本(Hypertext)而开发的标记语言。
超文本是一种文档 系统,可将文档中任意位置的信息与其他信息(文本或图片等)建立 关联,即超链接文本。
标记语言是指通过在文档的某部分穿插特别的 字符串标签,用来修饰文档的语言。我们把出现在 HTML 文档内的 这种特殊字符串叫做 HTML 标签(Tag)。
2、动态HTML:
所谓动态 HTML(Dynamic HTML),是指使用客户端脚本语言将静 态的 HTML 内容变成动态的技术的总称。鼠标单击点开的新闻、 Google Maps 等可滚动的地图就用到了动态 HTML。
动态 HTML 技术是通过调用客户端脚本语言 JavaScript,实现对 HTML 的 Web 页面的动态改造。利用 DOM(Document Object Model,文档对象模型)可指定欲发生动态变化的 HTML 元素。
3、Web应用:
Web 应用是指通过 Web 功能提供的应用程序。
4、数据发布格式及语言:
里面有可拓展的标记语言XML,具有信息聚合功能的RSS,轻量级数据标记语言JSON
十一、Web的攻击技术
1、针对Web的攻击技术:
攻击分为主动攻击(主动出击)与被动攻击(诱导用户自己掉进陷阱)两种。
2、因输出值转义不完全引发的安全漏洞:
意如其名,问题就出在了转义上。
3、因设置或设计上的缺陷引发的安全漏洞:
一般有强制浏览、不正确的错误消息处理、开放重定向等。
4、因会话管理疏忽引发的安全漏洞:
会话管理是用来管理用户状态的必备功能,但是如果在会话管理上有 所疏忽,就会导致用户的认证状态被窃取等后果。
5、其他安全漏洞:
一般有密码破解、点击劫持、DoS 攻击、后门程序等。
到这里基本结束,如有错,请及时私信,必会接纳。( •̀ ω •́ )✧
参考书籍:
《图解HTTP》