• 《图解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认证(基于表单认证)

  • 相关阅读:
    haproxy 2.5 发布
    cube.js sql 支持简单说明
    基于graalvm 开发一个cube.js jdbc driver 的思路
    apache kyuubi Frontend 支持mysql 协议
    oceanbase 资源池删除说明
    基于obd 的oceanbase 扩容说明
    jfilter一个方便的spring rest 响应过滤扩展
    cube.js schema 定义多datasource 说明
    typescript 编写自定义定义文件
    meow 辅助开发cli 应用的工具
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/8678014.html
Copyright © 2020-2023  润新知