HTTP概述

来源:互联网 发布:软件开发包括哪些 编辑:程序博客网 时间:2024/06/07 01:25

场景:想象一下你是木叶村的火影,现在你想同砂忍村的风影建交。你必须指派一名忍者来传达建交文书,为确保文书的完好,你指派的忍者必须非常可靠,无论遇到多么危险的情况,都能准确完好地将文书传达到风影手里。这名忍者叫卡卡西,啊不,叫HTTP(数据传输协议)。

现在知道了吧,HTTP就是一个可靠的信使。即使你在北极,将数据传达到南极,HTTP也会完整地将数据传递过去。

在Web世界中,不是影和影的建交,而是客户端和服务器的交流。因此,HTTP就是这两只之间送信跑腿的。简单的流程就是:客户端指派一名HTTP,带着文书(报文)去服务器那提出请求,服务器处理请求后,又指派一名HTTP带着处理结果的文书(报文)回到客户端。

具象化就是:你在浏览器中(客户端)输入http://www.zhihu.com/index.html。翻译过来就是:你指派一个http,前去一个人称www.zhihu.com的影(服务器主机)那,要一个叫作index.html卷轴。如果成功了,这个影就会将这份卷轴的详细信息做出一个文书(报文),派一个HTTP送回到你的浏览器你中。

说一下资源,能产生内容的就是资源。资源可以是静态的文本,图片,视频,反正就是有用的东西。像上面的http://www.zhihu.com/index.html就是一个资源。
Web内容都是存储在Web服务器里的,而资源产生内容。因此Web服务器其实就是装各种资源的大金主啊。

对于每一个资源,当然应该要有名字来称呼它,否则怎么能精确地找出你想要的是哪个资源呢?所以,我们就有了URI(统一资源标识符),标识就是名字的意思。URI又有2这种格式,一种是根据位置定位来称呼的,比如小明家的地址是幸福街189-1号,你就可以用幸福街189-1号来定位小明家。第二种就直接了,直接用名字来命名。想找小明家就输入“小明家”。现在第一种比较普遍和常用,就是我们熟悉的网址(网络上的地址)来定位资源。格式就是

协议+主机名+端口+资源     #没设端口就用默认端口http://www.zhihu.com/index.html  #这里没设端口,就用默认端口

请求方法(客户端的命令)

身为客户端,当你派出一名HTTP去服务器那时,你不可能什么都不嘱咐的,你必须得告诉服务器你想要的是什么。你可以传达5种命令给服务器

  1. GET 获取数据
  2. POST 提交数据给服务器,用于表单
  3. PUT 创建或修改资源
  4. DELETE 删除资源
  5. HEAD 获取响应的首部

状态码(服务器的响应)

对于客户端的请求,服务器会做出处理结果,我们称为状态码。
状态码是一个三位数字的代码,告知客户端请求是否成功。

HTTP状态码 描述 200 成功处理 302 重定向 404 没找到

当然,每一个状态码后面会跟着一个原因短语,像:
200 ok
200 Success

报文

上面我们知道,HTTP只是个跑腿的信使,他传达的是他手里的文书,Web世界里叫报文。这些报文作为官方文书,当然要有一定的格式了。

MIME类型

MIME标记多媒体内容,什么图片啊,电影啊,视频啊,文字啊等等。
Web**服务器**会为所有的HTTP对象数据附加一个MIME类型。
意思是服务器的报文封面必须加上一个MIME类型。然后浏览器收到报文后,先看下封面的MIME类型,看看是否是自己需要的,是否是自己能处理的。

MIME印记格式
Content-type = 对象类型/子类型
如Content-type = image/jpeg

来学学各个印记的结印手法

  • HTML文本: text/html
  • ASCII纯文本: text/plain
  • JPEG格式的图片: image/jpeg
  • GIF格式的图片: image/gif
  • Apple的QuickTime电影: video/quicktime

现在来看下报文的格式

起始行 首部 主体

对于客户端来讲

  • 起始行:要做什么 (请求方法,资源名, HTTP版本)
  • 首部:用户代理,主机,接受的格式,语言等
  • 主体:可选的,主要是数据内容(GET不用)

对于服务器来讲

  • 起始行:处理结果(HTTP版本, 状态码, 原因短语)
  • 首部: MIME类型,长度等
  • 主体:响应的数据内容

具体的实例可以自己去看

连接(TCP)

忘了一个很重要的事,上面提到我们有了可靠的信使HTTP能够准确地到达对方那,但是如何能让手中的报文准确地到达对方手里呢?就是说准确地让对方明白我的意思,不能误解我的含义。这时候聪明可靠的信使HTTP使用了一种叫作TCP的方式,他说一句,确认对方完全理解了,再说下一句。直到整个报文读完。这叫做面向连接,即TCP传输控制协议,重点在于“控制”。

我们上面举的例子是通过声音来连接交流的,即
我:你听到我说的话吗?
对方:听到了
我们就建立了连接。

下面是HTTP的方式,建立一个TCP/IP的连接

ADDR = (HOST, PORT) #获取对方的主机名和端口号

主机名端口号怎么获取?浏览器中的网址就包含了主机名和端口
http://www.zhihu.com/index.html
www.zhihu.com 通过DNS(域名服务)来转化为IP地址
端口没有标注的话就用默认端口
通过一个网址就可以获取主机名和端口了。
有了IP地址和端口号,就可以像之前那样通过socket来建立TCP/IP连接

以上便是介绍了Web结构中最重要的两个应用程序(Web浏览器和Web服务器)。

当然也有很多其他的Web应用程序

  • 代理 中介商,接收客户单请求,将请求转发给服务器
  • 缓存 常用的内容存储在离客户端很近的缓存里,方便快捷下载
  • 网关 用于将HTTP流量转换成其他协议,比如FTP
  • 隧道 用于盲转发
  • Agent代理 代表用户发起HTTP请求的客户端程序,如浏览器
0 0
原创粉丝点击