首页 > 技术文章 > 关于HTTP RFC的理解与心得

hamac 2019-02-26 19:45 原文

HTTP简单介绍:

客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。

HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议集中的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程以及数据本身的格式。HTTP协议的版本:HTTP/1.0、HTTP/1.1。HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。深入理解HTTP协议,对管理和维护复杂的WEB站点、开发具有特殊用途的WEB服务器程序具有直接影响。

 

HTTP请求步骤:

 

1.从url中读取主机名

 

2.利用DNS(domain name service)对主机名进行转换,得到IP地址

 

3.如果有端口号的话,读取端口号

 

4.根据IP地址和端口号,建立与服务端的TCP(transmission control protocol)/IP连接

 

5.往服务端发送请求报文

 

6.客户端得到响应报文

 

7.断开连接

URL

URL:提供了定位因特网任意资源的手段,每一个资源都有一个唯一的url.

 

一个url由下面的格式组成:

 

  <schema>://<user>:<password>@<host>:<post>/<path>;<params>?<query>#<frag>

 

一般,常用的是schema,host和path

 

例如http://www.baidu.com:80/index.html,http说明了用http协议,www.baidu.com为主机名,80为端口号,/index.html表示资源在服务器的路径

 

参数(params)的作用: 解析url的时候可能需要这些参数来访问资源。例如,我们想通过ftp协议来访问图片,希望以二进制的形式来返回图片信息。就可以通过

 

  ftp://prep.ai.mit.edu/pub/gnu;type=d

 

  这样解析url的应用程序就可以通过读取参数来更好的访问资源,达到用户所想达到的结果

 

查询字符串(query)的作用:例如我们想获取id=5和author=cjg的那篇文章(多个参数,用&隔开),我们可以通过访问

 

  http://myblog.com/passages?id=5&author=cjg

 

  这样,就可以根据id这个值来返回实际需求的数据

报文流

 

流入(inbound):报文流入源端服务器

 

流出(outbound): 响应报文流回客户端

 

上游(upstream),下游(downstream): 至于发送者与接收者有关,发送者在上游,接收者在下游报文组成部分: 起始行(start line),首部(header),主体(body)

报文分为请求报文和响应报文

请求报文格式:

<method> <request-URL> <version>

<headers>

<entity-body>

响应报文格式:

<version> <status> <reason-phrase>

<headers>

<entity-body>

请求行:方法表明了本次请求的方法(GET/POST), URL表明请求的资源的地址

响应行: 版本号 状态码 以及结果原因

HTTP的连接方式

  1.串行连接

  2.并行连接

  3.持久连接:在完成TCP传输后,TCP连接并不会立刻关掉,一般会等到客户端关闭或者服务器主动关掉

 

推荐阅读