接口测试-必须掌握的网络基础

Posted 测试萌萌

tags:

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

在这里插入图片描述

一、网络概述

网络是由若干节点和连接这些节点的链路构成,表示诸多对象及其相互联系。在计算机领域中,网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享。网络是人类发展史来最重要的发明,提高了科技和人类社会的发展。

二、网络基础概念

  1. 客户端:应用 C/S(客户端/服务器) B/S(浏览器/服务器)
  2. 服务器:为客户端提供服务、数据、资源的机器
  3. 请求:客户端向服务器索取数据点击免费下载海量工程资料
  4. 响应:服务器对客户端请求作出反应,一般是返回给客户端数据
  5. URL:Uniform Resource Locator(统一资源定位符)。网络中每一个资源都对应唯一的地址。
  6. IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址(每个机器都有一个编码,如MAC上就有一个叫MAC地址的东西)的差异。是32位二进制数据,通常以十进制表示,并以“.”分隔。IP地址是一种逻辑地地址,用来标识网络中一个个主机,在本地局域网上是惟一的。
  7. IP(网络之间互连的协议)它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址有唯一性,即每台机器的IP地址在全世界是唯一的。这里指的是网络上的真实IP它是通过本机IP地址和子网掩码的"与"运算然后再通过各种处理算出来的(要遵守TCP协议还要加报文及端口什么的,我没有细追究,现在还用不上,反正暂时知道被处理过的就行了)

三、网络通信

1. 网络三要素

IP:主机的唯一表示 (http://202.108.22.5/)

端口号:正在运行的程序(0~65535

协议:通信规则,TCP以及UDP

2. 网络模型

2.1 简介

  • 定义:计算机网络的各层 + 其协议的集合
  • 作用:定义该计算机网络的所能完成的功能

2.2 结构介绍

  • OSI体系结构:概念清楚 & 理念完整,但复杂 & 不实用
  • TCP / IP体系结构:含了一系列构成互联网基础的网络协议,是Internet的核心协议 & 被广泛应用于局域网 和 广域网
  • 五层体系结构:融合了OSI 与 TCP / IP的体系结构,目的是为了学习 & 讲解计算机原理

在这里插入图片描述
网络参考模型OSI概述:(物联网传话试用)

  1. 物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。 指两台电脑进行传输数据的网线。
  2. 数据链路层:主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装。常把这一层的数据叫做帧。在这一层工作的设备是交换机,数据通过交换机来传输。
  3. 网络层:主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装。在这一层工作的设备是路由器,常把这一层的数据叫做数据包。 将发送端电脑发送过来的数据, 通过路由器进行分配给指定IP的电脑上。
  4. 传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做段。 定义两台电脑数据传输方式,称作协议,常用的协议有:TCP、UDP、HTTP。
  5. 会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名) 要设置目标电脑的IP地址和端口号,才可以找到接收端的电脑和应用。
  6. 表示层:主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等)。 将文字或者图片转换成电脑识别的二进制的过程.。
  7. 应用层: 主要是一些终端的应用,比如说FTP(各种文件下载),WEB(IE浏览),QQ之类的(可以把它理解成我们在电脑屏幕上可以看到的东西.就是终端应用)。

四、HTTP协议

1. HTTP

  • HTTP是 Hyper Text Transfer Protocol(超文本传输协议)。
  • 1960年美国人Ted
    Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。
  • 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本。超文本更是一种用户界面范式,用以显示文本及与文本之间相关的内容。现时超文本普遍以电子文档方式存在,其中的文字包含有可以链结到其他位置或者文档的连结,允许从当前阅读位置直接切换到超文本连结所指向的位置。
  • 它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据 的过程及数据本身的格式。

2. HTTP协议概述

  • WEB浏览器与WEB服务器之间的一问一答的交互过程必须遵循一定的规则,这个规则就是HTTP协议。
  • Http协议是一种应用层协议,它通过TCP实现了可靠的数据传输,能够保证数据的完整性、正确性
  • 而TCP对于数据传输控制的优点也能够体现在Http协议上,使得Http的数据传输吞吐量、效率得到保证

