HTTP

  • 它是什么?

    Web文档的传输协议。

诞生

HTTP的诞生,是因研究组织的博士提出了一种,想让远隔两地的研究者们共享知识的设想。

然后诞生了三项技术:第一个是页面的文本HTML;第二个是作为文档传递协议的HTTP;第三个是指定文档所在地址的URL

TCP/IP协议族

  • 它是什么?

    它是互联网协议集合的总称。HTTP协议是它的一个子集。

TCP/IP的分层管理

也就是五层模型,这种设计的好处是,每个层次内部的设计就能够自由改动,只关心分派给自己的任务。

应用层

  • HTTP协议
  • FTP协议
  • DNS协议

传输层

  • TCP协议
  • UDP协议

网络层

  • IP协议
  • ARP协议

链接层

  • 以太网协议

IP协议

  • 它的作用是什么?

    IP协议的作用是把各种数据包传送给对方。

  • 怎么确保能传送到对方那里呢?

    需要依靠IP地址MAC地址

ARP协议

  • 它是什么?

    用来解析地址的协议。

  • 它的作用是什么?

    根据通信方的IP地址,就可以反查出对应的MAC地址。

TCP协议

  • 它的作用是什么?

    提供可靠的字节流服务。

  • 它具体做了什么?

    为更容易传送,把大块数据分割,并能够确认数据最终是否送达对方。

三次握手

  • 它的作用是什么?

    确保数据能到达目标。

  • 它的过程是怎样的?

    • 1.发送端,首先发送一个带有SYN标志的数据包给对方。
    • 2.接收端收到后,回传一个带有SYN/ACK标志的数据包,以表示传达确认信息。
    • 3.发送端,最后再回传一个带有ACK标志的数据包,代表握手结束。

DNS服务

  • 它的作用是什么?

    提供域名到IP地址之间的解析服务。

HTTP协议

  • 它的作用是什么?

    生成针对目标Web服务器的HTTP请求报文。

各种协议和HTTP协议的关系

客户端-应用层:客户端请求一个URL网址,先到DNS服务获得IP地址HTTP协议的职责是生成针对目标Web服务器的HTTP请求报文。

客户端-传输层:接着TCP协议为了方便通信,将HTTP请求报文分割成报文段,把每个报文段可靠地传给对方。

网络层:再下一层IP协议搜索对方的地址,一边通过路由中转一边传送。

服务器-传送层:TCP协议将从对方那里接收到的报文段,按序号以原来的顺序重组请求报文。

服务器-传输层:HTTP协议对Web服务器请求的内容做处理。

URI和URL

  • 它是什么?

    统一资源标识符。

  • 它有什么作用?

    可以定位互联网上的资源位置。

HTTP的请求和相应

请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。

响应报文基本上由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

HTTP协议的状态

HTTP协议自身不具备保存之前发送过的请求或响应的功能。也就是无状态。

为了实现期望的保持状态功能,于是引入了Cookie技术。

Method

  • GET

    用来请求访问已被URI识别的资源。

  • POST

    用来传输实体的主体。

  • PUT

    用来传输文件。但是自身没有验证机制,存在安全性问题。

  • HEAD

    用来获得报文首部信息。

  • DELETE

    用来删除文件。但是自身不带验证机制。

  • OPTIONS

    用来查询针对请求URI指定的资源支持的方法。

HTTP持久连接

  • 它是什么?

    建立1次TCP连接后,可以进行多次请求和响应的交互。

  • 它的好处是什么?

    减少额外开销,减轻服务器的负载,节省时间,提升速度。

  • 使用它有什么条件?

    需要HTTP/1.1及以上,服务器端也要能够支持持久连接,客户端也要支持。

管线化

  • 它是什么?

    它是在持久连接的基础之上实现的一种技术。

  • 它的作用是什么?

    能够做到同时并行发送多个请求。

  • 它是什么?

    一种技术。

  • 它的用途是什么?

    解决HTTP无状态的问题。

  • 它是怎么做到的?

    通过在请求和响应报文中写入Cookie信息,来控制客户端的状态。

总结

Cookie会根据从服务器端发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie。

当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值,然后发送出去。

服务器端拿到客户端发送过来的Cookie后,会去对比服务器上的记录,辨别出这是哪一个客户端发送的请求,最后得到之前的状态信息。

HTTP信息

HTTP报文

  • 它是什么?

    它是HTTP协议交互的信息。客户端发送的叫请求报文,服务器端响应的叫响应报文。

  • 它由什么组成?

    HTTP报文是由报文首部报文主体组成,以空行分开。

  • 请求报文的组成部分有哪些?

    有方法、URI、HTTP版本、HTTP首部字段等部分。

  • 响应报文的组成部分有哪些?

    有HTTP版本、状态码、HTTP首部字段。

HTTP首部字段

  • 它是什么?

    它是构成HTTP报文的要素之一。

