软件测试之TCP协议必知必会知识点

254 篇文章 20 订阅
179 篇文章 0 订阅

日常工作中,软件测试人员经常会接触到传输层(TCP、UDP)和应用层(HTTP、HTTPS等)的内容。比如,像我们web页面时,就会用到一些协议的知识。为了让大家对这些协议有清楚的认知,我打算分几篇来给大家做一个介绍,希望大家可以从这当中,学会一些知识,掌握几个小的要点,便于今后工作能够顺利开展。

本文主要以TCP协议为主,来给大家做详细的介绍。

1、OSI七层网络模型

OSI七层模型:是ISO组织研究的一种网络互连模型,目的是为了推荐所有公司使用这个规范来控制网络。OSI七层模型从下至上分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。它们大概的作用如下图所示。
在这里插入图片描述
关于七层网络模型中的每一层,都是为了解决网络中的某一个或某些问题。每一层的目的,可以参考下图中的描述。
20210511_153701_001
2、TCP/IP四层概念模型

TCP/IP四层概念模型是目前较为常用的一种网络模型,相较于OSI七层网络模型,只是对比OSI将七层减少为四层。
在这里插入图片描述
3、网络传输过程

数据在网络传输的过程中,本质是一个封装和解封装的过程。例如:用户使用浏览器向百度服务器发送请求过程中,就是用户的数据从应用层一路封装到物理层,服务器得到物理层的比特流后,一路解封装得到对应数据。同理,服务器响应给用户的数据,也是服务器先一路封装,然后用户再一路解封。
20210511_153701_002
4、TCP协议概述

TCP协议:传输控制协议,就是对数据的传输进行一定的控制。关于TCP数据报文格式如图所示,关于TCP头部信息详细数据可以参考链接:(传输层)TCP协议。针对测试而言,我此处只标注出需要注意的地方。
20210511_153701_003
TCP报文=TCP头部+TCP数据部分。同样,IP数据包也包含tcp数据包或udp数据包。其中,我们经常需要关注的是TCP头部。而源端口和目的端口各占 2 字节。端口是传输层与应用层的服务接口,传输层的复用和分用功能都要通过端口才能实现。

序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。

确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。

ACK:仅当ACK=1时,确认号字段才有效。TCP规定,在连接建立后所有报文的传输都必须把ACK置1;

RST:当RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接

SYN:同步SYN = 1 表示这是一个连接请求或连接接受报文

FIN:用来释放一个连接.FIN=1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接

5、TCP三次握手

TCP三次握手:即为TCP连接的建立。如果将TCP三次握手类比为打电话,可以如图所示。
20210511_153701_006
关于TCP三次握手,客户端及服务器处于的状态、三次握手中发送的序号等相关信息可以如图所示。
20210511_153701_005
第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;

第二次握手:服务器收到SYN包,为了确认客户的SYN包,所以发送一个确认包ACK(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态。

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

6、TCP四次挥手

TCP四次握手:即为TCP连接的释放。如果将TCP四次挥手类比为学生和老师之间的对话,如图所示。
20210511_153701_006
关于TCP四次挥手,客户端及服务器处于的状态、四次挥手中发送的序号等相关信息可以如图所示。
20210511_153701_007
第一次挥手:客户端发送一个FIN(seq=u)包,代表连接释放,并停止发送数据,客户端进入FIN-WAIT-1(终止等待1)状态。

第二次挥手:服务器收到客户端发送的释放连接报文,发出确认报文ACK包(ack=u+1),并且带上序列号seq=v,服务端进入CLOSE-WAIT(关闭等待)状态。客户端收到确认请求后,进入FIN-WAIT-2(终止等待2)状态。

第三次挥手:服务器将最后的数据发送完后,向客户端发送释放连接报文FIN包(seq=w)。且由于服务器处于半关闭状态,服务器会像第二次挥手过程中一样,发送ACK包(ack=u+1)。服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

第四次挥手:客户端收到服务器的连接释放报文后,发出确认报文ACK包(ack=w+1),且带上序列号seq=u+1,发送完后,客户端进入TIME-WAIT(时间等待)状态,。而服务器收到客户端发出的确认,立即进入CLOSED状态。
20210511_153701_007
7、UDP协议概述

UDP(User Datagram Protocol):用户数据报协议。是一种无连接的传输层协议,不会创建连接,所以是一种不可靠的协议。它的优点为速度快,缺点为会丢包、会出错。关于UDP数据报文的格式,可以参考博客:UDP协议的详细解析

由于UDP协议的特点,所以UPD协议的使用场景如下:

不需要可靠机制,只需要速度快。

流媒体、多媒体游戏、IP电话

资源消耗小

8、TCP协议与UDP协议对比

根据是否连接、传输可靠性、应用场景、速度这几个特点,TCP协议和UDP协议有以下几点不同。
在这里插入图片描述
不知道这样理一理,大家有没有对TCD协议有更加清晰的认知呢?

文章来源:网络 版权归原作者所有

上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值