文章目录
一、前言
说道接口,必然是有一个传输的过程,不是你给咱一个接口对上,然后就摆在那(这个意思是不使用或请求),一定发生请求,那么请求方如何将数据发送过去、接收方又如何将请求的结果返回给请求方呢?这就不得不讲到接口协议,咱们所熟知的http协议接口,这是属于应用层的协议,那么它的本质会进入下一层tcp/ip传输层和网络层;这里不概述计算机网络体系的通讯协议分层概念。
二、http协议
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。
---- 摘自百度百科
2.1、http协议接口的组成
- http协议版本
-
- HTTP/1.1 200 OK
- 响应状态码,如200、301、404、500
- 请求头信息
-
- content-type:application/json
- 请求参数
-
- 是url拼接方式还是body
- 请求方法,常用的post、get
- 响应报文
-
- 也分xml、json不同格式
- 响应头信息,如请求头信息
- 请求地址,如:https://www.baidu.com
2.2、http工作原理
原理这个概念可能不好描述,但是可以结合http建立连接的过程及传输层tcp协议进行理解
2.3、三次握手和四次挥手
- 三次握手的过程解析
因为要保持连接和可靠性约束,TCP 协议要保证每一条发出的数据必须给返回,返回数据叫作 ACK(也就是响应)
a.客户端发送消息给服务端(SYN)
b.服务端准备进行连接
c.服务端针对客户端的SYN发一个ACK(带上SYN)
d.服务端同时发一个SYN给客户端
e.客户端准备就绪
f.客户端针对服务端的SYN发一个ACK
- 四次挥手的过程解析
1、客户端要求断开连接,发送一个断开请求,FIN
2、服务端收到请求,给客户端一个ACK,作为FIN的回应
3、有个等待过程,确定可以关闭了,服务端给客户端发一个FIN
4、客户端收到服务端的FIN,也有个等待过程,需要处理各自可能的问题,再给服务端发送ACK
- 举例:在模拟客户端发起http协议接口的请求时,中间关于DNS域名解析、tcp三次握手建立连接的过程及客户端渲染结果呈现页面的时候、到tcp四次挥手断开连接的过程,过程可能感受不大,但是视觉方面看到的效果更为直观。
2.4、简述浏览器输入url回车后完整的请求过程
简述:浏览器地址栏输出网址回车之后,本地网络DNS解析域名ip地址,先从本地DNS缓存服务器中查找,如果没有再去DNS网络服务器解析,得到IP地址并指向该服务器,中间有一个http三次握手的过程,最后服务器响应数据返回给客户端接收并渲染,最后还有一个四次挥手的过程,这样基本就能理解这样的一次访问过程,知道了它在背后做了什么!
那么协议是从http到tcp,然后这一切是建立在ip网络协议层,直白点,没有网络你的请求就发不出去,只有http可能都不会有tcp传输。
2.5、http和https的区别
HTTP
的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头HTTP
是不安全的,而 HTTPS 是安全的,实际是http+ssl的组合HTTP
标准端口是80 ,而 HTTPS 的标准端口是443在OSI
网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层HTTP
无法加密,而HTTPS
对传输的数据进行加密HTTP
无需证书,而HTTPS
需要CA机构wosign的颁发的SSL证书
2.6、get和post方法的区别
- GET在浏览器回退不会再次请求,POST会再次提交请求
- GET请求会被浏览器主动缓存,POST不会,要手动设置
- GET请求参数会被完整保留在浏览器历史记录里,POST中的参数不会
- GET请求在URL中传送的参数是有长度限制的,而POST没有限制
- GET参数通过URL传递,POST放在Request body中
- GET参数暴露在地址栏不安全,POST放在报文内部更安全
- GET一般用于查询信息,POST一般用于提交某种信息进行某些修改操作
- GET产生一个TCP数据包;POST产生两个TCP数据包
三、扩展
3.1、TCP UDP 区别
TCP – 传输控制协议,提供的是面向连接,可靠的字节流服务。即客户和服务器交换数据前,必须现在双方之间建立一个TCP连接,之后才能传输数据。并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。
UDP – 用户数据报协议,是一个简单的面向数据报的运输层协议。它不提供可靠性,只是把应用程序传给IP层的数据报发送出去,但是不能保证它们能到达目的地。由于UDP在传输数据报前不用再客户和服务器之间建立一个连接,且没有超时重发等机制,所以传输速度很快。
TCP
向上层提供面向连接
的可靠服务 ,UDP
向上层提供无连接
不可靠服务TCP
传输没有UDP
传输快,但是它对数据的准确性高TCP
只能一对一通讯,UDP
可以支持多重组合的通讯
3.2、dubbo协议
Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
–摘自百度百科
- 可以去Dubbo官网查看更详细的文档!
3.3、soap协议
简单对象访问协议是交换数据的一种协议规范,是一种轻量的、简单的、基于XML(标准通用标记语言下的一个子集)的协议,它被设计成在WEB上交换结构化的和固化的信息。
–摘自百度百科
- 在后面文章的介绍中,也会对它的接口测试如何去做;有些它本身也是可以通过http请求实现的;soap协议,webservice是基于这个协议的接口。