Http协议详解
来源:互联网 发布:淘宝下单后怎么退款 编辑:程序博客网 时间:2024/06/04 00:56
Http协议详解
- Http协议详解
- Http协议概念介绍
- Http协议特点
- Http协议工作模式
- Http协议之请求头
- Http协议之响应头
Http协议概念介绍
Http(Hyper Transfer Text Protocol),即超文本传输协议,是客户端浏览器或其他程序与web服务器之间的 应用层通信协议。在Internet上的Web服务器存放的都是超文本信息,客户端需要通过Http协议传输需要获取的 超文本信息。Http包含命令和传输信息,不仅可以用于web访问,也可以用于其他因特网/内联网系统之间的通信, 从而实现各类应用资源超媒体访问的集成。
Http协议特点
1. 支持客户/服务器模式:Http协议由两部分程序实现, 一部分是客户端程序,另一部分是服务器程序,通过交换Http报文进行会话。 2. 简单快速:客户端向服务器请求服务,只需传递请求方法和路径。由于Http协议比较简单,故Http服务器的程序规模较小,通信速度快。 3. 灵活:Http允许传输任意类型的数据对象,正在传输的类型由Content-Type标记(请求头参数)。 4. 无连接:Http协议限制每次连接只能处理一个请求。服务端处理用户请求,并受到用户应答后,即断开连接,这种方式可以节省传输时间。 5. 无状态:无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。即客户端给服务器发送 HTTP 请求之后, 服务器根据请求,向客户端发送数据。但是,发送完并不会记录任何信息。这意味着每个请求都是独立的,Keep-Alive 没能改变这个结果。
Http协议工作模式
HTTP协议定义Web客户端如何从Web服务器请求Web页面,以及服务器如何把Web页面传送给客户端。HTTP协议采用 了请求/响应模型。客户端向服务器发送一个请求报文,请求报文包含请求的方法、URL、协议版本、请求头部和 请求数据。服务器以一个状态行作为响应,响应的内容包括协议的版本、成功或者错误代码、服务器信息、响应头部和响应数据。 HTTP请求/响应的步骤如下: (1)客户端连接到web服务器 一个Http客户端(通常是浏览器)与Web服务器的HTTP端口(默认为80)建立一个TCP(套接字)连接。 (2)客户端向服务器发送Http请求 通过TCP(套接字),客户端向web服务器发送一个Http请求报文,一个Http请求报文由请求行、请求头部、空行和请求数据4部分组成。 (3)服务器接受请求并返回Http响应报文 web服务器解析请求报文,并定位请求资源。服务器将资源填充到TCP套接字,最后由客户端读取。一个响应报文由状态行、响应头部、空行和响应数据4部分组成。 (4)释放TCP连接 Web服务器主动关闭TCP套接字,释放TCP连接;客户端被动关闭TCP套接字,释放TCP连接。 (5)客户端浏览器解析HTML内容 客户端(浏览器)首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据,根据Html语法对其进行格式化,并在浏览器窗口中显示。
Http协议之请求头
Http请求头由四部分组成,分别为请求行、请求头、空行和请求正文等。 (1)请求行 请求行主要由请求方法字段、Url字段和Http协议版本字段三部分组成,他们之间用空格分隔。如GET index.html 1.1。 请求方法主要由八种,分别为GET、POST、HEAD、PUT、DELETE、TRACE、CONNECT和OPTIONS等。具体如下: GET:向特定的资源发出请求。 POST:向指定资源提交数据进行请求(例如提交表单或者上传文件),数据被包含在请求数据中。POST请求可能导致新的资源创建或者已有资源被修改。 HEAD:向服务器请求与GET请求相一致的相应,但相应体不会被返回。HEAD方法可以在不必传输整个相应内容的时候使用,可以获取包含在相应消息头中的元信息。 PUT:向指定资源位置上传最新内容。 DELETE:请求服务器删除Request-Uri所标识内容。 TRACE:回显服务器收到的请求,主要用于测试或诊断。 OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法,也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 (2)请求头 请求头由key-value键值对组成,每对构成一行,键和值由:分隔。请求头通知服务器有关客户端请求的信息。典型的请求头有Host、User-Agent、Accept、Accept-Encoding、Accept-Language、Connection、Referer、Cookie等。此外访问一些Url的时候还会有一些其他头信息,此处不一一列举。 Host: 作用:用于指定被请求资源的Internet主机和端口号,通常由Http Url中提取出来。 1)host字段可以是域名,也可以是IP地址,host字段域名/IP后可跟端口号,例如www.baidu.com:8080。 2)http协议1.0版本中host字段可以缺失,http协议1.1版本中host字段不可缺失,但是值可以为空。 3)http相应头中不包含host字段。 User-Agent: 作用:通知服务器,客户端所使用的操作系统类型以及浏览器的名称和版本。 Accept: 作用:通知服务器端,浏览器端可以接受的媒体类型。 Accept-Encoding: 作用:申明浏览器端可以接受的编码,通常指定压缩方法,是否支持压缩。 Accept-Language: 作用:申明浏览器端可以接受的语言,如big5、gb2312或gbk等。 Connection: 作用: 1)值为keep-alive,当一个request完成后,客户端和服务器之间用于传输Http数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这条已经建立的连接。 2)值为close,当一个request完成后,客户端和服务器之间用于传输Http数据的TCP连接会关闭,当客户端再次发送Request,需要重新建立TCP连接。 Referer: 作用:浏览器向服务器发送请求时,Referer会告诉服务器是从哪个页面链接过来的,服务器根据Referer值获得一些有用信息。比如从百度上链接到我的服务器,我的服务器就可以从Http Referer中统计每天有多少请求来自于百度。 Cookie: 作用:用来存储一些用户信息以便服务器辨别用户身份,比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,这样浏览器通过读取cookie的信息去服务器上验证你是否是合法用户。 (3)请求正文 请求头与请求正文之间有一行空行,这个空行表示请求头已经结束,接下来是请求正文。请求正文主要包含用户提交的查询字符串信息和表单数据等,以key-value的形式存放。
Http协议之响应头
Http响应头由四部分组成,分别为状态行、响应头、空行和响应正文等。 (1)状态行 状态行主要由三部分组成,分别为Http协议版本号、状态码和状态代码的文本描述等。如HTTP/1.1 200 OK。 状态码由三位数字组成,其中第一个数字定义了响应的类别,且有五种取值的可能。具体信息如下: 1**:表示请求已经接受,可以继续处理。 2**:表示请求已经被成功接受、理解和处理。 3**:表示重定向,若想完成请求需要进一步请求,一般接下来的请求链接为响应头Location字段对应的值。 4**:客户端错误,指请求出现语法错误或者请求无法达成。 5**:服务器端错误,表示服务器无法对请求做出处理。 常见状态码以及状态描述有如下几个: 200:客户端请求成功。 400:客户端请求出现语法错误,服务器端不能理解该请求。 401:指请求未经授权,该状态码需要与www-Authenticate配合使用。 403:服务器收到请求,但是拒绝提供服务。 404:请求资源未找到或者不存在,例如输入了错误的Url则会返回404状态码。 500:服务器发生不可预期的错误。 503:指服务处于不可用状态。 (2)响应头 响应头由key-value键值对组成,每对构成一行,键和值由:分隔。响应头是服务器对客户端通知的响应信息。典型的响应头有Server、Content-Encoding、Content-Type、Content-Length、Connection、Date、Expires、Location、Refresh、Set-Cookie、WWW-Authenticate等。此外还会有一些其他响应头信息,此处不一一列举。 Server: 作用:指服务器名字,一般由Web服务器自己设置。 Content-Encoding: 作用:指文档的编码。 Content-Type: 作用:指文档的MIME类型。默认为text/plain,由servlet设置。 Content-Length: 作用:指响应内容的长度。 Connection: 作用:同请求头Connection。 Date: 作用:指服务器返回内容的时间,由servlet设置。 Expires: 作用:指文档的过期时间(缓存时间)。 Location: 作用:表示客户端应该去何处提取文档,该字段与状态码302配合使用。 Set-Cookie: 作用:设置与页面相关联的cookie。 WWW-Authenticate: 作用:指客户端应该在Authorization头中提供的类型信息,与401状态码配合使用。 (3)响应正文 响应头与响应正文之间有一行空行,这个空行表示响应头已经结束,接下来是响应正文。响应正文是服务器针对客户端提交的请求返还给客户端的文本信息,通常指html代码。
阅读全文
0 0
- 【http】http协议详解
- 网络协议-HTTP协议详解
- HTTP协议-http事务详解
- HTTP协议详解----HTTP消息
- Http协议详解
- HTTP协议详解
- HTTP协议头详解
- HTTP协议头详解
- HTTP协议详解
- HTTP协议详解
- http协议详解
- HTTP协议详解
- HTTP协议详解
- HTTP协议详解
- HTTP协议详解
- HTTP协议详解
- HTTP协议详解
- HTTP协议详解
- [进击吧shader]写一个自己的shader
- MySqL遇到Can't get hostname for your address解决办法
- hdu 1796(容斥原理)
- Android------JNI的调用方法
- JSP 之JQ 与JS互相转换
- Http协议详解
- 数据存储(无数据库版)之一:存储为JSON
- JVM之早期(编译器)优化
- 八皇后
- GitHub:(2)Windows上安装与使用 Git
- 实习第二天
- [BZOJ2005][NOI2010]能量采集(莫比乌斯反演)
- JAVA窗口编程笔记
- HTML <li> 标签实现不换行