做接口测试前必备的网络基础知识,你get了吗?(代码片段)

软件测试自动化测试 软件测试自动化测试     2023-01-02     484

关键词:

在面试时,不管是面试功能测试、自动化测试、测试开发乃至性能测试,都会问到计算机网络基础相关知识。今天主要介绍一些高频的网络基础面试题目,网络情缘一线牵,珍惜这段缘,如果觉得有帮助,欢迎留言、点赞、转发、收藏四连爱。❤️

一、Cookie和Session的区别?

Cookie 是访问某些网站以后在本地存储的一些网站相关的信息,下次再访问的时候减少一些步骤。另外一个更准确的说法是:Cookie 是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。由于 HTTP 协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是 Session

 Cookie和Session是解决http协议的无状态性,区别如下:

1、存储位置不同

Cookie是将用户数据通过加密的方式保存在客户端,大多数情况Cookie存储在浏览器;Session是用于控制客户端和服务端的连接,Session存储在服务器;

2、存储容量不同

单个Cookie保存的数据不得超过4kb,一个站点最多20个Cookie,Session一般情况下没有上限,不过建议不要存放太多东西,否则影响性能;

3、存取方式不同

Cookie只能用ASCII字符串,通过编码方式获取Unicode字符或者二进制数据,不好存储复杂的信息,而Session能存储任何类型的数据;

4、隐私策略/安全性不同

Cookie放在客户端,可以进行Cookie欺骗,所以不安全,Session放在服务端,更加安全;

5、有效期不同

Cookie可以设置属性达到长期有效,Session依赖于JSESSIONID的Cookie,Cookie JSESSIONID的过期时间默认为-1,只需要关闭窗口Session就会失效,就算不依赖Cookie,用UrL重写也不能完成,如果Session超时时间过长,容易导致内存溢出;

6、服务器压力不同

Cookie保存在本地,不存在服务端压力,Session保存在服务端,每个用户产生一个Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用Cookie;

7、浏览器支持不同

如果浏览器禁用Cookie,那么Cookie直接失效,Session比较好点,可以用URL重写;

8、cookie和session应用的场景

cookie:用户的登录状态,记录用户的习惯,如购物车;

session:登录验证;

 二、HTTP与HTTPS的区别?

HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全,为了保证这些隐私数据能加密传输,于是网景公司设计了SSL(SecureSocketsLayer)协议用于对HTTP协议传输的数据进行加密,从而就诞生了HTTPS。简单来说,HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全。

HTTP与HTTPS都是应用层协议,且本质上没有什么不同。他们的区别相对来说就是HTTPS是HTTP的安全版,HTTP信息是明文传输,而HTTPS是具有安全性的SSL加密传输,安全性要高于HTTP协议。且两者使用的端口也不一样,HTTP默认使用80端口,而HTTPS使用443端口。

 HTTPS和HTTP的区别主要如下:总的来说:HTTPS=SSL+HTTP

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

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

  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443(这个只是默认端口不一样,实际上端口是可以改的)。

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

三、get请求与post请求的区别?

1、提交数据的形式

  • GET方法一般是指获取服务器上的数据,请求参数(query string查询字符串)直接跟着URL后边,以?分割URL和传输数据,参数之间以&相连(?key1=value1&key2=value2)的形式,直接可以放到浏览器地址栏里,例如登录就是采用GET方法。
    如:login.actionname=ITester&password=idontknow&verify=%E4%BD%A0%E5 %A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4 %BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。

  • POST方法是指客户端给服务器上提交表单数据,会把数据放到请求数据字段中以&分隔各个字段,请求行不包含数据参数,地址栏也不会额外附带参数,所以POST是通过表单提交的,请求参数放在body中,如网页上的新用户的注册、调查问卷和答题就是采用POST方法。

2、提交数据的大小/长度

  • get是直接在浏览器地址栏输入,直接影响到了URL的长度,但HTTP协议规范中其实是没有对URL限制长度的,限制URL长度的是客户端或服务器的支持的不同所影响:比如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、Firefox等,理论上没有长度限制,其限制取决于操作系统的支持。由于浏览器有限制,一般整个URL的长度可以很长,但是不能超过2049KB的大小限制,而post没有大小限制。

  • post方式HTTP协议规范中也没有限定,起限制作用的是服务器的处理程序的处理能力。所以大小的限制还是得受各个web服务器配置的不同而影响。

3、提交数据的安全性

  • 由于get的参数是在浏览器地址栏URL直接拼接,用户名和密码将明文出现在URL上,暴露在互联网中,安全性差,不能用来传递敏感信息。

  • post请求参数放在body里,是通过表单数据提交,post比get方式的安全性要高。

