HTTP(hyper text transfer protocol) 超文本传输协议 ,是这一种无状态连接,不需要建立持久连接,遵循请求(request)/应答(response) 模型
完整http通信过程:
1.建立TCP连接:客户端与服务器先建立低层次协议连接
2.发送请求命令:TCP建立连接后,客户端向服务器发送请求命令
3.发送请求头信息:以头信息的形式向服务器发送一些别的信息,之后客户端发送一行空白行用于通知服务器,头信息发送结束
4.服务器应答:在收到客户端的请求后,服务器会回送答应HTTP/1.1 200 OK
5.服务器应答头信息:服务器根据客户端请求应答信息
6.服务器向浏览器发送数据:以content-type 应答头信息所描述的格式发送用户所请求的实际数据
7.服务器关闭TCP连接:一旦完成一次请求,连接一般TCP连接会关闭,但是如果服务器或者客户端在其头信息加入keep-alive,TCP连接将会在发送之后仍然保持打开状态,于是浏览器可以继续通过相投的连接发送请求
URL****与****URI
URI纯粹是一个符号结构,用于指定构成Web资源的字符串的各个不同部分。
URL是一种特殊类型的URI,它包含了用于查找某个资源的足够的信息。
其他的URI,例如:mailto:zhanglong217@yahoo.com.cn,则不属于URL,因为它里面不存在根据该标识符来查找的任何数据。这种URI称为URN(通用资源名)。
总结一下:URL和URN都是一种URI,URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,所以,是绝对的,而通常说的relative URL,则是针对另一个absolute URL,本质上还是绝对的。
HTTP请求格式,请求信息一般由3部分组成:
| 请求头方法URI协议/版本
| 请求头(Request header)
| 请求正文
Eg:下面是一个HTTP请求的例子:
GET/sample.jspHTTP/1.1 ----------------方法URL协议/版本,“GET”表方法、“/sample.jso”表URI、“HTTP/1.1”表协议和协议版本;例如:HTTP1.1支持7种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet应用中,最常用的方法是GET和POST。
/*******************请求头(Request Header)************************************/
Accept:image/gif.image/jpeg,/
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
/*******************************************************/
请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。
/************************请求正文*******************************/
username=jinqiao&password=1234
/*******************************************************/
HTTP 方法get post
GET:常用语提交表单,只经过简单的编码,同时它将作为URL的一部分向服务器发送,所以安全性差:eg
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
且提交的数据不能太大
POST: 是GET方法的一个替代方法,主要向服务器提交表单数据,尤其是大批量的数据,post克服了get方法的一些缺点(安全性差、数据量小)
从编程角度来讲,如果用户通过GET方法提交数据,侧数据存放在QUERY_STRING环境变量中,而post方法提交数据则可以从标准输入流中获取
HTTP应答格式,也由三部分组成
| 协议状态版本代码描述
| 响应头(response header)
| 响应正文
下面是一个HTTP响应的例子:
HTTP/1.1 200 OK 表示通信所用的协议是HTTP1.1服务器已经成功的处理了客户端发出的请求(200表示成功)
/*****************响应头(Response Header)***********************/
Server:Apache Tomcat/5.0.12 服务器类型/版本
Date:Mon,6Oct2003 13:23:42 GMT 日期时间
Content-Length:112 内容类型和长度
/*******************************************************/
响应头和正文之间也必须用空行分隔。
/***********************响应正文********************************/ 这里的响应正文就是服务器返回的HTML页面
<html>
<head>
<title>HTTP响应示例<title>
</head>
<body>
Hello HTTP!
</body>
</html>
/*******************************************************/
HTTP应答码:
1xx:指示信息——表示请求已接收,继续处理
2xx:成功——表示请求已经被成功接收,理解,接受
3xx:重定向——要完成请求必须进行更进一步的操作
4xx:客户端错误——请求有语法错误或请求无法实现
5xx:服务器端错误——服务器未能实现合法的请求
网友评论