《图解HTTP》读书笔记
No1:
发送端在层与层之间传输数据时,每经过一层必定会被打上一个该层所属的首部信息。反之,接收端在层于层传输数据时,每经过一层时会把对应的首部消去。
这种把数据信息包装起来的做法称为封装
No2:
IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址
IP地址可以和MAC地址进行配对。IP地址可变换,但MAC地址基本上不会更改。
ARP是一种用以解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址
No3:
握手过程中使用了TCP的标志(flag)--SYN(synchronize)和ACK(acknowledgement)
发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。最后,发送端再回传一个带ACK标志的数据包,代表“握手”结束。
若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包
No4:
URI就是由某个协议方案表示的资源的定位标识符。协议方案是指访问资源所使用的协议类型名称
URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。可见URL是URI的子集
URI格式
No5:
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的
No6:
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成
No7:
HTTP协议自身不对请求和响应之间的通信状态进行保存,即不做持久化处理
No8:
No9:
管线化技术的出现,就能够做到同时并行发送多个请求,而不需要一个接一个的等待响应了。
No10:
Coolie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。
服务器端发现客户端发送过来的Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
No11:
报文(message)是HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输
实体(entity)作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成
内容编码指明应用在实体内容上的编码格式,并保持实体信息原样压缩。内容编码后的实体由客户端接收并负责解码。常用的内容编码:gzip、compress、deflate、identity
No12:
内容协商机制是指客户端和服务器端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源。内容协商会以响应资源的语言、字符集、编码方式等作为判断的基准。
1)服务器驱动协商
2)客户端驱动协商
3)透明协商=服务器驱动和客户端驱动的结合体
No13:
200 - OK
204 - No Content 成功,没有资源返回
206 - Partial Content 范围请求
3XX - 重定向
301 - Moved Permanently 永久性重定向
302 - Found 临时性重定向
303 - See Other 存在另一个URI,应使用GET方法定向获取请求的资源,采用GET
304 - Not Modified 允许访问资源,但未满足条件
307 - Temporary Redirect 临时重定向
4XX - 客户端错误
400 - Bad Request 请求报文存在语法错误
401 - Unauthorized 需要HTTP认证,若已请求过,则表示用户认证失败
403 - Forbidden 拒绝访问
404 - Not Found 无法找到请求的资源
5XX - 服务器错误
500 - Internal Serval Error
503 - Service Unavailable 服务器正忙
No14:
代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端中间人的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端
网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。
隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。
No15:
每次通过代理服务器转发请求或响应时,会追加写入Via首部信息
使用代理服务器的理由有:利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的,等等。比如缓存代理
No16:
利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全
No17:
隧道可按要求建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。隧道本身不会去解析HTTP请求。
No18:
No19:
No20:
HTTP首部字段是构成HTTP报文的要素之一。在客户端与服务器之间以HTTP协议进行通信的过程中,无论是请求还是响应都会使用首部字段,它能起到传递额外重要信息的作用
使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容
No21:
HTTP首部字段4种类型:
1)通用首部字段
2)请求首部字段
3)响应首部字段
4)实体首部字段
No22:
Cache-Control指令
缓存请求指令
缓存响应指令
No23:
HTTP/1.1版本的默认连接都是持久连接
No24:
Set-Cookie字段属性
No25:
HTTP的缺点:
1)通信使用明文(不加密),内容可能会被窃听
2)不验证通信方的身份,因此有可能遭遇伪装
3)无法证明报文的完整性,所以有可能已遭篡改
No26:
HTTP+加密+认证+完整性保护=HTTPS
HTTP通信接口部分用SSL和TLS协议代替而已
SSL采用一种叫做公开秘钥加密的加密处理方式
HTTPS采用共享秘钥加密和公开秘钥加密两者并用的混合加密机制
No27:
HTTP使用的认证方式
1)BASIC认证(基本认证)--Base64编码方式
2)DIGEST认证(摘要认证)
3)SSL客户端认证--客户端证书认证
4)FormBase认证(基于表单认证)