跳转至

2.2 The Web and HTTP

2.2.1 HTTP 概况

  • web 的应用层协议是超文本传输协议(HTTP)
  • web 页面由对象组成
  • 一个对象只是一个文件,例如HTML文件、JPEG图形、Java小程序、视频片段,且他们可以通过一个URL地址寻址
  • 每个URL地址由两部分组成:存放对象的服务器主机名和对象的路径名
  • Web浏览器:HTTP的客户端
  • Web服务器:HTTP的服务器端,用于存储Web对象,每个对象由URL寻址
  • HTTP使用TCP作为支撑运输协议
  • 服务器向客服发送被请求的文件,而不存储任何关于该客户的状态信息,所以HTTP是一个无状态协议

2.2.2 非持续链接和持续链接

非持续连接:每个请求/响应对经一个单独的TCP连接发送

持续连接:所有的请求及其响应经相同的TCP连接发送

HTTP默认使用持续链接

1 采用非持续连接的HTTP

往返时间(RTT)

一个短分组从客户到服务器然后再返回客户的时间。包括分组传播时延、分组在中间路由器和交换机的排队时延、分组处理时延

一个TCP连接涉及一次三次握手过程,总的响应时间就是两个RTT加上服务器传输HTML文件的时间

持续连接的HTTP

一个完整的Web页面(HTML文件加上其他的文件)可以用耽搁持续TCP连接进行传送,或者更甚至,多个Web页面也可以在单个TCP连接上进行

2.2.3 HTTP报文格式

1. HTTP请求报文

  • 请求行:第一行、三个字段
    • 方法字段
      • GET 请求一个对象
      • POST 用户提交表单时(如向搜索引擎提供关键字),但提交表单不一定要用 POST 方法
      • HEAD 类似于 GET,区别在于服务器返回的响应报文中不包含请求对象(常用于故障跟踪)
      • PUT 用于向服务器上传对象
      • DELETE 用于删除服务器上的对象
    • URL字段
    • HTTP版本字段
  • 首部行:后继的行
    • HOST 知名对象所在的主机
    • Connection:close 告诉服务器不适用持续连接
    • User-agent 指明用户代理
    • Accept-language

2. HTTP响应报文

  • 301 Permanently Moved 被请求的资源已永久移动到新位置,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
  • 302 Found 请求的资源现在临时从不同的URL响应请求。301是永久重定向,而302是临时重定向。
  • 200 OK 表示从客户端发来的请求在服务器端被正确处理
  • 304 Not Modified 304状态码是告诉浏览器可以从缓存中获取所请求的资源。
  • 400 bad request 请求报文存在语法错误
  • 403 forbidden 表示对请求资源的访问被服务器拒绝
  • 404 not found 表示在服务器上没有找到请求的资源
  • 500 internal sever error 表示服务器端在执行请求时发生了错误
  • 503 service unavailable 表明服务器暂时处于超负载或正在停机维护,无法处理请求

3 常见文件格式

  • text/html: HTML格式
  • text/plain:纯文本格式
  • image/jpeg:jpg图片格式
  • application/json: JSON数据格式
  • application/x-www-form-urlencoded: form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据格式)
  • multipart/form-data: 在表单中进行文件上传时使用

2.2.5 Web缓存

2.2.6 条件GET方法