http
2014-02-05 21:17
204 查看
http协议的相关内容
Hypertext Transfer Protocol超文本传输协议。1990年开始在www上广泛应用,是现今在www上应用最多的协议,目前的版本为1.1
http是应用层协议,当上网浏览网页时,浏览器和服务器之间就通过http在Internet上发送和接收数据。
http是基于请求/响应模式的,无状态的协议(request/response based, stateless protocol)
浏览器与服务器通信的过程
http基于TCP协议
TCP是一个基于连接的协议,能够提供两台计算机之间的可靠的数据流。HTTP,FTP,Telnet等应用都需要这种可靠的通信通道。
http1.0
1、客户发起连接
2、客户发送请求
3、服务器响应请求
4、服务器关闭连接
在http1.0中,当连接建立后,浏览器发送一个请求,服务器回应一个消息,之后,连接就被关闭。当浏览器下次请求时,需重新建立连接,显然这种需要不断建立连接的通信方式开销比较大。早期web页面只包含html文本,因此即使连接开销比较大,也不会有太大的影响。而现在的web页面往往包含多种资源(图片,动画,声音),每获取一种资源,就建立一次连接,这样就增加了http服务器的开销,造成internet上的信息堵塞。
http1.1
1、客户发起连接
2、发送第1次请求
3、发送第n次请求
4、回送第1次请求
5、回送第n次请求
6、服务器关闭连接
持续连接(Persistent Connections)机制作为http1.1建立连接的缺省行为。浏览器可以建立一个连接后,发送请求并得到回应,然后继续发送请求并再次得到回应。而且,客户端还可以发送流水线请求,而不用等待每一个响应的到来。
http URL
统一资源定位符
格式:http://host [ : port ] [ abs_path ]
http表示通过http协议来定位网络资源
host表示合法的internet主机域名或IP地址(以点分十进制格式表示)
port用于指这定一个端口号,拥有被请求资源的服务器主机监听该监口的TCP连接。如果port是空,则使用缺省的端口80
abs_path指定请求资源的URI(Uniform Resource Identifier,统一资源标识符),如果URL中没有给出abs_path,当它作为URI时,必须以/的形式给出,通常这个工作浏览器帮我们完成了。
URL与URI
URI是一个符号结构,用于指定构成web资源的字符串的各个不同部分。
URL是一种特殊的URI,它包含了用于查找某个资源的足够信息。其它URI,例:mailto:zhangxiangbin@foxmail.com,则不属于URL,因为它里面不存在根据该标识符来查找的任何数据。这种URI成为URN(通用资源名)
http请求和响应
http请求
客户端通过发送http请求向服务器请求对资源的访问。
http请求由三部分组成:请求行,消息报头,请求正文。
请求行以一个方法符号开头,后面跟着请求URI和协议的版本,以CRLF作为结尾。请求行以空格分隔。除了作为结尾的CRLF外,不允许出现单独的CR和LF字符,格式如下:
Method Request-URI HTTP-Version CRLF
Method表求请求的方法,浏览器只支持GET和POST
Request-URI是一个统一资源标识符,标识了要请求的资源
HTTP-Version表示请求的HTTP协议版本
CRLF表示回车换行
GET /test.html HTTP/1.1(CRLF)
HTML文档中,get和post不区分大小写,但HTTP协议中的GET和POST只以胆大写形式。
1、GET
当我们通过在浏览器的地址栏中直接输入网址的方法去访问网页时,浏览器采用的是GET方法向服务器获取资源。
2、POST
POST方法用于向服务器发送请求,要求服务器接受附在请求后面的数据。POST方法在表单提交的时候用得最多。
POST /login.jsp HTTP/1.1(CRLF)
Accept:iamge/gif(CRLF)(...)
Host:www.sample.com(CRLF)(...)
...
Cache-Control:no=cache(CRLF)
(CRLF)
username=hello&password=123456
3、HEAD
HEAD方法与GET方法几乎是一样的,他们的区别在于HEAD方法只是请求消息头,而不是完整的内容。对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源的内容,就可以得到Request-URI所标识的资源的信息。这个方法通常用于测试超链接的有效 性,是否可以访问,以及最近是否更新等。
http响应
在接收和解释请求消息后,服务器会返回一个http响应消息。
三部分组成:状态行,消息报头,响应正文
状态行由协议版本,数字形式的状态代码,相应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF,不允许出现CR或LF字符。
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version表示服务器HTTP协议的版本
Status-Code表示服务器发回的响应代码
Reason-Phrase表示状态代码的文本描述
CRLF表示回车换行
HTTP/1.1 200 OK(CRLF)
http消息
HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行,消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。
对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行。
telnet
例子1
telnet www.baidu.com 80
GET /index.html HTTP/1.1
Host : www.baidu.com
HEAD /index.html HTTP/1.1
Host : www.baidu.com
例子2
TOMCAT
telnet localhost 8080
可多次发送下面的请求
HEAD / HTTP/1.1
Host : localhost
默认是持续连
Connection:Keep-Alive
如下则为短连接
Connection:close
Hypertext Transfer Protocol超文本传输协议。1990年开始在www上广泛应用,是现今在www上应用最多的协议,目前的版本为1.1
http是应用层协议,当上网浏览网页时,浏览器和服务器之间就通过http在Internet上发送和接收数据。
http是基于请求/响应模式的,无状态的协议(request/response based, stateless protocol)
浏览器与服务器通信的过程
http基于TCP协议
TCP是一个基于连接的协议,能够提供两台计算机之间的可靠的数据流。HTTP,FTP,Telnet等应用都需要这种可靠的通信通道。
http1.0
1、客户发起连接
2、客户发送请求
3、服务器响应请求
4、服务器关闭连接
在http1.0中,当连接建立后,浏览器发送一个请求,服务器回应一个消息,之后,连接就被关闭。当浏览器下次请求时,需重新建立连接,显然这种需要不断建立连接的通信方式开销比较大。早期web页面只包含html文本,因此即使连接开销比较大,也不会有太大的影响。而现在的web页面往往包含多种资源(图片,动画,声音),每获取一种资源,就建立一次连接,这样就增加了http服务器的开销,造成internet上的信息堵塞。
http1.1
1、客户发起连接
2、发送第1次请求
3、发送第n次请求
4、回送第1次请求
5、回送第n次请求
6、服务器关闭连接
持续连接(Persistent Connections)机制作为http1.1建立连接的缺省行为。浏览器可以建立一个连接后,发送请求并得到回应,然后继续发送请求并再次得到回应。而且,客户端还可以发送流水线请求,而不用等待每一个响应的到来。
http URL
统一资源定位符
格式:http://host [ : port ] [ abs_path ]
http表示通过http协议来定位网络资源
host表示合法的internet主机域名或IP地址(以点分十进制格式表示)
port用于指这定一个端口号,拥有被请求资源的服务器主机监听该监口的TCP连接。如果port是空,则使用缺省的端口80
abs_path指定请求资源的URI(Uniform Resource Identifier,统一资源标识符),如果URL中没有给出abs_path,当它作为URI时,必须以/的形式给出,通常这个工作浏览器帮我们完成了。
URL与URI
URI是一个符号结构,用于指定构成web资源的字符串的各个不同部分。
URL是一种特殊的URI,它包含了用于查找某个资源的足够信息。其它URI,例:mailto:zhangxiangbin@foxmail.com,则不属于URL,因为它里面不存在根据该标识符来查找的任何数据。这种URI成为URN(通用资源名)
http请求和响应
http请求
客户端通过发送http请求向服务器请求对资源的访问。
http请求由三部分组成:请求行,消息报头,请求正文。
请求行以一个方法符号开头,后面跟着请求URI和协议的版本,以CRLF作为结尾。请求行以空格分隔。除了作为结尾的CRLF外,不允许出现单独的CR和LF字符,格式如下:
Method Request-URI HTTP-Version CRLF
Method表求请求的方法,浏览器只支持GET和POST
Request-URI是一个统一资源标识符,标识了要请求的资源
HTTP-Version表示请求的HTTP协议版本
CRLF表示回车换行
GET /test.html HTTP/1.1(CRLF)
HTML文档中,get和post不区分大小写,但HTTP协议中的GET和POST只以胆大写形式。
1、GET
当我们通过在浏览器的地址栏中直接输入网址的方法去访问网页时,浏览器采用的是GET方法向服务器获取资源。
2、POST
POST方法用于向服务器发送请求,要求服务器接受附在请求后面的数据。POST方法在表单提交的时候用得最多。
POST /login.jsp HTTP/1.1(CRLF)
Accept:iamge/gif(CRLF)(...)
Host:www.sample.com(CRLF)(...)
...
Cache-Control:no=cache(CRLF)
(CRLF)
username=hello&password=123456
3、HEAD
HEAD方法与GET方法几乎是一样的,他们的区别在于HEAD方法只是请求消息头,而不是完整的内容。对于HEAD请求的回应部分来说,它的HTTP头部中包含的信息与通过GET请求所得到的信息是相同的。利用这个方法,不必传输整个资源的内容,就可以得到Request-URI所标识的资源的信息。这个方法通常用于测试超链接的有效 性,是否可以访问,以及最近是否更新等。
http响应
在接收和解释请求消息后,服务器会返回一个http响应消息。
三部分组成:状态行,消息报头,响应正文
状态行由协议版本,数字形式的状态代码,相应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF,不允许出现CR或LF字符。
HTTP-Version Status-Code Reason-Phrase CRLF
HTTP-Version表示服务器HTTP协议的版本
Status-Code表示服务器发回的响应代码
Reason-Phrase表示状态代码的文本描述
CRLF表示回车换行
HTTP/1.1 200 OK(CRLF)
http消息
HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。请求消息和响应消息都是由开始行,消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。
对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行。
telnet
例子1
telnet www.baidu.com 80
GET /index.html HTTP/1.1
Host : www.baidu.com
HEAD /index.html HTTP/1.1
Host : www.baidu.com
例子2
TOMCAT
telnet localhost 8080
可多次发送下面的请求
HEAD / HTTP/1.1
Host : localhost
默认是持续连
Connection:Keep-Alive
如下则为短连接
Connection:close
相关文章推荐
- HTTP应答状态、概述、含义及其设置
- AJAX xmlHttp.status = 0 ,xmlHttp.status = 200
- HttpConnet
- Remoting在HttpChannel下抛“指定的 SOAPAction 无效”异常的解决办法
- http协议简介
- System.Web.HttpContext.Server.MapPath()
- httpsessionlistener
- HTTP 错误 500.19 Internal Server Error的解决方法
- 如何通过HttpURLConnection得到http 302的跳转地址
- TCP/IP,Http,Socket,XMPP的区别
- 利用httpclient开源工具抓取网页的源码,并且控制台打印出来工具类的编写
- HttpClient 教程 (六)
- ASIHTTPRequest类库简介和使用说明
- 什么是HTTP 302跳转?
- 严重: Failed to destroy end point associated with ProtocolHandler ["http-nio-8080"] java.lang.NullPoin
- HttpURLConnection处理post请求,返回字符串
- 自定义HttpModule的一些经验--配置篇
- Web应用里的HTTP参数污染(HPP漏洞)
- cookie 设置 httpOnly属性
- HTTP与HTTPS的工作原理与区别