10.1.3 http与https基本概念

  • HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
  • HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL(Secure Sockets
    Layer)层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

10.1.4 http与https的区别

简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。区别主要如下:

1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。

2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。

3、http和https使用的是完全不同的连接方式,用的默认端口也不一样,前者是80,后者是443。

4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

10.2 http请求的组成

从客户端到服务器端的请求消息,信息由4部分组成请求行、消息报头、空行、请求正文

在这里插入图片描述

10.2.1 请求行(请求方法URI协议/版本)

请求的第一行是“方法URI协议/版本”例如:GET/sample.jsp HTTP/1.1
以上代码中“GET”代表请求方法,“/sample.jsp”表示URI,“HTTP/1.1代表协议和协议的版本。

10.2.2 消息报头(请求头Request Header)

4. 常用请求头

Host: www.baidu.com

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0
(User Agent用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。UA可以进行伪装。

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2

Accept-Encoding: gzip, deflate, br

Connection: keep-alive

Cache-Control: max-age=0

Content-Type: text/html

Content-Length:120

请求头包含许多有关的客户端环境和请求正文的有用信息。例如,请求头可以声明浏览器所用的语言,请求正文的长度等。例如:

Accept:image/gif.image/jpeg./(请求的图片内容格式)

Accept-Language:zh-cn(zh-CN 是表示中文,fr-FR 是表示法语。 这是RFC1766定义的语言表示方式)

Connection:Keep-Alive(又称持久连接、连接重用,Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。)

Host:localhost(主机名字)

User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)(客户端身份信息)

Accept-Encoding:gzip,deflate( 以压缩格式接收请求数据)

10.2.3 空行

必须有,发送回车符和换行符,通知服务器以下不再有请求头

10.2.4 请求正文(body)

请求头和请求正文之间是一个空行,这个行非常重要,它表示请求头已经结束,接下来的是请求正文。请求正文中可以包含客户提交的查询字符串信息:

username=jinqiao&password=1234

在以上的例子的HTTP请求中,请求的正文只有一行内容。当然,在实际应用中,HTTP请求正文可以包含更多的内容。

案例

在这里插入图片描述
10.4 请求方法

在这里插入图片描述
面试题:psot与get的区别

  1. Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post是安全的,因为所有操作对用户来说都是不可见的。
  2. Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。
  3. Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。
  4. Get执行效率却比Post方法好。Get是form提交的默认方法。 拓展:

扩展

Http的get请求方法提交的数据大小长度并没有限制,Http协议规范没有对URL长度进行限制。目前说的get长度有限制,是特定的浏览器及服务器对它的限制。

各种浏览器和服务器的最大处理能力如下:
IE:对URL的最大限制为2083个字符,若超出这个数字,提交按钮没有任何反应。
Firefox:对Firefox浏览器URL的长度限制为:65536个字符。
Safari:URL最大长度限制为80000个字符。
Opera:URL最大长度限制为190000个字符。
Chrome:URL最大长度限制为8182个字符。
Apache(Server):能接受的最大url长度为8192个字符(这个准确度待定???) Microsoft Internet Information Server(IIS):n能接受最大url的长度为16384个字符。

理论上讲,post是没有大小限制的。Http协议规范也没有进行大小限制,起限制作用的是服务器处理程序的处理能力。
Tomcat下默认post长度为2M,可通过修改conf/server.xml中的“maxPostSize=0”来取消对post大小的限制。

注意:若长度超限,则服务端返回414标识

10.5 http响应格式

从服务器端到客户器端的响应信息,信息由4部分组成:状态行、消息报头、空行、响应正文。

在这里插入图片描述

10.5.1 状态行

HTTP-1.1 Status-Code Reason-Phrase CRLF其中,HTTP-Version表示服务器HTTP协议的版本;Status-Code表示服务器发回的响应状态代码;Reason-Phrase表示状态代码的文本描述。
例如:HTTP/1.1 200 OK \\r\\n

