==协议学习总结==(TCP三次握手,http完整请求流程,Cookie&Session&Token,Post请求中data与json,API的测试维度)
1、详细的解释三次握手
SYN报文用来同步、ACK报文用来应答
第一次握手(连接请求):
起初两端都处于CLOSED关闭状态,Client(客户端)将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给Server(服务器),Client(客户端)进入SYN-SENT状态,等待Server(服务器)确认;
第一次握手,客户端发送一个TCP,标志位为SYN,Seq(序列号)=0,代表客户端请求建立链接
第二次握手(授予链接):
Server(服务器)收到数据包后由标志位SYN=1得知Client(客户端)请求建立连接,Server(服务器)将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Client(客户端)以确认连接请求,Server(服务器)进入SYN-RCVD状态,此时操作系统为该TCP连接分配TCP缓存和变量;
第二次握手,服务器发回数据包,标志位为[SYN, ACK],ACK设置为客户端第一次握手请求的Seq+1,即ACK=0+1=1,在随机产生一个Seq的数据包到客户端。
第三次握手(互相确认):
Client(客户端)收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并且此时操作系统为该TCP连接分配TCP缓存和变量,并将该数据包发送给Server(服务器),Server(服务器)检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client(客户端)和Server(服务器)进入ESTABLISHED状态,完成三次握手,随后Client(客户端)和Server(服务器)就可以开始传输数据。
第三次握手请求,客户端在次发送确认数据包,标识位为ACK,把服务器发来的Seq+1,即ACK=0+1,发送给服务器,服务器成功收到ACK报文段之后,连接就建立成功了。
三次握手流程:
2、一个完整的HTTP请求流程怎么理解?
1、域名解析(到对应的IP地址)-->
2、发起TCP的3次握手(建立TCP连接) -->
3、发起http请求(客户端向服务端发送Request的请求) -->
4、服务端响应http请求(服务端Response相应回复给客户端),浏览器得到html代码 -->
5、浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) -->
6、浏览器对页面进行渲染呈现给用户, -->
7、用户关闭浏览器或超出2MSL(2倍最长报文段寿命)-->(客户端与服务端之间关闭TCP的连接请求)
3、怎么理解COOKIE&SESSION&TOKEN
COOKIE
cookie就是存储在客户端的一个txt文件,登录网站自动调用cookie登录用户名
SESSION
session是写在服务器端的文件,也需要在客户端写入cookie文件,客户端只有session id,服务端存储session状态
TOKEN
服务端只需要生成 Token,不需要保存Token,只是验证Token
(服务端使用客户端相同加密算法和相同的密钥对数据再计算一次签名和 Token 中的签名做个对比)
4、集合互联网的产品演示SESSIONID的传递

客户端发送session id信息,服务端管理set-cookie返回给客户端
5、结合具体的案例来演示下POST请求中请求参数data和json的区别
data参数需要使用json.dumps序列化处理,将字典类型的对象转换成json格式的字符串对象
json参数会自动将字典类型的对象转换为json格式
import requests import json url = "http://example.com" data = { 'a': 1, 'b': 2, } # 1-data参数需要使用json.dumps将字典类型的对象转换成json格式的字符串对象 r1 = requests.post(url, data=json.dumps(data)) # 2-json参数会自动将字典类型的对象转换为json格式 r2 = requests.post(url, json=data) print(type(data)) print(r1) print(r2)
6、API的测试维度主要需要考虑哪些?
单接口:参数必填项、类型、长度、安全校验
多接口:多接口间数据传递、参数上下关联
openAPI:加密的方式
API测试用例编写:需要考虑到每个测试点的初始化,测试步骤,测试断言以及清理的操作
总结相当于二次学习和提炼,强化记忆,希望自己坚持下去

浙公网安备 33010602011771号