get方式安全性弱因为以下几个原因:

  1. 登录页面有可能被浏览器缓存;

  2. 其他人查看浏览器的历史纪录,那么别人就可以拿到账号和密码;

  3. 当遇上跨站的攻击时,安全性的表现更差;

4、编码方式

  • get的参数只能支持ASCII;

  • post没有限制,也允许二进制数据;

5、请求方式

  • get是获取指定的资源;

  • post是向指定的资源提交要被处理的数据;

6、请求体

  • get没有请求体;

  • post有请求体;

7、效率方面

  • get产生一个tcp数据包;

  • post产生两个tcp数据包,post需要两步,时间上消耗要多一点,get比post更有效;

8、请求过程

  • 对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据),get请求的过程:

      1)浏览器请求tcp连接(第一次握手);

      2)服务器答应进行tcp连接(第二次握手);

      3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以                  http会在此时进行第一次数据发送);

      4)服务器返回200OK响应;

  • 而对于post,浏览器先发送header,服务器响应100continue,浏览器再发送data,服务器响应200ok(返回数据),post请求的过程:

      1)浏览器请求tcp连接(第一次握手);

      2)服务器答应进行tcp连接(第二次握手);

      3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以                         http  会 在此时进行第一次数据发送);

      4)服务器返回100 Continue响应;

      5)浏览器发送数据;

      6)服务器返回200 OK响应;

四、OSI七层模型的作用分别是?

1、应用层

OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有HTTP,HTTPS,FTP,POP3,SMTP等;

2、表示层

提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式;

3、会话层

负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成;

4、传输层

建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP/ UDP就是在这一层。端口号既是这里的“端”;

5、网络层

通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层;

6、数据链路层

将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。在实际使用中,LLC子层并非必需;

7、物理层

实际最终信号的传输是通过物理层实现的,通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆,这些都是物理层的传输介质。

五、请简述TCP三次握手和四次挥手?

1、三次握手

三次握手是指的是创建连接的过程:首先客户端向服务器端发送一个请求,询问是否可以发送数据;服务器收到请求之后,如果同意会响应一个确认报文;客户端收到确认报文之后,就开始发送数据。

第一次握手:建立连接时,客户端向服务器发送请求报文(SYN),"我想建立连接”;

第二次握手:服务器收到请求报文后,如同意连接,则向客户端发送确认报文(SYN/ACK),“同意建立”;

第三次握手:客户端收到服务器的确认后,再次向服务器发送确认报文,完成连接(ACK);

 2、四次挥手

四次挥手指的是断开连接的过程:客户端向服务器发送一个请求,询问是否可以断开连接;服务器端会响应自己当前的状态;如果服务器端准备好了,会向客户端发送一个断开连接的请求;如果没有准备好,还有数据没响应完,会等响应完再给客户端发送请求;最后服务器端和客户端断开连接。

第一次挥手:客户端想分手,发送消息(FIN)给服务器;

第二次挥手:服务器通知客户端已经接受的挥手请求,返回确认消息(ACK),但还没做好分手准备;

第三次挥手:服务端已经做好分手准备,通知客户端(FIN);

第四次挥手:客户端发送消息给服务器(ACK),确认分手,服务器关闭连接。

 六、浏览器输入URL到将页面渲染出来发生了什么?

1.首先,在浏览器地址栏中输入URL,先解析URL,检测URL地址是否合法;

2.浏览器先查看浏览器缓存-系统缓存-路由器缓存,如果缓存中有,会直接在屏幕中显示页面内容。若没有,则跳到第3步操作。

浏览器缓存:浏览器会记录DNS一段时间,因此,只是第一个地方解析DNS请求;操作系统缓存:如果在浏览器缓存中不包含这个记录,则会使系统调用操作系统,获取操作系统的记录(保存最近的DNS查询缓存);

路由器缓存:如果上述两个步骤均不能成功获取DNS记录,继续搜索路由器缓存;

ISP缓存:若上述均失败,继续向ISP搜索。

3.在发送http请求前,需要域名解析(DNS解析),解析获取相应的IP地址。

4.浏览器向服务器发起TCP连接,与浏览器建立TCP三次握手。

5.握手成功后,浏览器向服务器发送HTTP请求,请求数据包。

6.服务器处理收到的请求,将数据返回至浏览器。

7.浏览器收到HTTP响应。

8.浏览器解码响应,如果响应可以缓存,则存入缓存。

9.浏览器发送请求获取嵌入在HTML中的资源(HTML,CSS,JavaScript,图片,音乐······),对于未知类型,会弹出对话框。

10.浏览器发送异步请求。

11.  最后,页面全部渲染结束。

 七、常用HTTP状态码

关于常见的HTTP状态码,这是一个面试经常问的题目。

状态码类别
1XX信息性状态码
2XX成功状态码
3XX重定向状态码
4XX客户端错误状态码
5XX服务端错误状态码

