您的位置:首页 > 理论基础 > 计算机网络

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: