图解http学习笔记

HTTP/HTTPS协议

URL/URI

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

//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,可省略
  • 省略路径时,默认指向主页web

    操做过程

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

    代理服务器

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

使用代理服务器的理由安全

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

报文结构

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

响应报文

状态码

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. 请求首部字段tcp

    首部字段名 说明
    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。

  • [x] 客户端如何知道web服务经过虚拟主机?
    • 在host首部字段说明完整的域名,经过域名来区分同一服务器上的虚拟主机
  • [x] URL和URI的区别

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

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

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

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

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

  • [x] 幂等请求

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

HTTP GET方法用于获取资源,不该有反作用,因此是幂等的。 GET请求可能会每次获得不一样的结果,但它自己并没有产生任何反作用,于是是知足幂等性的。

调用屡次的结果和调用一次的结果一致,如DELETE调用一次删除指定资源,再次调用不管该资源是否存在,依然删除该资源。所以其是幂等

相关文章
相关标签/搜索