HTTP

作者: ricefun | 来源:发表于2018-01-29 16:18 被阅读7次

    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:服务器端错误——服务器未能实现合法的请求

    相关文章

      网友评论

          本文标题:HTTP

          本文链接:https://www.haomeiwen.com/subject/szaxzxtx.html