HTTP总结

少于 1 分钟 阅读

HTTP相关概念

1.1.HTTP优点

其是可靠的数据传输协议,在传输的过程中不会被破坏或产生混乱。

1.2.Web客户端和服务器

web客户端要想得到服务器的数据,就要将需要的请求发送给服务端,服务端根据你的请求,返回你需要的数据。例如你想要android开发者官网主页的数据,那么你则需要向https://developer.android.google.cn发送一个请求,比如/index.html。然后你就可以获得到服务端就会把你需要的页面发送给你。

1.3.资源

web资源是web内容的源头。资源可以是静态文件,也可以是动态文件。静态的可以是各种已经固定内的文件,比如一个文本文件、HTML文件、word文件等。动态的文件则是根据你的身份、请求信息或者不同时间去请求等信息去产生你需要的内容。例如新浪微博主页。

1.3.1.媒体类型

为了区分数千中不同的数据类型,HTTP会仔细的为每种要通过Web传输的对象都打上了名MIME类型的数据格式标签。其作用是用来描述并标记多媒体内容。

当web浏览器从服务器取回一个对象时,会去查看相关的MIME类型,以此来决定如何处理这个对象

MIME类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。

  • HTML格式:text/html
  • ASCII文本:text/plain
  • JPEG图片:image/jpeg
  • GIF图片:image/gif

因为常见MIME就有数百种,试验性的更过,想了解更过类型可以参考MIME 参考手册

1.3.2.URI

统一资源标识符,有两种类型

  • URL:统一资源定位符
  • URN:统一资源名

URL描述了一台特定服务器上某资源的特定位置,可以明确的说明如何从一个精确、固定的位置获取资源

URN是作为特定内容的唯一名称使用的,与目前的资源所在地无关。所以就可以讲资源四处搬移。URN正处于实验阶段,未大范围使用。

1.4.事务

一个HTTP事务由一条请求命令和一个响应结果组成。

1.4.1.方法

HTTP支持几种不同的请求命令,这些命令被成为HTTP方法。

HTTP方法 描述
GET 从服务器向客户发送命名资源
PUT 将来自客户端的数据存储到一个命名的服务器资源中去
DELETE 从服务器中删除命名资源
POST 将客户端数据发送到一个服务器网关应用程序中
HEAD 仅发送命名资源响应中的HTTP首部

1.4.2.状态码

每条HTTP响应报文返回时都会携带一个状态码。使用三位数字告诉客户端请求是否成功或者是否采取其他动作。伴随每个数字状态码,HTTP还会发送一条解释性的“原因短语”文本。主要是为了进行描述

1.5.报文

HTTP报文是由一行一行的简单字符串组成,为纯文本,不是二进制代码。从客户端发送到服务器的HTTP报文成为请求报文 。从服务器发往客户端的报文称为响应报文

HTTP报文包括一下三部分:

  • 起始行:报文的第一行就是起始行,在请求报文中用来说明用来做些什么,在响应报文中说明出现了什么情况。
  • 首部字段:起始行后面有零个或多个部首字段。每个部首字段都包含一个名字和一个值,为了便于解析,两者之间用冒号分隔。首部以一个空行结束。添加一个首部字段和添加新行一样简单
  • 主体:空行之后是可选的报文主体了,其中包含了所有类型的数据。请求主体中包含了要发送给web服务器的数据;响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,主体却不同,主体中可以包含任意的二进制数据。主体中也可以包含文本

1.6.连接

1.6.1.TCP/IP

HTTP是应用层协议。所以HTTP无需操心网络通信的具体细节;他把联网的细节都交给了通用、可靠的因特网传输协议TCP/IP。

TCP提供:

  • 无差别的数据传输
  • 按序传输
  • 末分段的数据流

只要建立了TCP连接,客户端和服务端之间的报文交换就不会丢失、不会被破坏,也不会在接受时出现错序。

1.6.2.连接、IP地址及端口号

在HTTP客户端向服务器发送报文之前,需要用网际协议地址和端口号的客户和服务器之间建立一条TCP/IP连接。

建立一条TCP连接过程和打电话类似。首先要拨打电话号码,然后在选择分机号。IP就像电话号码,端口号就像分机号

连接步骤:

  1. 浏览器从URL中解析出服务器的主机名
  2. 浏览器将服务器的主机名转换成服务器的IP地址
  3. 浏览器将端口号(如果有)从URL中解析出来
  4. 浏览器建立一条与Web服务器的TCP连接
  5. 浏览器想服务器发送一条HTTP请求报文
  6. 服务器向浏览器回送一条HTTP响应报文
  7. 关闭连接,浏览器显示文档

协议版本