HTTP简介

主要内容:

  • Web客户端与服务端是如何通信的
  • HTTP报文格式
  • 底层TCP网络传输

1.1 Web客户端和服务端

Web资源都是存储在Web服务器上的,因为Web服务器使用HTTP通信,以此也成为HTTP服务器。HTTP客户端发出HTTP请求,服务端会根据客户端传输的数据,作出HTTP响应发送请求的数据。如图 1-1 所示,HTTP客户端和HTTP服务端工作原理:


image.png
  • Web服务器是Web资源的仓库,资源包含任意内容:文本文件、HTML文档、Word文件、图片、视频等。但是资源不一定非得是像前面提高的静态文件,也可以是根据Web应用程序生成的动态内容,比如数据库中里的数据。
  • Web客户端,浏览器是一种我们经常使用到的Web客户端,其中还可以是手机原生应用、小程序等。也可以说能实现发送HTTP请求的程序都可以是Web客户端。

1.2 URI

每一个Web服务器资源都有一个名字,这样客户端才可以说明它想要的是什么资源。服务器资源名称被称为统一资源标识符(Uniform Resource Identifier, URI)。

  • URI的一般格式:
<方案名称>:<分层部分>[? <查询参数>] [# <片段>]

统一资源定位符(URL)是资源标识符最常见的形式。如图 1-2 为URL实例:

image.png

1.3 HTTP报文

HTTP是一种请求-响应协议,HTTP报文是由一行一行的简单字符串组成的,都是纯文本,易读。HTTP报文格式:

  • 起始行
    报文的第一行,在请求报文中用来说明要做什么,在响应报文中说明出现了什么。
  • 首部字段
    起始行后面有零个或者多个首部字段。每个字段都包括一个名字和值。两者之间用冒号(:)分隔。首部以空行结束。
  • 主体
    空行之后就是可选的报文主体,其中包含了所有类型的数据。

HTTP报文实例:

  • 请求报文
GET /index.html HTTP/1.0                       起始行
Accept: text/*                                 首部
Accept-Language: en, fr
  • 响应报文
HTTP/1.0 200 OK                                  起始行
Content-type: text/plain                         首部
Content-length: 19

Hi, I am index                                   主体

1.4 事务

1.4.1 HTTP请求方法

请求方法是起始行中的第一个单词,指明了客户端要对资源进行的操作。
常见的HTTP方法:

  • GET:命令服务器返回指定资源
  • POST:命令服务器将报文主体中的数据传递给URI指定的资源。
  • PUT:命令服务器将报文主体中的数据设置为URI指定的资源。
  • DELETE:命令服务器删除URI指定资源

1.4.2 HTTP响应

HTTP响应报文是对HTTP请求报文的回复。跟HTTP请求报文一样,也是一些列的文本组成。
状态码:

  • 1xx:情报状态码。
  • 2xx: 成功状态码。
  • 3xx:重定向状态码。
  • 4xx:客户端错误状态码。
  • 5xx:服务端错误状态码。

一个Telnet实例

GET /index.html HTTP/1.1 

HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 14615
Content-Type: text/html
Date: Mon, 19 Aug 2019 08:57:08 GMT
Etag: "5d54da0d-3917"
Last-Modified: Thu, 15 Aug 2019 04:05:33 GMT
P3p: CP=" OTI DSP COR IVA OUR IND COM "
Pragma: no-cache
Server: BWS/1.1
Set-Cookie: BAIDUID=668FD107459E334256837E510A760274:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: BIDUPSID=668FD107459E334256837E510A760274; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Set-Cookie: PSTM=1566205028; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
Vary: Accept-Encoding
X-Ua-Compatible: IE=Edge,chrome=1




    
    
    
    
    
    
    
    
    
    
    百度一下,你就知道
    
    
    
    
    
    
    

参考文献:

  • 《HTTP权威指南》

你可能感兴趣的:(HTTP简介)