网络学习日志(二)---http协议四个方面的特性

上一篇 / 下一篇  2009-07-14 17:32:42 / 个人分类:网络

由于有个项目涉及到TCP、HTTP、Soap的一些东西,于是回顾了一下以前曾经学过的东西,并学到了一些新东西,以此记录。根据我的逐步学习过程,分了以下5个部分。

1.由netstat查看网络情况,引出的TCP建立连接、终止连接过程,以及TCP状态分析;

2.Soap=XML+HTTP引出的HTTP协议回顾;

3.Soap(Simple Object Access Protocol)简单对象访问协议分析及应用;

4.番外一:awk的使用

5.番外二:Linux下抓包工具

-----------------------------篇二----------------------------------------------

一:HTTP协议几个要点

  参考文献:http://www.cnblogs.com/gpcuster/archive/2009/05/25/1488749.html

  HTTP协议,像pop3、smtp、ftp协议一样,都是应用层的一些通信规范,它运行在TCP之上,对通信数据格式、连接方式等做了一定的规范:

1.Request和Response的格式

Request格式:

HTTP请求行(get还是post,协议版本)

(请求)头(包括host、charset、connection等属性)

空行

消息体

 

Response格式:

HTTP应答行(协议版本、返回状态码:200还是404等)

(应答)头(包括content-type、encoding、length等属性)

空行

消息体

 

  详细的信息请参考:RFC 2616

    HTTP headers的简要介绍,请查看:Quick reference to HTTP headers

2.建立连接的方式

  从应用层看,HTTP协议是无连接的,不需要connect才传输数据,直接向服务器发送Request,然后服务器返回结果。

  HTTP支持2中建立连接的方式:非持久连接和持久连接(HTTP1.1默认的连接方式为持久连接)。是否持久连接,可以通过抓包看到,如果Request或者是Response的消息头中包含:Connection: Keep-Alive,表示持久连接;Connection: close表示非持久连接。

   非持久连接:

举例说明:非持久连接情况下,客户端向服务器端请求一个web页面的过程:

a.客户端初始化一个与服务器主机中http服务器的TCP连接;

b.HTTP客户端经由与TCP相关联的本地套接字发出一个HTTP请求消息;

c.HTTP服务器经由与TCP相关联的本地套接字接收这个请求,再经由一个套接字发出响应消息;

d.HTTP服务器告知TCP关闭这个TCP连接;

e.HTTP客户端经由一个套接字接收到这个响应消息,TCP连接随后终止;

f.假设该响应消息中经分析封装的为一个html页面,其中包含10个jpeg对象的引用,则为每一个引用重复以上五步;

   持久连接:

非持久连接的缺点:

a.客户端需要为每个请求建立并维护一个新的TCP连接,对于每个TCP连接,客户端和服务器端都需要分配TCP缓冲区,并维持TCP变量;

b.每个请求对象,都有2个RTT(Round-Trip Time)延迟,一个在建立TCP连接时发生,另一个在数据发送及应答时发生。(TCP连接建立的三次握手的前两次,是一个RTT,最后一次会与发送数据一起发送至对方服务器)。

在持久连接情况下,服务器在发出响应后让TCP连接继续打开着。同一对客户/服务器之间的后续请求和响应可以通过这个连接发送。HTTP服务器在某个连接闲置一段特定时间后关闭它,而这段时间通常是可以配置的。持久连接分为不带流水线(without pipelining)和带流水线(with pipelining)两个版本。

    HTTP1.1协议中,默认使用持久连接,如果需要非持久连接,则需要在http头中设置connetion参数为:Connection: close

3.缓存机制

(略)

4.响应授权激发机制

(略)


TAG:

 

评分:0

我来说两句

Open Toolbar