图解http学习笔记

HTTP/HTTPS协议

URL/URI

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

//URI绝对格式
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
<-!  方案名://登录信息@服务器地址:端口号/文件路径?查询字符#片段标识符 >

https://blog.csdn.net/weixin_39780047/article/details/88850857
<协议>://<host>:<port>/<路径>
  • http默认端口是80,可省略
  • 省略路径时,默认指向主页

操作过程

  1. 浏览器从 URL 中解析出服务器的主机名;
  2. 浏览器将服务器的主机名转换成服务器的 IP 地址;
  3. 浏览器将端口号(如果有的话)从 URL 中解析出来;
  4. 浏览器建立一条与 Web 服务器的 TCP 连接;
  5. 浏览器向服务器发送一条 HTTP 请求报文;
  6. 服务器向浏览器回送一条 HTTP 响应报文;
  7. 关闭连接,浏览器显示文档
  • http1.0是无状态的,每次访问数据时都要进行tcp的连接和释放。http1.1之后采用持续连接方式,tcp连接在完成请求后依然保留一段时间,可重复使用

代理服务器

代理服务器将最近的一些请求和响应暂存在本地中。当新请求到到达时,若代理服务器中包含相同资源,则返回暂存的请求响应。否则通过因特网获取请求响应并复制一份在本地(缓存服务器)

使用代理服务器的理由

利用缓存技术(稍后讲解)减少网络带宽 的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要 目的,等等。

报文结构

http分为请求报文和响应报文
请求报文

响应报文

状态码

1** 通知信息
2** 表示成功
3** 重定向,还需要采取进一步行动
4** 客户端错误,语法错误活无法完成请求
5** 服务器错误,服务器在处理过程中发送生错误

常见状态:

  • 202 Accepted 接受
  • 400 Bad Request 错误请求
  • 404 Not Found 找不到

方法

方法

首部字段名

  1. 通用首部字段
首部字段名 说明
Cache-Control 控制缓存的行为
Connection 逐跳首部、连接的管理
Date 创建报文的日期时间
Pragma 报文指令
Trailer 报文末端的首部一览
Transfer-Encoding 指定报文主体的传输编码方式
Upgrade 升级为其他协议
Via 代理服务器的相关信息
Warning 错误通知
  1. 请求首部字段

    首部字段名 说明
    Accept 用户代理可处理的媒体类型
    Accept-Charset 优先的字符集
    Accept-Encoding 优先的内容编码
    Accept-Language 优先的语言(自然语言)
    Authorization Web认证信息
    Expect 期待服务器的特定行为
    From 用户的电子邮箱地址
    Host 请求资源所在服务器
    If-Match 比较实体标记(ETag)
    If-Modified-Since 比较资源的更新时间
    If-None-Match 比较实体标记(与 If-Match 相反)
    If-Range 资源未更新时发送实体 Byte 的范围请求
    If-Unmodified-Since 比较资源的更新时间(与If-Modified-Since相反)
    Max-Forwards 最大传输逐跳数
    Proxy-Authorization 代理服务器要求客户端的认证信息
    Range 实体的字节范围请求
    Referer 对请求中 URI 的原始获取方
    TE 传输编码的优先级
    User-Agent HTTP 客户端程序的信息
  2. 响应首部字段

    首部字段名 说明
    Accept-Ranges 是否接受字节范围请求
    Age 推算资源创建经过时间
    ETag 资源的匹配信息
    Location 令客户端重定向至指定URI
    Proxy-Authenticate 代理服务器对客户端的认证信息
    Retry-After 对再次发起请求的时机要求
    Server HTTP服务器的安装信息
    Vary 代理服务器缓存的管理信息
    WWW-Authenticate 服务器对客户端的认证信息
    1. 实体首部字段

      实体首部字段

    2. cookie

HTTPS

常用端口:443

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

    1553885477520

  • https采用共享密钥和公钥加密(处理慢,安全性高)两者并用的混合加密机制

    1. 使用公钥加密交换共享密钥
    2. 使用共享密钥进行通信

HTTP追加协议

解决HTTP性能瓶颈

  • Ajax——局部更新

  • Comet——保留响应

    • SPYD

      SPDY 没有完全改写 HTTP 协议,而是在 TCP/IP 的应用层与运输层之 间通过新加会话层的形式运作。同时,考虑到安全性问题,SPDY 规 定通信中使用 SSL。

      1553889339542

    • WebSocket

      一旦 Web 服务器与客户端之间建立起 WebSocket 协议的通信连接, 之后所有的通信都依靠这个专用协议进行。通信过程中可互相发送 JSON、XML、HTML 或图片等任意格式的数据。 由于是建立在 HTTP 基础上的协议,因此连接的发起方仍是客户端, 而一旦确立 WebSocket 通信连接,不论服务器还是客户端,任意一方 都可直接向对方发送报文

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

      特点

      1. 推送功能 ……服务器->客户端
      2. 减少通信量 ……保持连接状态,首部信息较少

Web攻击

  • Web 应用端(服务器端)的验证

  • 跨站脚本攻击

  • 对用户 Cookie 的窃取攻击

  • SQL 注入攻击

  • OS 命令注入攻击

  • 目录遍历攻击

  • 远程文件包含漏洞

总结

思维导图

1553905547631

  • 用单台虚拟主机实现多个域名

    提 供 Web 托管服务(Web Hosting Service)的供应商,可以用一台服务 器为多位客户服务,也可以以每位客户持有的域名运行各自不同的网 站。这是因为利用了虚拟主机(Virtual Host,又称虚拟服务器)的功 能。

    位于同一台服务器上的web服务器经过域名转换后,IP地址相同。因此在发送HTTP请求的时候,必须在host首部内完整指出主机名或域名的URI。

    • 在host首部字段说明完整的域名,通过域名来区分同一服务器上的虚拟主机

URL:(Uniform/Universal Resource Locator 的缩写,统一资源定位符)

URI:(Uniform Resource Identifier 的缩写,统一资源标识符)(代表一种标准)。

URI 属于 URL 更高层次的抽象,一种字符串文本标准。

URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。

GET POST
回退时 无害 再次请求
cache 需要手动设置
编码 URL 多种编码
浏览器历史记录 保留 不保留
长度限制 受浏览器限制
参数数据类型 ASCII 任意
传递方式 URL request body
传输数据包 1个 2个
  • 两者本质上都是采用TCP协议进行传输,因此在传输过程中没有差异

HTTP幂等方法,是指无论调用这个url多少次,都不会有不同的结果的HTTP方法。

HTTP GET方法用于获取资源,不应有副作用,所以是幂等的。 GET请求可能会每次得到不同的结果,但它本身并没有产生任何副作用,因而是满足幂等性的。

调用多次的结果和调用一次的结果一致,如DELETE调用一次删除指定资源,再次调用无论该资源是否存在,依然删除该资源。因此其是幂等

posted @ 2019-07-28 13:23  菜鸟当家  阅读(351)  评论(0编辑  收藏  举报