关于HTTP RFC的理解与心得
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连接并不会立刻关掉,一般会等到客户端关闭或者服务器主动关掉