p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC" }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px "PingFang SC"; min-height: 25.0px }
p.p4 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.0px "Microsoft YaHei"; color: #3f3f3f; background-color: #ffffff }
p.p5 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 16.0px "Microsoft YaHei"; color: #3f3f3f; background-color: #ffffff; min-height: 21.0px }
p.p6 { margin: 0.0px 0.0px 0.0px 0.0px; line-height: 21.0px; font: 18.0px "PingFang SC"; min-height: 25.0px }
li.li7 { margin: 0.0px 0.0px 20.0px 0.0px; line-height: 15.0px; font: 12.0px ".PingFang SC"; color: #333333 }
span.s1 { font: 18.0px Helvetica }
span.s2 { }
span.s3 { font: 12.0px "Helvetica Neue"; background-color: #ffffff }
span.s4 { font: 12.0px "Helvetica Neue"; background-color: #ffffff }
span.s5 { background-color: #ffffff }
span.s6 { font: 12.0px "Helvetica Neue" }
span.Apple-tab-span { white-space: pre }
ul.ul1 { list-style-type: disc }

1.

http正式作为标准被公布是在1996年5月,版本被命名为http/1.0,并记载于RFC1945

2.

1997年公布的HTTP/1.1是目前主流的HTTP协议版本,当初的标准是RFC2068,之后发布的修订版RFC2616就是当前的最新版本

3.

TCP/IP协议族按层次分别分为以下4层:应用层,传输层,网络成,数据链路层

4.

发送端在层与层之间传输数据时,每经过一层时必定会被打上一个盖层所属的首部信息

5.

IP网际协议位于网络层。

6.

ip间的通信依赖mac地址

7.

ARP是一种用以解析地址的协议,根据通信放的ip地址就可以反查出对应MAC地址

8.

无论哪台计算机,哪台网络设备,他们都无法全面掌握互联网中的细节

9.

TCP位于传输层,提供可靠地字节流服务,所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文段为单位的数据包进行管理。

10.

为了准确无误的将数据送达目标处,TCP协议采用了三次握手策略。发送端首先发送一个带SYN标志的数据包给对方,接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。

11.

URI统一资源标识符,URL统一资源定位符。

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

12.

RFC是互联网的设计文档,要是不按照RFC标准执行,就有可能导致无法通信的状况。

13.

http报文大致可分为报文首部和报文主体两块,两者由最初出现的空行(CR+LF)来划分

14.

常见的内容编码有以下几种:

1.gzip(GNU zip)

2.compress(UNIX系统标准压缩)

3.deflate(zlib)

4.identity(不进行编码)

15.

在http通信过程中,请求的编码实体资源尚未被全部传输完成之前,浏览器无法显示请求页面。在传输大容量数据时,通过把数据分割城多块,能够让浏览器逐步显示画面,这种把实体主体分块的功能称为分块传输编码(chunked transfer Coding)

16.

在http报文中使用多部分对象集合时,需要在首部字段里加上content-type

17.

要实现能从之前下载中断处恢复下载需要指定下载的实体范围,像这样,指定范围发送的请求叫做范围请求。由Range这个请求头控制。例如

Range: bytes=5001-10000 表示请求资源的5001-10000字节的范围。

bytes=5001- 表示从5001到之后所有

bytes=-3000, 5000-7000 从一开始到3000和5000-7000字节的多重范围

18.

针对范围请求,响应会返回状态码206。另外,对于多重范围的范围请求,响应会在首部字段content-type标明multipart-byteranges后返回响应报文。如果服务器无法响应范围请求,则会返回状态码200 OK和完整的实体内容

19.

内容协商常见请求头:

1.Accept

2.Accept-Charset

3.Accept-Encoding

4.Accept-Language

5.Content-Langeuage

20.

Accept:text/xml;

Content-Type:text/html

即代表希望接受的数据类型是xml格式,本次请求发送的数据的数据格式是html。

21.

1** 接受的请求正在处理

2** 请求正常处理完毕

3** 需要进行附加操作以完成请求

4** 服务器无法处理请求

5** 服务器处理请求出错

22.

只要遵守状态码类别的定义,即时改变RFC2616中定义的状态码或服务端自行创建状态码都没问题

23.

常见状态码:

200 OK

204 No Content请求处理成功,但没有资源可返回

206 Partial Content表示客户端进行了范围请求,响应报文中包含由Content-Range指定范围的试题内容

301 Moved Permanently 永久重定向

302 Found 临时重定向

303 See Other 希望客户端能以GET方法重定向到另一个URI上

304 Not Modified 用缓存的时候会出现

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

401 Unauthorized 发送的请求需要有通过HTTP认证(BASIC认证、DIGEST认证)

403 Forbidden 服务器拒绝提供,一般是权限的问题

404 Not Found

500 Internal Server Error 服务器端内部出错

503 Service Unavailable 服务器在更新或者忙,一会再来

24.

当301、302、303响应状态码返回时,几乎所有的浏览器都会把POST改为GET

25.

HTTP/1.1规范允许一台HTTP服务器搭建多个WEB站点,因为利用了虚拟主机功能,即时物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器

26.

当请求发送到服务器时,已经是以IP地址形式访问了

27.

代理,它扮演了位于服务器和客户端“中间人”的角色

网关,是转发其他服务器通信数据的服务器,接受从客户端发送来的请求时,他就像拥有资源的源服务器一样对请求进行处理

隧道,是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序

28.

使用代理服务器的理由有:利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的。

29.

代理有多种使用方法,按两种基准分类,一种是是否使用缓存,另一种是是否会修改报文。

30.

隧道使用SSL等加密手段进行通信

31.

在请求中,HTTP报文由方法,URI,HTTP版本,HTTP首部字段等构成

在响应中,HTTP报文由HTTP版本,状态码(数字和原因短语)、HTTP首部字段3部分构成

31.

从字面意思上很容易把no-cache误解为不缓存,但事实上no-cache代表不缓存过期的资源,缓存会像员服务器进行有效期确认后处理资源,no-store才是真正的不进行缓存

32.

no-cache: 告诉浏览器、缓存服务器,不管本地副本是否过期,使用资源副本前,一定要到源服务器进行副本有效性校验。也就是说一定会有http请求,服务器会告诉我们资源有没有更新过。

must-revalidate:告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。

33.

keep-alive: timeout=10, max=500

34.

Pragma是HTTP/1.1之前版本的历史遗留字段,仅作为与HTTP/1.0的向后兼容

35.

首部字段Transfer-Encoding规定了传输报文主体时采用的编码方式

36.

首部字段Upgrade用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不同的通信协议

37.

报文经过代理或网关时,会现在首部字段Via中附加该服务器的信息,然后进行转发。

38.

Host首部字段在HTTP/1.1规范内是唯一一个必须被包含在请求内的首部字段

39.

If-match和ETag一起使用,还可以使用星号(*)指定If-match的字段值,这样,服务器将会忽略ETag的值,只要资源存在就处理请求

40.

对主体进行内容编码传输时,不能再使用content-length首部字段

41.

http主要有这些不足:

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

2.不验证通信方的身份,因此可能遭遇伪装

3.无法证明报文完整性,所以有可能已遭篡改

42.

与SSL组合使用的HTTP被称为HTTPS

43.

虽然使用HTTP协议无法确定通信方,但如果使用SSL则可以,SSL不仅提供加密处理,而且还使用了一种被称为证书的手段,可用于确定方。

44.

常使用的确定报文完整性的方法,MD5和SHA-1等散列值校验,但他们并不便捷和可靠

45.

SSL提供认证和加密处理及摘要功能

46.

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

47.

HTTPS是身披SSL外壳的HTTP,HTTPS只是HTTP通信接口部分用SSL和TLS协议代替而已

48.

通常HTTP直接和TCP通信,当使用SSL时,则演变成先和SSL通信,再由SSL和TCP通信了,简而言之,所谓HTTPS,其实就是身披SSL协议这层外壳的HTTP

49.

SSL采用一种叫公开密钥加密的加密处理方式,近代的加密方法中加密算法是公开的,而密钥确是保密的

50.

加密和解密同用一个密钥的方式称为共享密钥加密,也被叫做对称密钥加密

51.

使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。利用这种方式,不需要发送用来解密的私有密钥,也不必担心密钥被攻击者窃听而盗走。

52.

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

53.

为了解决公开密钥在传输中被替换的情况,可以使用由数字证书认证机构(CA,certificate Authority)和其相关机关颁发的公开密钥证书

54.

公钥证书也可叫做数字证书或直接称为证书

55.

接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书上的数字签名进行验证,一旦验证通过,客户端便可明确两件事:一、认证服务器的公开密钥是真实有效的数字证书认证机构。二、服务器的公开密钥是值得信赖的。

56.

多数浏览器开发商发布版本时,会事先在内部植入常用认证机关的公开密钥

57.

银行的网上银行就采用了客户端证书,在登陆网银时不仅要求用户确认输入ID和密码,还要要求用户的客户端证书,以确认用户是否从特定的终端访问网银

58.

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

59.

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

60.

要进行HTTPS通信,证书是必不可少的

61.

HTTP/1.1使用的认证方式:

1.BASIC认证(基本认证)

2.DIGEST认证(摘要认证)

3.SSL客户端认证

4.FormBase(基于表单认证)

62.

当请求的资源需要BASIC认证时,服务器会随状态码401返回带WWW-Authenticate首部字段的响应

63.

google的spdy是作用在会话层,也就是SSL和HTTP中间

64.

为了实现WebSocket通信,需要用到HTTP的Upgrade首部字段,告知服务器通信协议发生改变,已达到握手的目的,服务器返回状态码101

65.

成功握手确立WebSocket链接之后,通信时不再使用HTTP的数据帧,而采用WebSocket独立的数据帧

《图解http》知识点笔记的更多相关文章

  1. Vim 命令图解-Gvim使用笔记-2017-5-9

    Vim 命令图解-Gvim使用笔记... 图片要是看的不太清楚推荐使用:鼠标右键在新标签中打开或是全屏看图 Vim中常用的一些速查命令: Vim发展历史:1976年Bill Joy开发了vi1988 ...

  2. Vim 命令图解-Gvim使用笔记

    Vim 命令图解-Gvim使用笔记... 参考的网址:http://blog.vgod.tw/wp-content/uploads/2014/08/vgod-vim-cheat-sheet-full. ...

  3. Python 入门必学经典知识点笔记【肯定有你不知道的】

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:实验楼 Python 作为近几年越来越流行的语言,吸引了大量的学员开始学 ...

  4. [新手必备]Python 基础入门必学知识点笔记

    Python 作为近几年越来越流行的语言,吸引了大量的学员开始学习,为了方便新手小白在学习过程中,更加快捷方便的查漏补缺.根据网上各种乱七八糟的资料以及实验楼的 Python 基础内容整理了一份极度适 ...

  5. Java 多线程与并发【知识点笔记】

    Java 多线程与并发[知识点笔记] Java多线程与并发 先说一下线程与进程的由来: 在初期的计算机,计算机只能串行执行任务,并且需要长时间的等待用户的输入才行 到了后来,出现了批处理,可以预先将用 ...

  6. 图解HTTP学习笔记

    前言: 一直觉得自己在HTTP基础方面都是处于知其然,不知其所以然的样子.最近利用空闲时间拜读了一下图解HTTP,写篇博客记录一下读书笔记. TCP三次握手: ① 发送端首先发送一个带SYN标志的数据 ...

  7. 图解http学习笔记【一】

    不想单纯的把书里的知识点罗列一遍 这周,我们的安全代码终于改完了.我在微信上报了个叫 一修读书的课程,现在已经听了6天.感觉并不是很神奇,聊胜于无.倒是趁着当当搞活动买回来好几本书,其中就有这本图解h ...

  8. 图解HTTP学习笔记——简单的HTTP协议

    简单的HTTP协议 前言 最近在学习Web开发的相关知识,发现<图解HTTP>这本书通俗易懂.所以花时间学习这本书,并记录下学习笔记. 如上图,我们每天都在浏览网页,一般我们都是在浏览器地 ...

  9. 图解http读书笔记

    以前对HTTP协议一知半解,一直不清楚前端需要对于HTTP了解到什么程度,知道接触的东西多了,对于性能优化.服务端的配合和学习中也渐渐了解到了HTTP基础的重要性,看了一些大神对HTTP书籍的推荐,也 ...

随机推荐

  1. ES6 let和const命令(2)

    为什么要使用块级作用域 在ES5中只有全局作用域和函数作用域,没有块级作用域,因此带来了这些麻烦 内层变量可能会覆盖外层变量 var tmp = new Date(); console.log(tmp ...

  2. lesson - 4 Linux目录文件管理

    内容概要:1. 和目录相关的几个命令mkdir 关注-p选项 rmdir 同样也有一个-p选项rm -r -f 两个常用选项cp -r 针对目录, 有时我们使用/bin/cpmv 重命名或者移动, 有 ...

  3. Oracle ADG搭建

    Oracle Active Data Guard搭建 一:安装 1.基础环境配置 1.1.开启强制日志记录 DG日志发送方式中ARCH进程和LGWR进程的ASYNC模式都是基于日志同步的,所以我们必须 ...

  4. JavaUtil_06_DES加解密工具

    一.示例 CommonUtil.java package com.ray.test.des; import java.io.ByteArrayOutputStream; import java.io. ...

  5. Disruptor并发框架 (二)核心概念场景分析

    核心术语 RingBuffer(容器): 被看作Disruptor最主要的组件,然而从3.0开始RingBuffer仅仅负责存储和更新在Disruptor中流通的数据.对一些特殊的使用场景能够被用户( ...

  6. C++中double类型的数字如何保留三位小数点详解

    我们知道C语言中,如果要求输出结果保留三位小数,我们可以使用pritf()函数轻松的解决.但是C++的输出运算符<<并没有直接实现这个功能,怎么办呢?之前在找答案的过程中各路大神给出了千姿 ...

  7. Git详解之二:Git基础

    Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到 ...

  8. 关于linux命令ssh的总结

    因为项目计算量比较大,需要将任务分布到多台电脑上面运行,因为对于分布式概念不熟,就想到了linux最简单的ssh协议,远程控制其他电脑,然后写shell脚本统一在所有电脑上运行程序.(我的操作系统为U ...

  9. JS中date日期初始化的5种方法

    创建一个日期对象: 代码如下: var objDate=new Date([arguments list]); 参数形式有以下5种: 1)new Date("month dd,yyyy hh ...

  10. JS 监听微信、支付宝等移动app及浏览器的返回、后退、上一页按钮的事件方法

    在实际的应用中,我们常常需要实现在移动app和浏览器中点击返回.后退.上一页等按钮实现自己的关闭页面.调整到指定页面或执行一些其它操作的需求: 那在代码中怎样监听当点击微信.支付宝.百度糯米.百度钱包 ...