状态码

当浏览者访问一个网页时,浏览者的浏览器会向网页所在服务器发出请求。当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求。

HTTP状态码的英文为HTTP Status Code。

下面是常见的HTTP状态码:
在这里插入图片描述
HTTP状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:
在这里插入图片描述
HTTP状态码列表:

在这里插入图片描述

10.5.2 消息报头

服务器传递给客户端用于说明服务器的一些信息,以及将来继续访问该资源时的策略。

Location:Location响应报头域用于重定向接受者到一个新的位置。
Server:Server响应报头域包含了服务器用来处理请求的软件信息。�WWW-Authenticate:WWW-Authenticate响应报头域必须被包含在401(未授权的)响应消息中下面是WWW-Authenticate响应报头域的一个,例子:WWW-Authenticate: Basic realm="Basic Auth Test!
Content-Encoding:Content-Encoding实体报头域被使用作媒体类型的修饰符.
Content-Language:Content-Language实体报头域描述了资源所用的自然语言。
Content-Length:  Content-Length实体报头域用于指明正文的长度.
Content-Type:Content-Type实体报头域用语指明发送给接收者的实体正文的媒体类型。
Last-Modified:Last-Modified实体报头域用于指示资源最后的修改日期及时间。
Expires: Expires实体报头域给出响应过期的日期和时间。
Expires实体报头域使用的日期和时间必须是RFC 1123中的日期格式,例如:�Expires: Thu, 15 Sep 2005 16:00:00 GMT

10.5.3 响应正文

服务端返回给客户端的HTML文本内容,或者其他格式的数据,比如:视频流、图片或者音频数据。

如果请求的是HTML页面,那么返回的就是HTML代码。如果是JS就是JS代码。

在这里插入图片描述

7. Http协议的特点

①支持客户/服务器模式。
②简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、 HEAD、POST。每种方法规定了客户与服务器联系的类型不同。 由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
③灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
④无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求, 并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
⑤无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。 缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每 次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快

8. Http 1.0 与 Http1.1的区别

1.0协议,客户端与web服务器建立连接后,只能获得一个web资源! 而1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源!

3. TCP与UDP区别:

  • TCP:

    建立连接

    安全可靠协议

    以流进行数据传递,无大小限制

    三次握手协议,四次挥手

  • UDP:

    不建立连接

    不可靠协议

以数据包传递,有大小限制64K

04. Socket以及Http:

  • Socket:长连接,理论上客户端和服务端一旦建立连接,则不会主动断掉;但是由于各种环境因素可能会是连接断开,比如说:服务器端或客户端主机down了,网络故障,或者两者之间长时间没有数据传输,网络防火墙可能会断开该链接已释放网络资源。所以当一个socket连接中没有数据的传输,那么为了位置连续的连接需要发送心跳消息,具体心跳消息格式是开发者自己定义的。
  • Http:短连接,即客户端向服务器发送一次请求,服务器端响应后连接即会断掉。

下面是我在做自动化对于技术一些归纳和总结,希望能帮助到有心在技术这条道路上一路走到黑的朋友!

在这里插入图片描述

在这里插入图片描述

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

关注我的微信公众号:【伤心的辣条】免费获取~

我的学习交流群:902061117 群里有技术大牛一起交流分享~

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

好文推荐:

35岁之后软件测试工程师靠什么养家?我能继续做测试!

App公共测试用例梳理

Python简单?先来40道基础面试题测试下

阿里二黑叹息:越来越多的年轻人从职场撤退了?

从一名开发人员转做测试的一些感悟

以上是关于接口测试-必须掌握的网络基础的主要内容,如果未能解决你的问题,请参考以下文章

在做接口测试之前必须掌握的原理

接口测试基础

自动化测试,你到底要掌握哪些基础知识?

软件测试基础基础基础

Flask 编写http接口api及接口自动化测试

接口测试之Fiddler工具介绍基础篇