1、HTTP是一个应用层协议,由请求和相应构成,是一个标准的客户端服务器模型。HTTP通常承载与TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了常说的HTTPS。默认HTTP端口为80,HTTPS的端口号是443
HTTP在OSI模型中的位置如下图:
2、HTTP协议的模型客户端发起请求,服务器回送相应。HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求没有对应的关系。
3、HTTP协议是如何工作的
首先,客户端发送一个请求给服务器,服务器接收到这个请求后将生成一个相应返回给客户端。一次HTTP操作成为一个事务。
其工作过程分为四步:
(1)、客户机与服务器建立连接。点击某个链接,HTTP协议的工作开始;
(2)、建立连接后,客户端发送一个请求给服务器。格式为:前边是统一资源标识符(URL),中间是协议版本号,后边的MIME信息(包括请求修饰符、客户机信息和可能的内容);
(3)、服务器街道请求后,给予相应的信息相应。格式为:首先是一个状态行(包括信息的协议版本号、一个成功或错误的代码),然后是MIME信息(包括服务器信息,实体信息和可能内容);
(4)、客户端接收到服务器返回的信息并显示在用户的显示屏上,然后客户机与服务器断开连接。
4、下面简单介绍下HTTP协议中的一些主要的概念
(1)、请求
请求由三部分组成:请求行、消息报头、请求正文;
<1>请求行包括请求方法、请求URI、协议版本
请求方法有get、post、head等
<2>报头格式:名字+:+空格+值
Host:头域指定请求资源的Internet主机和端口号
User-Agent:包含浏览者的信息,主要是浏览器的名称版本和所用的操作系统
Accept:告诉服务器可以接受的文件格式
Cookie:用来标志一些信息
Cache-Control:指定请求和响应遵循的缓存机制
Referer:指定请求URI的源资源地址
Content-Length:内容长度
Content-Range:响应资源的范围。可以实现断点续传,迅雷就是基于这个原理,使用多线程分段读取网络上的资源,最后在合并
Accept-Enconding:指定所能接受的编码方式
......
<3>、请求正文,可以没有
(2)、响应
状态吗由三位数组成,第一个数字定义了响应的类别,有五种可能取值:
1XX:指示信息——请求已接收,继续处理
2XX:成功——请求已被成功接收、理解、接受
3XX:重定向——要完成请求必须进行更进一步的操作
4XX:客户端错误——请求由语法错误或请求无法实现
5XX:服务器端错误——服务器未能实现合法的请求
常见状态码、状态描述和说明:
200 OK:客户端请求成功
400 Bad Request:客户端请求由语法错误、不能被服务器所理解
401 Unauthorize:请求未经授权
403 Forbidden:服务器收到请求,但是拒绝提供服务
404 Not Found:请求资源不存在,例如输入了错误的URL
500 Internal Server Error:服务器发生不可预期的错误
503 Server Unavailable:服务器当前不能处理客户端的请求,一段时间后可能恢复正常
5、抓包工具
分两类:
(1)、常规抓包工具:已IRIS、Wireshark为代表,这类软件可以抓取到整个局域网内所有的数据包,主要工作在数据传输层
(2)、专用抓包工具:只抓取某一协议,通常工作在应用层,最常见的就是对HTTP协议的抓取,如Fiddler、HttpWatch等
下面介绍一下Fiddler这款抓包软件的工作原理:
Fiddler是以代理服务器的方式监听系统的网络数据流动。运行软件后,就会在本地打开8888端口,网络数据流通过Fiddler进行中转时,可以监视HTTP/HTTPS数据流的记录并加以分析,甚至可以修改发送和接收的数据。
其工作原理是在浏览器(或者其他使用HTTP协议的进程)和服务器之间扮演代理的角色,这样所有的通信都要经过它。
其最大的一个特点就是可以中途修改HTTP通信内容。
工作原理如图:
Fiddler功能很强大,大家可以自行研究下。