目录
1.首先我们要明确什么是协议
网络协议是计算机之间为了实现网络通信而达成的一种“约定”或者“规则”,有了这种约定,不同厂商的生产设备,以及不同的操作系统之间就可以进行通信。
2.什么是HTTP协议
HTTP是一个属于应用层的面向对象的协议,从WEB服务器传输超文本语言(HTML)到本地浏览器的传送协议,起初是为了提供一种发布和接受HTML界面的方法。
3.HTTP主要特点:
①支持客户/服务器模式
②简单快速:客户端向服务器端请求服务时,只需要传送请求方法和路径。请求常用的方法主要有POST、GET、HEAD。每种方法则规定了客户与服务器的联系的类型不同,因为HTTP协议简单,使得HTTP服务器的程序规模小,因此提高了通信速度。
③灵活:HTTP协议可以传送任意类型的数据对象,用Content—Type进行标记
④无连接:每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。但是这样却不利于客户端与服务器保持会话,为了弥补这种不足,产生了两种记录http状态的技术,Cookie和Session。
⑤无状态:无状态是指协议对事务处理没有记忆能力,如果后续处理需要前面的信息,则需要进行重传。
4.HTTP原理
HTTP是一个常基于TCP/IP通信协议来传送数据的协议。浏览器作为HTTP客户端通过URL向HTTP服务端发送请求。
5.什么是URL,什么是URI
HTTP统一使用统一资源标识符(URI)来传输数据和建立连接
URI:是用来表示一个具体的资源,我们可以通过URI知道一个资源具体是什么
URL:是用来定位具体的资源位置的,表示了一个资源的具体位置,互联网上的每一个文件都有其唯一的URL。
6.HTTP请求和响应
HTTP协议报文格式:
请求
1.首行(方法, URL,版本号)
2.header(若干个键值对,每个键值对占一行,键和值之间使用冒号空格分割)
3.空行(header的结束标记)
4. body (GET请求没有body, POST请求有body)
各种请求方法:
①GET 请求获取Request-URL所标识的资源
②POST 在Request—URL 所标识的资源附加新的资源
③HEAD 请求获取Request-URL 所标识的资源的响应报头
④PUT 请求服务器存储一个资源,并用Request—URL作为其标识
⑤DELETE 请求服务器删除Request—URL所标识的资源
⑥TRACE 请求服务器返回收到的请求信息,主要用于测试和诊断
⑦CONNECT 保留将来使用
⑧OPTIONS 请求服务器的性能,或者查询与资源相关的选项和需求
响应
1.首行(版本号状态码状态码的描述)
2.header(和请求类似)
3.空行(header 的结束标记)
4.body具体的数据格式取决于Content-Type字段.具体的长度取决于Content-Length
各种状态码:
1XX:指示信息--标识请求已经接受,继续处理
2XX:成功,表示请求已经被成功接收。
3XX:重定向—要完成请求需要进一步的操作
4XX:客户端错误—请求有语法错误,或者请求无法实现
5XX:服务器错误—服务器无法实现合理的请求
常见的状态码:
200 OK - 客户端请求成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常
7.报头
HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成,请求消息和响应消息都是由开始行(请求消息,状态行)、消息报头、空行、消息正文组成。
HTTP消息报头包括普通报头,请求报头,响应报头,实体报头,都是以键值对的形式组成。
常见的请求报头:
①ACCEPT 用于指定客户端接受哪种类型的信息
②ACCEPT-Charse 用于指定客户端接受的字符集
③Accept- Enconding 用于指定可接受的内容编码
④Accept-Language 用于指定一种自然语言
⑤Authorization 用于证明客户端有权查看某个资源
⑥Host(发送请求时,这个报头是必须的)用于指定被请求资源的Internet 主机和端口号,通常是从HTTP URL中提取出来的
⑦User-Agent 允许客户端告诉服务器自己属性(非必须)
常见的响应报头:
①Location 重定向到一个新的位置
②Server 包含了服务器用来处理请求的软件信息,与User-Agent是对应的
常见的实体报头:
请求和响应都可以传送一个实体,一个实体由实体报头域和实体正文组成。
①Content-Encoding 表示被应用到实体正文的附加内容的编码
②Content-Language 描述了资源所用的自然语言
③Content-Length 指明实体正文的长度
④Content-Type 指明发送给接受者的实体正文的媒体类型
⑤Last-Modifide 用于指示资源的最后修改时间
⑥Expires 实体报头域给出相应过期的日期和时间。