搬砖,翻译自原文https://dev.opera.com/articles/http-basic-introduction/
介绍
在不丹,当人们见面是,他们通常打招呼的方式是“你身体好吗?”在日本他们获取会鞠躬,视情况而定。在阿曼,人们经常在握手后轻吻对方的鼻子。在柬埔寨和泰国,他们双手合十像祈祷那样。所有这些通信(交流)协议,一个简单的代码序列都是有意义和准备方进行有意义的交换。
在网络上,我们有一个非常有小的应用协议,他为世界各地的电脑准备有意义的交换:超文本传输协议(Hypertext Transfer Protocol)。HTTP是一个在TCP/IP之上的应用级的协议,一个通信(交流)协议。在教web设计和开发时,HTTP似乎经常被遗忘,这是一个遗憾:理解它将有主意定义更好的用户交互,实现更好的站点性能,并未管理网络上的消息创建有效的工具。
这是一系列文章的第一篇,目的是教HTTP基础和我们怎样更有效的使用它。在这片文章我们将要看看HTTP适合于用在网络机器哪里。
什么是一个通信协议?
在了解详细之前,我们想象一下一个基本的交流情景。为了能够交流,需要两个部分(软件,设备,人等等):
- 语法(数据格式和编码)
- 语义(控制信息和错误处理)
- 时间(速度匹配和排序)
当2个人见面时,他们使用一种通信(交流)协议:例如,在日本,一个人会用身体做出具体的姿势。其中一种姿势就是鞠躬,这就是交互中用到的“语法”。在日本文化中,鞠躬的姿势于问候某人的“语义”相关。最后当一个人向另一个人鞠躬时,在特定的“时间内”已经在两者之间建立了一系列的时间。

一个在线的通信协议包含一样的元素。语法是字符的序列,比如我们用于编写协议的关键字,语义是与这些关键字相关联的意义,最后时间是两个或多个实体交换这些关键字的顺序。
HTTP适用于机器的什么地方呢?
HTTP 运行于其他协议之上。等连接到到一个网站时,比如www.example.org,用户代理使用TCP/IP协议套件,TCP/IP模型设计与1970,有四个不同的层面:
- Link 描述了对物理媒介的访问(如:使用网卡)
- Internet 描述了对数据的封装和路由 — 它是怎么包装的(IP)
- Transport 描述数据从起点传递到最终目的地的方式(TCP,UDP)
- Application 描述了传输的信息的意义或者格式(HTTP)
HTTP 是一个位于通信协议之上的应用协议(application protocol)。记住这一点很重要。将模型分离为独立的层有助于发展平台的各个部分,而不必重写所有内容。比如,TCP,一个传输协议,可以不用去修改应用协议HTTP就能发展。在实践中,当我们追求高性能通信时,这些细节变得有点难看。在前几篇HTTP文章中,我们将重点讨论在TCP/IP模型中定义的层的分离。HTTP被定义为通过HTTP消息在两个软件之间通信信息。我们塑造和设计这些消息的方式会对客户端(例如浏览器)、服务器(web站点)及其中介(代理)产生影响。
让我们访问服务器
端口80是连接到Web服务器的默认端口.我们可以自己用shell试试。打开命令行,用一下的命令,尝试打开一个连接到www.opera.com 的80端口
telnet www.opera.com 80
你会得到像下面的输出:
Trying 195.189.143.147...
Connected to front.opera.com.
Escape character is '^]'.
Connection closed by foreign host
我们可以看到终端正在尝试与位于IP地址195.189.143.147的服务器进行通信。如果我们不做任何其他事情,服务器将自己关闭连接。使用不同的端口和不同的通信协议是完全可能的,但这些是最常见的。
让我们讲一点HTTP
步骤1:用win + r 打开cmd
步骤2:在cmd中执行www.opera.com 80
, 然后可以看到一个黑色的框框
步骤3: 然后按 ctrl + ], 退出, 结果为:
欢迎使用 Microsoft Telnet Client
Escape 字符是 'CTRL+]'
Microsoft Telnet>
步骤4: 然后按enter, 进入到输入框, 又是黑漆漆的一片
步骤5:输入如下内容(有时间限制, 所以最好是先写好, 然后整体拷贝进去)
GET / HTTP/1.1
Host: www.opera.com
这个消息指定了:
- GET:我们希望去获取消息的代表。
- /:我们希望获取存在站点根目录下的信息。
- HTTP/1.1 我们使用的是HTTP 1.1版本。
- 我正在尝试访问一个具体的网站。
- www.opera.com :网站的名称
步骤6:然后连续按两下enter键盘, 得到的结果为:
HTTP/1.1 200 OK
Date: Wed, 23 Nov 2011 19:41:37 GMT
Server: Apache
Content-Type: text/html; charset=utf-8
Set-Cookie: language=none; path=/; domain=www.opera.com; expires=Thu, 25-Aug-2011 19:41:38 GMT
Set-Cookie: language=en; path=/; domain=.opera.com; expires=Sat, 20-Nov-2021 19:41:38 GMT
Vary: Accept-Encoding
Transfer-Encoding: chunked
<!DOCTYPE html>
<html lang="en">
…
这里服务器说:“我说的是HTTP 1.1版本。你的请求成功了,所以我回复了代码200。OK字符串是可选的,用来解释这段代码对人类的意义——在这种情况下,一切正常,我们的消息被接受了。然后发送一系列HTTP头来描述消息是什么,以及应该如何理解它。最后,包含位于站点根目录的页面内容,以<!DOCTYPE html >。下面几篇文章将解释HTTP谓词和代码列表。

总结
我们刚刚谈了HTTP -它是如此简单!我们发送了一个信息(就像写信一样),我们收到了一个答复,因为我们的信息被理解了。下次我们将详细探讨这些标题的含义以及它们可以用于什么
网友评论