网络七层协议:
网络七层协议从下到上包括:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。因此,HTTP本身就是一个协议,但最终是基于TCP的,是从Web服务器传输超文本到本地浏览器的传送协议。 TCP: 传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通信协议。 UDP: 用户数据报协议,无连接不可靠的,是一种简单的面向数据报的传输层协议。
HTTP协议 超文本传输协议,是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等,是属于应用层级的。 HTTP语法的方法主要包括:GET、POST、PUT、DELETE、HEAD、OPTIONS、TRACE最常见的是GET、POST。 GET:向特定资源发出请求 POST:指定资源提交数据进行处理请求(提交表单、上传文件)。
HTTP协议请求组成部分: 主要分为请求行,请求头部,空行,请求数据(请求体) HTTP请求报文示例: 以下是一个http请求报文,其实请求行包含了请求方法,url链接,通常还包含http版本,目前市场大多数是http1.1版本。
POST http://test-ocr-xintech.servingcloud.com/documentTemplate/wordToPdf --请求行
POST data: {“sourceFile”:215586,“templateId”:“35”} —请求体请求数据
[no cookies] —请求头
Request Headers: Connection: keep-alive Accept: application/json, text/plain, / Content-Type: application/json;charset=UTF-8 Origin: http://test-document-frontend.xintech.servingcloud.com Referer: http://test-document-frontend.xintech.servingcloud.com/DocumentTemplate?token=1f24039229394e5aa33f900780b947a2 token: 1f24039229394e5aa33f900780b947a2 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36 Content-Length: 39 Host: test-ocr-xintech.servingcloud.com
常用请求头释义: Accept:告诉服务器,客户端支持的数据类型。 Accept-Charset:告诉服务器,客户端采用的编码。 Accept-Encoding:告诉服务器,客户机支持的数据压缩格式。 Accept-Language:告诉服务器,客户机的语言环境。 Host:客户机通过这个头告诉服务器,想访问的主机名。 If-Modified-Since:客户机通过这个头告诉服务器,资源的缓存时间。 Referer:客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的。(一般用于防盗链) User-Agent:客户机通过这个头告诉服务器,客户机的软件环境。 Cookie:客户机通过这个头告诉服务器,可以向服务器带数据。 Connection:客户机通过这个头告诉服务器,请求完后是关闭还是保持链接。 Date:客户机通过这个头告诉服务器,客户机当前请求时间
通用头域: 通用头域包含请求和响应消息都支持的头域,通用头域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通用头域,一般将会作为实体头域处理。 Cache-Control指定请求和响应遵循的缓存机制,请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age Public指示响应可被任何缓存区缓存。 Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。 no-cache指示请求或响应消息不能缓存 no-store用于防止重要的信息被无意的发布。 max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应,等等。
HTTP Keep-Alive 因为http是无连接的(意思是限制每次连接只处理一个请求),Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。 Content-Type用来表示具体请求中的媒体类型信息。 例如Content-Type: text/html;charset:utf-8; Application:也是用来表示请求中的媒体类型信息,他们二者在于所支持的格式不一样。支持json格式。
HTTP协议响应组成部分: HTTP响应分为响应行,响应头,响应体 响应行包含了响应协议及协议版本,状态码 响应示例: HTTP/1.1 200 Date: Thu, 06 Jun 2019 03:26:41 GMT Content-Type: application/json;charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Vary: Accept-Encoding Vary: Origin Vary: Access-Control-Request-Method Vary: Access-Control-Request-Headers Access-Control-Allow-Origin: http://test-document-frontend.xintech.servingcloud.com Access-Control-Allow-Credentials: true
{“code”:1,“msg”:“操作成功”,“data”:{“companyId”:“e15c2fa655f544a6b0843a96c4de33f4”,“companyName”:"****",“companyType”:“admin”,“serviceMenu”:[]}}
常见返回值含义:
状态码 含义 100 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分 200 服务器已成功处理了请求 302 重写向,会自动将请求者转到不同的位置 400 服务器不理解请求的语法。 401 请求要求身份验证。对于登录后请求的网页,服务器可能返回此响应。 404 服务器找不到网页 500 服务器内部错误 502 网关错误 504 网关超时
常见响应头: Content-Length:表示内容长度,只有浏览器使用持久http连接时才需要这个参数。 Expires:表示文档的过期时间,1.0中的参数,是相对文件的最后访问时间(Atime)或者修改时间(MTime),会出现客户端和服务器时间不同步导致Expires的配置出现问题。 max-age:也是表示文档过期时间,是1.1的参数,相对对的是文档的请求时间(Atime)。 Expires = 时间,HTTP 1.0 版本,缓存的载止时间,允许客户端在这个时间之前不去检查(发请求)。 max-age = 秒,HTTP 1.1版本,资源在本地缓存多少秒。 备注:如果max-age和Expires同时存在,则被Cache-Control的max-age覆盖。
任务: 使用抓包工具进行抓取http请求,同时抓取app的请求。