应用层与HTTP协议

我们日常生活中熟悉的应用程序就是建立在应用层之上的。应用层协议( application- layer protocol)定义了运行在不同端系统上的应用程序进程如何相互传递报文。特别是应用层协议定义了:
●交换的报文类型,例如请求报文和响应报文。
●各种报文类型的语法,如报文中的各个字段及这些字段是如何描述的。
●字段的语义,即这些字段中包含的信息的含义。
●一个进程何时以及如何发送报文,对报文进行响应的规则。
有些应用层协议是由RFC文档定义的,因此它们位于公共域中。例如,Web 的应用层协议HTTP (超文本传输协议[ RFC 2616])就作为一个RFC可供使用。如果浏览器开发者遵从HTTP RFC规则,所开发出的浏览器就能访向任何遵从该文档标准的Web服务器并获取相应Web页面。还有很多别的应用层协议是专用的,有意不为公共域使用。例如,Skype使用了专用的应用层协议。
区分网络应用和应用层协议是很重要的。应用层协议只是网络应用的一部分。比如,Web是一种客户—服务器应用,它允许客户按照需求从Web服务器获得文档。该Web应用有很多组成部分,包括文档格式的标准(即HTML)、Web 浏览器( 如Firefox和Microsoft Internet Explorer) 、Web服务器(如Apache、Microsoft 服务器程序),以及一个应用层协议。Web 的应用层协议是HTTP,它定义了在浏览器和Web服务器之间传输的报文格式和序列。因此,HTTP只是Web应用的一个部分。

一、HTTP

HTTP全称是HyperText Transfer Protocal,即超文本传输协议,从1990年开始就在WWW上广泛应用,是现今在WWW上应用最多的协议,HTTP是应用层协议,当你上网浏览网页的时候,浏览器和web服务器之间就会通过HTTP协议在Internet上进行数据的发送和接收。HTTP是一个基于请求/响应模式的、无状态的协议。即我们通常所说的Request/Response。

每天,都有数以亿万计的JPEG图片、HTML页面、文本文件、MPEG电影、WAV音频文件、Java小程序和其他资源在因特网上游弋。HTTP可以从遍布全世界的Web服务器上将这些信息块迅速、便捷、可靠地搬移到人们桌面上的Web浏览器上去。
HTTP使用的是可靠的数据传输协议,因此即使数据来自地球的另一端,它也能够确保数据在传输的过程中不会被损坏或产生混乱。这样,用户在访问信息时就不用担心其完整性了。而对因特网应用程序开发人员来说也同样如此,因为这样就无需担心HTTP通信会在传输过程中被破坏、复制或产生畸变。开发人员可以专注于应用程序特有细节的编写,而不用考虑因特网中存在的一些缺陷和问题。


1.HTTP方法

HTTP支持几种不同的请求命令,这些命令被称为HTTP方法(HTTP method). 每条HTTP请求报文都包含一个方法。这个方法会告诉服务器要执行什么动作(获取一个 Web页面、运行一个 网关程序、删除-一个文件等)。 下表列出了五种常见的HTTP方法。

 2.状态码

每条HTTP响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。下表显示了几种常见的状态码。

 

 

 

 3.报文

HTTP报文是由一行一行的简单字符串组成的。HTTP 报文都是纯文本,不是二进制代码,所以人们可以很方便地对其进行读写。

从Web客户端发往Web服务器的HTTP报文称为请求报文(requestmessage)。从服务器发往客户端的报文称为响应报文(responsemessage),此外没有其他类型的HTTP报文。HTTP请求和响应报文的格式很类似。
HTTP报文包括以下三个部分。

●起始行
报文的第一行就是起始行,在请求报文中用来说明要做些什么,在响应报文中说明出现了什么情况。
●首部字段
起始行后面有零个或多个首部字段。每个首部字段都包含一个名字和一个值,为了便于解析,两者之间用冒号(:) 来分隔。首部以一个空行结束。
●主体
空行之后就是可选的报文主体了,其中包含了所有类型的数据。请求主体中包括了要发送给Web服务器的数据:响应主体中装载了要返回给客户端的数据。起始行和首部都是文本形式且都是结构化的,而主体则不同,主体中可以包含任意的二进制数据(比如图片、视频、音轨、软件程序)。当然,主体中也可以包含文本。

