【软件测试】Web测试基础(各类协议)面试必背

本文详细介绍了TCP/IP协议,包括TCP的三次握手和四次挥手过程,以及HTTP协议的基础知识,如请求方法、状态码和无状态特性。此外,还探讨了TCP/IP和HTTP协议在Web测试面试中的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

TCP/IP协议

1.概念

2.TCP/IP层次结构与OSI层次结构的对照关系图

3.TCP简介

4.TCP标志位(Flags)

5.TCP三次握手建立连接

6.TCP四次挥手关闭连接

7.三次握手过程中可以携带数据吗

8.三次握手的作用

9.为什么建立连接是三次握手,关闭连接却是四次挥手

10.为什么需要三次握手

11.为什么需要四次挥手

12.(ISN)是固定的吗

13.什么是半连接队列

14.为什么TIME_WAIT状态需要经过2MSL(最大报文段生存时间)才能返回到CLOSE状态

15.为什么不能用两次握手进行连接

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

17.首次握手的隐患------SYN超时问题

18.拓展进阶

HTTP协议

1.概述

2.协议简介

3.浏览器输入url按回车后执行了哪些操作

4.常用的HTTP请求方法有哪些

5.GET和POST的区别

6.常见的HTTP相应状态码

7.HTTP无状态协议

8.实际中的使用情况

9.哪些方法可以实现有状态连接

10.cookies机制和session机制的区别

11.http和https区别

12.HTTP请求报文与响应报文格式

13.常见的 POST 提交数据方式

14.什么是DNS

15.请描述网络传输的过程

16.Http与Https优缺点

17.Http优化

18.Http协议有那些特征

19.Http协议中Http1.0与1.1区别

B/S和C/S


前言:

        在学习web测试前,我们需要对计算机网络的一些概念有一定的了解,以面试问题的形式来详细了解

TCP/IP协议

1.概念

        TCP/IP协议,严格来说是一个协议族,里面包括很多协议(Telnet、HTTP、SMTP、TCP、UDP、IP、ARP等),由于TCP协议和IP是结构中最核心的协议,所以统称为TCP/IP协议。

2.TCP/IP层次结构与OSI层次结构的对照关系图

OSI七层网络模型 TCP/IP概念层模型 功能 TCP/IP协议族
应用层 应用层 文件传输、电子邮件、文件服务、虚拟终端 HTTP、TFTP、SNMP、FTP(文件传输协议)、SMTP、DNS(域名系统)、Telnet
表示层 数据格式化、代码转换、数据加密  
会话层 解除或建立与别的接点的联系  
传输层 传输层 提供端对端的接口 TCP(传输控制协议)、UDP(用户数据包协议)
网络层 网络层 为数据包选择路由 IP、ICMP、RIP、OSPF
数据链路层 链路层 传输有地址的帧以及错误检测功能 SLIP、PPP、ARP、CSLIP
物理层 以二进制数据形式在物理媒体上传输数据 ISO2110、IEEE802、IEEE802.2
       

3.TCP简介

  1、面向连接的、可靠的、基于字节流的传输层的通信协议;

  2、将应用层的数据流分割成报文段并发送给目标节点的TCP层;

  3、数据包都有序号,对方收到则发送ACK确认,未收到则重传;

  4、使用校验和来检验数据在传输过程中是否有误;

4.TCP标志位(Flags)

  1、URG:紧急指针标志;

  2、ACK:确认序号标志;

  3、PSH:push标志;

  4、RST:重置连接标志;

  5、SYN:同步序号,用于建立连接过程;

  6、FIN:finish标志,用于释放连接

5.TCP三次握手建立连接

   刚开始客户端处于 closed 的状态,服务端处于 listen 状态:

      1、第一次握手:客户端给服务端发一个 SYN 报文,并指明客户端的初始化序列号 ISN(c)。此时客户端处于 SYN_Send 状态。

      2、第二次握手:服务器收到客户端的 SYN 报文之后,会以自己的 SYN 报文作为应答,并且也是指定了自己的初始化序列号 ISN(s),同时会把客户端的 ISN + 1 作为 ACK 的值,表示自己已经收到了客户端的 SYN,此时服务器处于 SYN_REVD 的状态。

      3、第三次握手:客户端收到 SYN 报文之后,会发送一个 ACK 报文,当然,也是一样把服务器的 ISN + 1 作为 ACK 的值,表示已经收到了服务端的 SYN 报文,此时客户端处于 establised 状态。

      4、服务器收到 ACK 报文之后,也处于 establised 状态,此时,双方以建立起了链接。
 

6.TCP四次挥手关闭连接

      刚开始双方都处于 establised 状态,假如是客户端先发起关闭请求:

   1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态

      2、第二次挥手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态【服务端可能还有一些数据没有传送完,不能立马关闭】

      3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态

      4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

      5、服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态

7.三次握手过程中可以携带数据吗

        第一次、第二次握手不可以携带数据,而第三次握手是可以携带数据的。

        为什么这样呢?假如第一次握手可以携带数据的话,如果有人要恶意攻击服务器,那他每次都在第一次握手中的 SYN 报文中放入大量的数据,因为攻击者根本就不理服务器的接收、发送能力是否正常,然后疯狂着重复发 SYN 报文的话,这会让服务器花费很多时间、内存空间来接收这些报文。也就是说,第一次握手可以放数据的话,其中一个简单的原因就是会让服务器更加容易受到攻击了。
        而对于第三次的话,此时客户端已经处于 established 状态,也就是说,对于客户端来说,他已经建立起连接了,并且也已经知道服务器的接收、发送能力是正常的了,所以能携带数据。

8.三次握手的作用

      1、确认双方的接受能力、发送能力是否正常。

      2、指定自己的初始化序列号,为后面的可靠传送做准备。

      3、如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。

9.为什么建立连接是三次握手,关闭连接却是四次挥手

        因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,"你发的FIN报文我收到了"。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

10.为什么需要三次握手

        目的:为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误。主要防止资源的浪费。

11.为什么需要四次挥手

        为了保证在最后断开的时候,客户端能够发送最后一个ACK报文段能够被服务器接收到。如果客户端在收到服务器给它的断开连接的请求之后,回应完服务器就直接断开连接的话,若服务器没有收到回应就无法进入CLOSE状态,所以客户端要等待两个最长报文段寿命的时间,以便于服务器没有收到请求之后重新发送请求。

  防止“已失效的连接请求报文”出现在连接中,在释放连接的过程中会有一些无效的滞留报文,这些报文在经过2MSL的时间内就可以发送到目的地,不会滞留在网络中。这样就可以避免在下一个连接中出现上一个连接的滞留报文了。

12.(ISN)是固定的吗

        三次握手的一个重要功能是客户端和服务端交换ISN(Initial Sequence Number), 以便让对方知道接下来接收数据的时候如何按序列号组装数据。

        如果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值