接口测试之网络其他层次

Posted 测试进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试之网络其他层次相关的知识,希望对你有一定的参考价值。

其他层次


传输层


传输层主要有TCP和UDP两个协议我们需要知道,这一层传输的是报文段。顾名思义,传输层的协议就是用来把应用层报文从一个端传送到另一个端。应用层的报文,比如http报文,可以通过TCP或UDP来传输。


其区别是:

TCP协议是面向连接的服务,它能确保报文被传送到目的地,如果目的地没收到,会重新传。


UDP协议是无连接的服务,它不管三七二十一,只把报文发出去,不管到底有没有被目的地接收到。


以TCP为例,它也有自己的报文段格式,前面应用层的整个报文,作为它的报文段里的业务数据来传输。我们可以想象一个快递包裹,它里面装的是真实业务数据,然后从应用层开始,每一层都会在这个包裹外面再包一层包裹,并在包裹皮上写上这一层自己定义的一些数据。


在这里,我不继续扩展讲更多TCP 协议的东西了,限于篇幅,这里只能简单做一些背景介绍。


扩展阅读 :TCP的三次握手建立连接,请在网络上搜索关键字 TCP 三次握手


了解TCP是如何通过三次握手建立连接的。另外,感兴趣的话可以去搜索TCP 的报文段组成格式,进一步了解 TCP协议。


网络层

网络层负责传输数据报,同样,数据报里的主要内容就是传输层的报文段。


网络层的主要协议是 IP 协议,其他还有一些路由选择协议。


链路层

链路层传输的数据称为帧。链路层的例子包括以太网、Wifi、电缆接入网的DOCSIS协议等。


物理层

物理层的作用是把链路层的帧,一个比特一个比特地从一个节点传输到另一个节点。物理层协议与链路层相关。


其他协议


前面也说了,大部分应用层程序的接口测试是使用 http 协议的,但是,还有一些是其他协议,包括自定义的协议。比如Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,它支持一些协议:dubbo,rmi,hessian,webservice,thrift,memcached,redis,http。


这里可以看到 http 只是其中一个协议,如果你的项目组使用Dubbo之类的支持多种协议的框架来做开发,那么你的接口测试也可能需要支持不同协议。 虽然,这些协议看上去很多,很复杂,但是实际上,我们做接口测试的原理都是一样的,参考对http接口的接口测试原理,不同协议的区别只是封报文的格式不同,或加了一些特殊限制,又或者是所基于的传输协议不同。


请看下图示例:


在这张图里,我们看到,一个 IP 协议的报文的数据部分包含了完整的TCP报文。而TCP协议的报文数据部分又包含了完整的HTTP报文。同样在这个HTTP报文的数据部分也可以再包含其他协议的完整报文,比如webservice协议报文。


对于这么多协议要怎么在接口测试的脚本中处理,我们按照以下原则来做:

1.先找现成的实现了这个协议的第三方库

2.没有第三方库时使用它的下一层的协议的库来自己实现一个库。


举个例子,我在诺基亚公司时,我们做一个内部自制协议的工具的测试开发,没有现成的库给我调用。因为这个协议是由TCP协议来传输的,我们就基于TCP协议的库来实现了一个这个协议的库。感兴趣的同学可以在搜索引擎里搜索关键字 socket 套接字 自行查阅相关资料。





本文首发于测试进阶知识星球,


接口测试教程正在我的知识星球火热更新中,

扫码即可加入,2019年1月1日之前只需88元。



以上是关于接口测试之网络其他层次的主要内容,如果未能解决你的问题,请参考以下文章

接口测试之JMeter-1

接口测试之工具

接口测试之网络分层

接口测试之基础篇--http协议

软件测试之接口测试系列七

测试常用工具之接口测试