常见的HTTP状态码:

1

  • 100 Continue:表示正常,客户端可以继续发送请求

  • 101 Switching Protocols:切换协议,服务器根据客户端的请求切换协议。

2

  • 200 OK:请求成功

  • 201 Created:已创建,表示成功请求并创建了新的资源

  • 202 Accepted:已接受,已接受请求,但未处理完成。

  • 204 No Content:无内容,服务器成功处理,但未返回内容。

  • 205 Reset Content:重置内容,服务器处理成功,客户端应重置文档视图。

  • 206 Partial Content:表示客户端进行了范围请求,响应报文应包含Content-Range指定范围的实体内容

3

  • 301 Moved Permanently:永久性重定向

  • 302 Found:临时重定向

  • 303 See Other:和301功能类似,但要求客户端采用get方法获取资源

  • 304 Not Modified:所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。

  • 305 Use Proxy:所请求的资源必须通过代理访问

  • 307 Temporary Redirect:临时重定向,与302类似,要求使用get请求重定向。

4

  • 400 Bad Request:客户端请求的语法错误,服务器无法理解。

  • 401 Unauthorized:表示发送的请求需要有认证信息。

  • 403 Forbidden:服务器理解用户的请求,但是拒绝执行该请求

  • 404 Not Found:服务器无法根据客户端的请求找到资源。

  • 405 Method Not Allowed:客户端请求中的方法被禁止

  • 406 Not Acceptable:服务器无法根据客户端请求的内容特性完成请求。

  • 408 Request Time-out:服务器等待客户端发送的请求时间过长,超时。

5

  • 500 Internal Server Error:服务器内部错误,无法完成请求

  • 501 Not Implemented:服务器不支持请求的功能,无法完成请求

八、如果已经建立了连接,但是客户端突然出现故障了怎么办?

如果TCP连接已经建立,在通信过程中,客户端突然故障,那么服务端不会一直等下去,过一段时间就关闭连接了。具体原理是TCP有一个保活机制,主要用在服务器端,用于检测已建立TCP链接的客户端的状态,防止因客户端崩溃或者客户端网络不可达,而服务器端一直保持该TCP链接,占用服务器端的大量资源(因为Linux系统中可以创建的总TCP链接数是有限制的)。

保活机制原理:设置TCP保活机制的保活时间keepIdle,即在TCP链接超过该时间没有任何数据交互时,发送保活探测报文;设置保活探测报文的发送时间间隔keepInterval;设置保活探测报文的总发送次数keepCount。如果在keepCount次的保活探测报文均没有收到客户端的回应,则服务器端即关闭与客户端的TCP链接。

九、TCP 和 UDP 区别及应用场景?

1、TCP和UDP区别 

面向连接 vs 无连接

可靠性:TCP 可靠,丢包重传;UDP 不可靠。

有序性:TCP 利用序列号保证了数据的有序性(数据到达会排序)

速度:TCP 创建连接,速率较慢;UDP 较快

TCP 流模式,UDP 报文模式

2、TCP和UDP应用场景

TCP:

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如 HTTP、HTTPS、FTP 等传输文件的协议,POP、SMTP 等邮件传输的协议。在日常生活中,常见使用 TCP 协议的应用如下:

  • 万维网(HTTP);

  • 邮件(POP、SMTP);

  • 文件传输(FTP);

UDP:

当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用 UDP。日常生活中常见使用 UDP 协议的应用如:语音,视频。

 

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

① 2000多本软件测试电子书(主流和经典的书籍应该都有了)

② 软件测试/自动化测试标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python编程语言、API接口自动化测试、web自动化测试、App自动化测试(适合小白学习)

  ⑤ Python学习路线图(告别不入流的学习)

在我的QQ技术交流群里(技术交流和资源共享,广告进来腿给你打断)

可以自助拿走,群号953306497(备注“csdn111”)群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

 

pytest的高级用法,你get到了吗?

每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试目前大家听到比较多的单元测试框架,无非就是pyte... 查看详情

jmeter做接口自动化测试的这些技巧你都掌握了吗

...ter允许使用正则表达式创建断言。jmeter这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用这些jmeter来做接口自动化... 查看详情

测试同学必备的网络知识

参考技术A对于测试同学来说,计算机网络的基础知识是必不可少的,话不多说,先来整理一波高频网络面试题。包括GET,POST,PUT,DELETE,HEAD,OPTIONS,PATCH,TRACE,CONNECT等9种方法,常用的为前四种1、请求效率。GET比POST的请求效... 查看详情

接口自动化测试必备框架知识,摸着良心讲,你学会了几样?(代码片段)

