1、HTTP协议
(1)HTTP协议简介
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个客户端和服务器端请求和应答的标准(TCP),即建立在TCP上的无状态连接。客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。
超文本传输协议是一种应用层协议。
(2)HTTP协议的工作模式
HTTP协议的工作模式是一次请求(request)和一次响应(response)的模式,即请求request-响应response式模式。
1)HTTP请求响应的过程:
客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。
2)HTTP协议分成了两个部分:
- 请求协议
- 响应协议
(3)HTTP 请求报文协议
HTTP请求是客户端往服务端发送请求动作,告知服务器自己的要求。
HTTP请求又包含了四个部分:
- 请求行(request-line)
- 请求头(request-header)
- 空行
- 请求数据(request-content),也叫作请求内容或者请求主体
1)请求行
请求行又可以分成三个部分:请求方式、请求路径、协议版本
GET /model/list_father.php HTTP/1.1
其中,GET就是请求方式,/model/list_father.php就是请求路径,HTTP/1.1就是协议版本号。
请求方式:
GET — 访问服务器的资源
POST — 向服务器发送要修改的数据
HEAD — 获取服务器文档的首部
PUT — 向服务器上传资源
DELETE— 删除服务器的资源
请求路径:
表示服务器的资源目录定位
协议版本:
表示使用的HTTP协议版本
需要注意的几点:
- 请求方式一般有GET、POST、PUT、DELETE,含义分别是获取、修改、上传、删除
- GET 主要用于从服务器获得数据,POST 主要用于从浏览器提交数据到服务器。
- GET方式仅仅为获取服务器资源,方式较为简单,因此在请求方式为GET的HTTP请求数据中,请求正文部分可以省略,直接将想要获取的资源添加到URL中
- GET请求没有请求体信息,POST请求有请求体信息。
- 请求行需要单独的占一行,用来说明当前请求的最基本的信息
- HTTP协议以前是1.0版本,现在是1.1版本
2)请求头
请求头就是所有当前需要用到的协议项的集合。
协议项就是浏览器在请求服务器的时候事先告诉服务器的一些信息,或者一些事先的约定。
常见的请求头:
- Host: 当前url中所要请求的服务器的主机名(域名)
- Accept-Encoding:是浏览器发给服务器,声明浏览器支持的压缩编码类型 比如gzip
- Connection:表示浏览器和服务器之间的连接方式, 浏览器和服务器连接是长连接(keep-alive)还是短连接
- Accept_charset:表示,浏览器支持的字符集
- Referer:表示,此次请求来自哪个网址
- Accept-Language:可以接收的语言类型,cn,en,有权重的高低之分
- Cookie:如果之前当前请求的服务器在浏览器端设置了数据(cookie),那么当前浏览器再次请求该服务器的时候,就会把对应的数据带过去
- User-Agent:用户代理,当前发起请求的浏览器的内核信息
- Accept:表示浏览器可以接收的数据类型,text/html,image/img
- Content-length(post):只有post提交的时候才会有的请求头,显示的是当前要提交的数据的长度(字节)。
3)空行
用来分离请求头和请求数据,意思就是请求头到此结束。
4)请求数据
GET方式请求时没有请求数据,只有POST请求时才有请求数据。
(4)HTTP 响应报文协议
服务器收到了客户端发来的HTTP请求后,根据HTTP请求中的动作要求,服务端做出具体的动作,将结果回应给客户端。
HTTP响应也分成了四个部分:
- 响应行(状态行)
- 响应头
- 空行
- 响应主体(响应数据)
1)响应行
响应行共分成3部分:协议版本号、状态码、状态描述
HTTP/1.1 200 OK
常见的状态码:
状态码 | 含义 |
---|---|
1xx | 表示HTTP请求已经接受,继续处理请求 |
2xx | 表示HTTP请求已经接收并处理完成 |
3xx | 表示把请求访问的URL重定向到其他目录 |
4xx | 表示客户端出现错误 |
5xx | 表示服务端出现错误 |
- 200—OK:请求已经正常处理完毕
- 301—Moved permanently:请求永久重定向
- 302—Move temporarily:请求临时重定向
- 304—Not Modified:请求被重定向到客户端本地缓存
- 400—Bad Request:客户端请求存在语法错误
- 401—Unauthorized:客户端请求没有经过授权
- 403—Forbidden:客户端的请求被服务器拒绝,一般为客户端没有访问权限
- 404—Not Found:客户端请求的URL在服务端不存在
- 500—Internal Server Error:服务端永久错误
- 503—Server Unavailable:服务端发生临时错误
2)响应头
一些协议的集合,以(协议名:值)的形式
常见的有:
- Server:服务器主机信息
- Date:响应时间
- Connection:表示浏览器和服务器之间的连接方式, 浏览器和服务器连接是长连接(keep-alive)还是短连接
- Content-length:响应主体的长度(字节)
- Content-type:响应内容的数据类型:text/html,image/png等
- Content-encoding:文件编码格式
- Cache-control:缓存控制,no-cached不要缓存
3)空行
用来分割响应头与响应主体,也就是响应头到此结束。
4)响应主体
就是服务器反馈给浏览器的数据。
注:
HTTP协议响应报文分为4部分,每部分之间使用 \r\n 进行分割。
2、https协议
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。用于安全的HTTP数据传输,客户端发起一个到服务器上指定端口(默认端口为443)的HTTPS请求。
HTTPS主要作用是:
(1)对数据进行加密,并建立一个信息安全通道,来保证传输过程中的数据安全;
(2)对网站服务器进行真实身份认证。