HTTP请求报文

  • Accept

    用来告知服务器,那份资源最好是给什么样的格式。按照优先级可以指定多种媒体类型。

  • Accept-Encoding

    用来告知服务器,用户代理支持的内容编码及内容编码的优先级顺序。

  • Authorization

    用来告知服务器,用户代理的认证信息(证书值)。通常,想要通过服务器认证的用户代理会在接收到返回的 401 状态码响应后,把首部字段 Authorization 加入请求中。

  • Connection

    keep-alive 持久连接。

HTTP响应报文

Cache-Control

通过指定首部字段 Cache-Control 的指令,就能操作缓存的工作机制。

- no-cache 指令的目的是为了防止从缓存中返回过期的资源。
- public 指令明确表明其他用户也可利用缓存。
- private 指令表面响应只以特定的用户作为对象。
- no-store 指令暗示请求或响应中包含机密信息。

HTTP状态码

  • 它是什么?

    一个用来描述请求结果的标记。

  • 它的用途是什么?

    用来告知客户端从服务器端返回的请求结果。

状态码的类别

  • 1XX Informational(信息性状态码) 接收的请求正在处理。
  • 2XX Success(成功状态码) 请求正常处理完毕。
    • 200 OK 表示发送的请求被正常处理。
    • 204 No Content 表示请求处理成功,但是没有资源可返回。
    • 206 Partial Content 表示对资源某一部分的请求。
  • 3XX Redirection(重定向状态码) 需要进行附加操作以完成请求。
    • 301 Moved Permanently 永久性重定向,表示请求的资源已被分配了新的URI。
    • 302 Found 临时性重定向,表示已移动的资源对应的URI将来还有可能发生改变。
    • 303 See Other 表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源。
    • 304 Not Modified 表示发送附带条件的请求时,服务器端找到资源,但条件未满足要求的情况。
  • 4XX Client Error(客户端错误状态码) 服务器无法处理请求。
    • 400 Bad Request 表示客户端请求报文中存在语法错误。
    • 401 Unauthorized 表示发送的请求需要有通过HTTP认证。
    • 403 Forbidden 表明对请求资源的访问被服务器拒绝了,没有权限访问。
    • 404 Not Found 表明服务器上无法找到请求的资源。
  • 5XX Server Error(服务器错误状态码) 服务器处理请求出错。
    • 500 Internal Server Error 表明服务器端在执行请求时发生了错误。
    • 503 Service Unavailable 表明服务器暂时处于超负载或正在进行停机维护。

虚拟主机

  • 它是什么?

    在物理层面只有一台服务器,但只要使用虚拟主机的功能,则可以假想已具有多台服务器。

  • 它的用途是什么?

    一台Web服务器可以搭建多个独立域名的Web网站。

  • 如何区分两个域名?

    指定URI。

代理服务器

  • 它是什么?

    扮演了位于客户端和服务器中间人的角色。

  • 它做了什么?

    接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。

  • 为什么要用它?

    • 可以利用缓存技术减少网络带宽的流量。
    • 可以组织内部针对特定网站的访问控制。

HTTPS

  • 它是什么?

    它是与SSL组合使用的HTTP。(HTTPS = HTTP + 加密 + 认证 + 完整性保护)

  • 它解决什么问题?

    保障HTTP传输的安全。

  • HTTP协议有哪些不安全的问题?

    • 通信使用明文,内容可能会被窃听。
    • 不验证通信方的身份,因此有可能遭遇伪装。
    • 无法证明报文的完整性,所以有可能已遭篡改。
  • SSL是什么?

    一种使用最为广泛的网络安全技术。

  • SSL可以做什么?

    • 提供通信加密处理。
    • 确认通信方的证书。
  • SSL有什么不足?

    • 速度慢,HTTPS比HTTP要慢2到100倍。慢分为两种,一种是通信慢。另一种是会大量消耗CPU及内存资源,导致处理速度变慢。

SPDY

  • 它有什么用?

    用来解决HTTP的性能瓶颈。

  • HTTP有哪些性能瓶颈?

    • 一条连接上只可发送一个请求。
    • 请求只能从客户端开始。客户端不可以接收除响应以外的指令。
    • 请求 / 响应首部未经压缩就发送。首部信息越多延迟越大。
    • 每次互相发送相同的首部造成的浪费较多。
  • 它是怎么解决的?

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

  • 使用SPDY后,可以获得哪些功能?

    • 多路复用流。
    • 赋予请求优先级。
    • 压缩HTTP首部。
    • 服务器主动推送功能。
    • 服务器提示功能。

WebSocket

  • 它是什么?

    它是一套新的协议及API。

  • 它有什么用?

    实现Web浏览器与Web服务器之间全双工通信标准。

  • 它的主要特点有哪些?

    • 推送功能。
    • 减少通信量。

Web攻击

CSRF

Last Updated: 2022/6/30 11:49:42
Contributors: licong96