上篇为什么TestNg会成为Java测试框架的首选?还犹豫什么,看它!我们从多个角度分析了选择TestNg的理由,并且也了解了TestNg的运行时生命周期,本篇我们来详细的学习@Test注解,以及各个参数的使用。一、... 查看详情

月薪20k以上的软件测试工程师的必备知识点?拿来吧你!

我们都知道作为一个软件测试工程师,入门相对比较简单,但是要达到技术精通,甚至薪资能达到20k以上的话,那绝对需要对测试开发有一个系统的了解,以及对这些系统的知识能够熟练掌握。今天的话是我... 查看详情

python必备基础:这些numpy的神操作你都掌握了吗?微交易支付通道申请微信支付接口对接支付宝支付通道搭建微盘网银扫码快捷h5支付

导读:NumPy是Python的基础,更是数据科学的通用语言。本文简单介绍NumPy模块的两个基本对象ndarray、ufunc,介绍ndarray对象的几种生成方法及如何存取其元素、如何操作矩阵或多维数组、如何进行数据合并与展平等。最后说明通用... 查看详情

什么是接口测试?怎样做接口测试?

1.什么是接口?2.接口都有哪些类型?3.接口的本质是什么?4.什么是接口测试?5.问什么要做接口测试?6.怎样做接口测试?7.接口测测试点是什么?8.接口测试都要掌握哪些知识?9.其他相关知识?1.什么是接口?接口测试主要用... 查看详情

90%测试猿都想学的jmeter技能,你get吗?

01.前言jmeter这个工具既可以做接口的功能测试,也可以做自动化测试,还可以做性能测试,其主要用途就是用于性能测试。但是,有些公司和个人,就想用jmeter来做接口自动化测试。你有没有想过呢?下面... 查看详情

接口测试-测试人员必备技能

接口测试,其实并没有那么可怕,但是作为测试人员也是必不可少的技能。 接口分为:内部接口和外部接口。 内部接口:是浏览器与服务器的接口。这个很容易理解,web开发一般分前端和后端,前端开发人员用html/css/jav... 查看详情

性能测试必备知识-进程和线程的区别

做性能测试的必备知识系列,可以看下面链接的文章哦https://www.cnblogs.com/poloyy/category/1806772.html 进程一个正在运行的应用程序比如,在Window下,一个运行中的exe就是一个进程(如下图) 深挖进程一个进程可以有很多个线... 查看详情

小白福音!零基础入门软件测试,首选必备课程

...划1-4软件测试之“独孤九剑”第2章软件测试工程师必备基础知识本章将讲解软件的概念、软件的生命周期、软件测试方法、软件测试常见模型、软件测试的覆盖率及软件测试规范,一步步带你揭开测试大门。2-1软件的十大特性2-... 查看详情

使用postman做接口测试----柠檬不萌!

...http请求分为两个部分2、http状态码三、使用postman测试HTTP接口1、请求方式:get2、请求方式:post3、请求方式:post,入参是json类型4、cookie&session5、如何添加header信息6、文件上传接口四、练习五、补充知识 一、GET和POST请求... 查看详情

你后悔做软件测试了吗?

你后悔选择软件测试吗? image.png记得在求职的时候,面试官经常问我:“为什么要选择软件测试工作?”而我也会经常说一堆自己有的没的优势去应付。工作这么久了,也不再浮躁,静下心来回忆当初选择软件测试工作... 查看详情

求职充电|这些实战干货你get了吗?

...,这些技能你get了吗?数据库案例经验、Python编程上手、网络设计方案、运维技巧攻略......现在,你只能站在前人的肩膀上,丰富自己的工作阅历。请接住,这个求职充电大礼包!!! 查看详情

接口测试面试题目,你都会了吗?

面试题什么是接口测试?接口自动化测试的流程是什么?GET请求和POST请求区别是什么?接口测试的常用工具有哪些?HTTP接口的请求参数类型有哪些?如何从上一个接口获取相关的响应数据传递到下一个接口&#x... 查看详情

使用postman做接口测试

一,先了解一下基础知识,虽然工作中没什么卵用,但背会了,可以显摆自己很专业的样子,以下内容来自网络1, 什么是接口测试?     接口测试是测试系统组件间接口的一种测试。接口测试主要用于检... 查看详情

python接口测试怎么做断言

参考技术A要看你是什么样的接口比如比较简单的httpservice的接口,需要提供接口的访问地址,访问方式(get?post?put?delete?),以及参数然后用python来模拟发出请求,得到接口的返回,返回是否正确你做测试,肯定清楚什么... 查看详情

掌握测试开发必备的基础

接上篇从这几个方面入手测试开发继续聊一聊,掌握测试开发基础篇。首先要说明的是,这是个人的总结和建议,并不是标准的答案。第一,对于掌握测试开发必备的基础,首先你需要准备好系列书籍,不... 查看详情