下图显示了一个简单事务所使用的HTTP报文。

下图显示了某个简单事务的一部分的HTTP报文。浏览器发送了一条HTTP请求报文。这条请求的起始行中有一个GET命令,且本地资源为/tools.html。这条请求说明它使用的是1.0 版的HTTP协议。请求报文没有主体,因为从服务器上GET一个简单的文档不需要请求数据。服务器会回送一条HTTP响应报文。这条响应中包含了HTTP的版本号(HTTP/1.0).一个成功状态码(200)、 一个描述性的原因短语(OK), 以及一块响应首部字段,在所有这些内容之后跟着包含了所请求文档的响应主体。Content -Length首部说明了响应主体的长度,Content - Type首部说明了文档的MIME类型。

4.连接,IP地址与端口号 

 HTTP是个应用层协议。HTTP无需操心网络通信的具体细节:它把联网的细节都交给了通用,可靠的因特网传输协议TCP/IP。因特网自身就是基于TCP/IP的,TCP/IP是全世界的计算机和网络设备常用的层次化分组交换网络协议集。TCP/IP 隐藏了各种网络和硬件的特点及弱点,使各种类型
的计算机和网络都能够进行可靠地通信。只要建立了TCP连接,客户端和服务器之间的报文交换就不会丢失、不会被破坏,也不会在接收时出现错序了。
用网络术语来说,HTTP协议位于TCP的上层。HtTP使用TCP来传输其报文数据。与之类似,TCP则位于IP的上层。

在HTTP客户端向服务器发送报文之前,需要用网际协议(Internet Protocol, IP)地址和端口号在客户端和服务器之间建立一条TCP/IP连接。通过DNS可以查询到目标服务器的IP地址。有了IP地址和端口号,客户端就可以很方便地通过TCP/IP进行通信了。下图显示了浏览器是怎样通过HTTP显示位于远端服务器中的某个简单HTML资源的。

  整个过程的步骤大致如下:

(a)浏览器从URL中解析出服务器的主机名:
(b)浏览器将服务器的主机名转换成服务器的IP地址:
(C)浏览器将端口号(如果有的话)从URL中解析出来;
(d)浏览器建立一条与Web服务器的TCP连接;
(e)浏览器向服务器发送一条HTTP请求报文:
(f)服务器向浏览器回送一条HTTP响应报文:
(g)关闭连接,浏览器显示文档。

二、HTTP协议版本

HTTP协议有几个版本,如下所示。
●HTTP/0.9
HTTP的1991原型版本称为HTTP/0.9。这个协议有很多严重的设计缺陷,只应该用于与老客户端的交互。HTTP/0.9 只支持GET方法,不支持多媒体内容的MIME类型、各种HTTP首部,或者版本号. HTTP/0.9定义的初衷是为了获取简单的HTML对象,它很快就被HTTP/1.0取代了。
●HTTP/1.0
1.0是第一个得到广泛使用的HTTP版本。HTTP/1.0 添加了版本号、各种HTTP首部、一些额外的方法,以及对多媒体对象的处理。HTTP/1.0 使得包含生动图片的Web页面和交互式表格成为可能,而这些页面和表格促使万维网为人们广泛地接受。这个规范从未得到良好地说明。在这个HTTP协议的商业演进和学术研究都在快速进行的时代,它集合了一系列的最佳实践。
●HTTP/1.0+
在20世纪90年代中叶,很多流行的Web客户端和服务器都在飞快地向HTTP中舔加各种特性,以满足快速扩张且在商业上十分成功的万维网的需要。其中很多特性,包括持久的keep-alive连接、虚拟主机支持,以及代理连接支持都被加入到HTTP之中,并成为非官方的事实标准。这种非正式的HTTP扩展版本通常称为HTTP/1.0+。
●HTTP/1.1
HTTP/1.1重点关注的是校正HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,井删除一些不好的特性。HTTP/1.1 还包含了对20世纪90年代末正在发展中的更复杂的Web应用程序和部署方式的支持。HTTP/1.1是当前使用的HTTP版本。

三、HTTPS

 HTTPS是超文本传输安全协议(HTTPS,常称为 HTTP over TLS/SSL),是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。HTTPS 开发的主要目的,是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值