1.HTTP协议概述
- HTTP协议(HyperText Transfer Proyocol)超文本传输协议
- HTTP是无连接无状态,工作在应用层的协议
无连接理解为:http协议本身是没有维护连接信息的
http的数据会交给网络协议栈传输层的TCP协议,而TCP是面向连接的
无状态:HTTP协议自身不对请求和相应之间的通信状态进行保存
也就是说在HTTP下,协议对应发送过的请求和相应都不做持久化处理
2.HTTP协议的URL解释
- 使用http:或者https:等协议方案名获取访问资源时要指定协议类型,不区分字面大小写,最后附一个(:)
- 登录信息(认证):指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份 认证)。此项为可选项
- 服务器地址:必须指定待访问的服务器地址。地址可以是类似hackr.jp这种DNS可解析的名称或是192.168.1.1这类IPv4地址名也可以是IPv6地址名
- 服务器端口号:指定服务器上的网络端口号。此项是可选项,若用户省略则自动使用默认端口号
- 带层次的文件路径:指定服务器上的文件路径来定位特指的资源
- 查询字符串:对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项可选
- 片段标识符:使用片段标识符通常可表示出已获取资源中的子资源(文档内的某个位置)。此项可选
3.HTTP协议的数据流
4.HTTP协议格式
5.HTTP协议版本
- HTTP/0.9:HTTP与1990年问世,那时的HTTP并没有作为正式的标准被建立。此HTTP其实含有HTTP1.0之前的意思
- HTTP/1.0:HTTP正式作为标准被公布是在1996年五月,半杯被命名为HTTP/1.0,并记载于RF1945。虽说是初期标准,但该协议标准至今仍被广泛使用在服务器端
- HTTP/1.1:1997年1月公布的HTTP/1.1是目前主流的HTTP协议版本。当初的标准是RCF2068,之后发布的修订版RFC2616就是当前的最新版本
- HTTP/2.0:新一代HTTP/2.0正在定制当中,弹药达到较高的使用覆盖率,仍需假以时日
6.HTTP协议的请求方法
- GET:获取资源
GET方法用来请求访问服务器资源,指定的资源经服务器端解析后返回相应内容(需要经过服务端运算得出响应)
如果请求的资源是文本,那就保持原样返回(静态资源-例如图片,文本文件,html文件)
- POST:传输实体主题
虽然GET方法也可以传输实体的主题,但一般不用GET方法进行传输,而是用POST方法
POST的主要目的并不是获取相应的主题内容
7.HTTP协议相应状态码
- 2XX 成功
200:OK
204:NO Content(没有资源可以返回)
- 3XX 重定向(地址A跳转到地址B,通过各种方法将各种网络请求重新定个方向转到一个新的位置)
301:永久重定向(Moved Permanently)
302:临时重定向
- 4XX 客户端错误
400:Bad Request:浏览器请求出错
404:Not Found:请求资源不存在
- 5XX 服务器出错
500:Internal Server Error :服务器内部错误
503:Service Unavailable:服务不可用,服务端忙碌
8.请求/相应头部字段
- 请求头部
Host:指定请求的服务端的域名和端口号
Accept:指定客户端能够接收的内容类型
Accept-Language:浏览器可以就收的语言
Accept-Charset:浏览器可以接受的字符编码集
Content-Length:请求的内容长度
Content-Type:请求的与实体对应的MIME信息
Referer:先前网游的地址
- 响应头部
Content-Length:正文的长度
Content-Type:正文类型
Location:重定向的地址
9.Cookie和Session
- Cookie:浏览器保存的细腻,一般是客户端的一些不敏感信息,cookie数据来源自服务端,在浏览器保存,当下次在请求服务端的时候,会携带上
- Session:session数据保存在服务器端,一般描述当前会话信息(例如:浏览器信息,浏览器访问到哪个页面)
一般使用cookie+session的方式