WWW之HTTP协议分析

1.WWW简介

在现在的网络体系结构中,最底层的物理层,自下而上分别是数据链路层,网络层和传输层。数据链路层的规范最常见的是以太网,网络层是IP,传输层是TCP和UDP协议,最上面一层是应用层。应用层的协议包括FTP,HTTP等等。下面的这个图就说明了当前网络的架构(在这个图中,对于物理层和数据链路层的抽象程度比较高,但是没有关系,我们主要的目标是在L3,L4和L5上):

应用层和传输层之间的接口是SOCKET。在本文中,我们主要将精力放在HTTP中。我们通常所讲的WWW(World Wide Web)的含义是指一种采用Client/Server架构的分布式系统。Client通过浏览器(Browser)来访问Server。Server则拥有大量的文件供Client,这些文件采用Web Page的方式呈现给Client。下图所示就是client和server之间通信的方式。



在这里简要的提一下超文本和超媒体的概念,超文本(HyperText)和HyperMedia是指在文件中存在指向其他文件的连接的文件。接下来在简要的介绍一个我们通常所使用的浏览器的结构。浏览器通常包括protocols、controler以及interpreters三个组成部分。protocols是指浏览器支持的协议,controller顾名思义是控制端,比如你按下了一个按钮,interpreters是指浏览器对来自服务器的文件的解释器,现在最常用的是HTML,JavaScript以及Java。下图就是浏览器通常采用的架构。



我们通常在浏览器的命令行敲进的东西(比如www.xiaonei.com)叫做URL。URL是获取服务器上资源的指针,通过URL就可以定位到服务器上的资源。URL通常采用以下的格式



protocol是指的获取资源采用的协议,比如TELNET, FTP HTTP等。host是指服务器的域名(请查阅DNS),端口是指服务器提供某项服务器指定的访问端口比如80,path是指资源在服务器上的路径。port是可选的。

存储在服务器上的文件分为三类,静态文件(static document)、动态文件(Dynamic documents)以及主动文件(Active documents)。静态文件是指的文件是“不变的”,例如某一张图片,静态文件通过HTML,XML,XHTML以及XLS等语言描述。动态文件时服务器在接收客户端的请求参数之后动态生成的。假如动态文件的所有部分都重新生产则是低效率的,因为文件的,某些部分是静态的。于是一些script语言变诞生了,scripts嵌入在HTML等静态文件中,服务器只需要运行这些scripts片段就可以了。最常用的scripts包括Hypertext Preprocessor (PHP), which uses the Perl language; Java Server Pages (JSP), which uses the Java language for scripting; Active Server Pages (ASP), a Microsoft product。主动文件是指有时候客户端一侧需要运行一些程序来达到某些目的(比如非常不错的画面),则服务器在返回给客户端的HTML文件中可以嵌入Java Applet或者JavaScript的片段。然后有客户端的浏览器运行则效果便产生了。

2. HTTP协议

HTTP协议是使用TCP的一种协议,在服务器端通过80端口传输。HTTP消息分为Request和Response两种。HTTP 通信的方式:


其中Request消息的格式是:


第一行成为Request line,包括Method、空格sp、访问server的URL、HTTP版本,以及回车(CR)和换行(FL)组成。其中Method字段比较重要,其具体含义如下图所示:


个人认为该表格中的PUT错了,应该是sends a document from the client to server,具体参考件HTTP RFC。接下来就是HTTP的header lines了:


最后就是HTTP body了,里面才是数据。数据的大小可以通过IP包的长度减去ip头的长度(通常20字节)以及TCP头长度以及HTTP头长度来获得。

HTTP Response的格式和HTTP Request类似。如下图所示:


Status line 包括HTTP版本号 空格 状态字 空格 Phrase是对状态字Status的文本解释。然后是回车和换行。

Status code以及Phrase如下图所示:


HTTP Response header names 及其意义如图所示:


最后是HTTP Response 的body,其大小可以采用相同的方式获得。



参考文献

[1] Hypertext Transfer Protocol-HTTP1.1:http://www.w3.org/Protocols/rfc2616/rfc2616.html

[2] TCP/IP Protocol Suite by Foruzan


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值