1:CC攻击是正常的业务逻辑,大并发让你处理不过来,处理XP SP2,以上的系统都封了RAW格式协议封包自定义,除了基于应用层改协议,之外都是模拟或请求来测试传输层
2:UDP不会粘包,不会少包,除非缓存区满
3:TCP主要特征有:
1、3次握手连接
2、4次挥手断开
3、拥塞控制
4、重传控制
5、流传输方式,服务端需要额外解析方面有:协议粘包,协议少包,协议丢包、异常协议响应、正常协议响应

UDP主要特征有:
1、包传输方式
2、无粘包错包
3、且无连接,无拥塞控制,无重传机制

4:TCP主要特征有:
1、3次握手连接:
一测试用例:压力机在请求大量握手链接后迅速关闭,需要大并发操作
一测试逻辑点:测试服务端底层逻辑关闭socket的同时,又来新的socket链接请求,服务端底层逻辑这部分是否处理正常

我测试的项目BUG:创建ID为5000的socket端口后,由于压力机关闭socket,导致服务端回收这个ID为5000的SOCKET,新来的TCP连接请求,由于5000的释放又使用上这个SOCEKT,这时服务端报错:新的SOCKET无法使用

二测试用例:压力机在请求大量握手链接,需要大并发操作
二测试逻辑点:测试服务端最大连接SOCKET数量,以保证服务端有可用的SOCKET资源分配,

我测试的项目BUG:服务端创建5000个SOCKET后无法创建成功,因配置的JAVA内存不够及系统开放的端口数不够
上述两点的测试工具实现:只有IOCP和AIO底层测试验证最有效,测试同时观察在 N并发/秒 得出瓶颈拐点

5:4次挥手断开:
测试用例:压力机设置SOCKET选项,在请求大量握手链接后迅速关闭,需要大并发操作

//快速关闭socket
::setsockopt(pUsoc, SOL_SOCKET, SO_REUSEADDR, (const char*)&on, sizeof(bool));//复用端口
::setsockopt(pUsoc, SOL_SOCKET, SO_DONTLINGER, (const char*)&off, sizeof(bool));//打开LINGER
::setsockopt(pUsoc, SOL_SOCKET, SO_LINGER, (const char*)&m_sLinger, sizeof(linger));//设置强制关闭SOCKET

测试逻辑点:测试因压力机器人修改Socket配置,客户端主动断开,服务端无法得到4次挥手的通知包,导致需要N时间节点才关闭Socket/不关闭Socket

项目测试BUG:因无法得到4次挥手包,服务端存在大量异常长连接,导致拒绝服务

6:拥塞控制-简单理解为,堵死汽车排气孔,同时踩油门
测试用例:压力机客户端设置1字节接受协议或1字节缓存区,同时请求需要响应的大数据:例如排行榜

测试逻辑点:由于拥塞控制特殊性,TCP会开辟内存缓存这部分数据,简单说,服务端产生的协议多,但有效发出的少,系统缓存剩余协议越来越多,硬件监控服务端内存暴涨

项目测试BUG:同上,设置好SOCKET参数后,请求排行榜数据,服务端内存暴涨,直接崩溃

7:重传控制
测试用例:搭建测试代理工具,对包传输顺序/丢包进行参数配置转发

测试逻辑点:由于重传的特殊性是传输层控制,所以在应用层模拟丢包和乱序请求

大家常用的kugou音乐的APP通过工具模拟重传控制,在试听音乐的时候,进行丢包和乱序测试,APP崩溃

8:流传输方式,内容比较多,慢慢看
测试用例:协议粘包 - 通过代理工具自动*N倍,既123变123123123123123123

测试逻辑点:1)测试服务端最大可分割的数据包上限,2)测试服务端是否并发执行协议,如领取任务、购买物品、创建角色等等

项目BUG:创建N个123角色在数据库中,且完整协议分割最大上限为4,后期调至20份/Max缓存区

测试用例:协议少包 - 通过工具1字节发送,1)高速、2)慢速

测试逻辑点:1)高速发送1字节,服务端读取处理协议,来消耗CPU资源,2)占用服务端缓存区长时间消耗资源,以上2点测试服务端对协议读取健壮性

9:测试用例:服务端私有协议 - 构造异常数据及有效数据进行测试

测试逻辑点:

1)有效数据
包体 - 这里用的有效数据既为超大包体,如喊话等可变协议,超过服务端缓存器上限
协议接口 - 对于已知的服务端协议响应接口遍历,遍历测试是否有未开放的或频繁调用
协议参数 - A使用B的参数如用户ID、数值类的:0 负数 边界值 正数溢出

2)异常数据
包体 - 修改包体边界值或自定义数据,既包体过短或超长数值
协议接口 - 遍历服务端接口,既不存在的接口,自动+N修改
协议参数 - 遍历字节既协议自动+N修改
特殊协议 - 及发送非正常的协议如1字节 00 11 22 33 - FF

项目BUG:
1)协议包体:移动协议修改包体数据,包体修改为8字节,既无协议接口的参数,服务端报错崩溃
2)协议参数:1、A用户使用B用户ID登陆,强制踢B下线、2、购买数量*金额超服务端变量上限,数值溢出倒贴钱给玩家、3、负数不用多说,卖东西-1,多送一件给玩家、4、有除法计算的地方使用0数值,服务端崩溃
3)协议接口:1、副本调用怪自爆协议,秒杀所有怪、2、角色在监狱中调用传送接口越狱
4)攻击类,并发N/秒请求大数据的协议接口,服务端内存Cpu暴涨,后期限制请求频率

10:UDP主要特征有:包传输、无粘包、错包、无连接,无拥塞控制、无重传机制

测试用例:应用层 - 1)协议测试同TCP 、2)大并发请求(性能测试同TCP)

测试逻辑点:1)由于传输层无特殊处理,即传输层在协议测试上只有丢包、乱序、延迟等3项,测试方案同TCP的测试用例、2)应用层的方案延用TCP中测试用例:1)有效数据、2)异常数据
1)有效数据
包体 - 这里用的有效数据既为超大包体,如喊话等可变协议,超过服务端缓存器上限

2)异常数据
包体 - 修改包体边界值或自定义数据,既包体过短或超长数值

TCP与UDP的一些心得的更多相关文章

  1. 实现TCP、UDP相互通信及应用

    实验名称  Socket编程综合实验(1) 一.实验目的: 1.理解进程通信的原理及通信过程 2.掌握基于TCP和UDP的工作原理 3.掌握基本的Socket网络编程原理及方法 二.实验内容 1.掌握 ...

  2. C++网络套接字编程TCP和UDP实例

    原文地址:C++网络套接字编程TCP和UDP实例作者:xiaojiangjiang 1.       创建一个简单的SOCKET编程流程如下 面向有连接的套接字编程 服务器: 1)  创建套接字(so ...

  3. 【校验】TCP和UDP的校验和

    一开始,私以为校验和只是简单的求和得到的结果,后来在TCP和UDP里面看到使用的校验和方式有点奇怪--二进制反码(循环进位)求和. 人类的认知过程必将从简单到复杂,看下这个二进制反码循环求和是啥子意思 ...

  4. 初入网络系列笔记(2)TCP和UDP

    一.借鉴说明,本博文借鉴以下博文 1.BlueTzar,TCP/IP四层模型, http://www.cnblogs.com/BlueTzar/articles/811160.html 2.叶剑峰,漫 ...

  5. 传输层协议TCP和UDP

    本文力图简洁,让读者对TCP和UDP有个初步的认知.闲话少说,现在开始吧.TCP和UDP都是传输层的协议.TCP通过三次握手建立可靠连接,对未送达的消息重新进行发送.UDP不建立连接而直接发送,对未送 ...

  6. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  7. http、tcp、udp、OAUTH2.0网络协议区别

                    一.先来一个讲TCP.UDP和HTTP关系的 1.TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层. 在网络层有IP协议.ICMP协议.ARP协议.RAR ...

  8. TCP 三次握手四次挥手, ack 报文的大小.tcp和udp的不同之处、tcp如何保证可靠的、tcp滑动窗口解释

    一.TCP三次握手和四次挥手,ACK报文的大小 首先连接需要三次握手,释放连接需要四次挥手 然后看一下连接的具体请求: [注意]中断连接端可以是Client端,也可以是Server端. [注意] 在T ...

  9. OSI参考模型及各层功能,TCP与UDP的区别

    OSI参考模型:ISO/IEC 7498标准定义了网络互联的7层结构模型,即开放系统互连参考模型. OSI参考模型定义了开放系统的层次结构.层次之间的相互关系,以及各层所包括的可能的服务.OSI的服务 ...

随机推荐

  1. 【WPF学习】第四十一章 变换

    通过使用变换(transform),许多绘图任务将更趋简单:变换是通过不加通告地切换形状或元素使用的坐标系统来改变形状或元素绘制方式的对象.在WPF中,变换由继承自System.Windows.Med ...

  2. [scrapy]安装报错: Twisted安装错误

    http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载whl文件 然后 pip install <whl文件名> 安装 Scrapy s ...

  3. 2018icpc南京现场赛-I Magic Potion(最大流)

    题意: n个英雄,m个怪兽,第i个英雄可以打第i个集合里的怪兽,一个怪兽可以在多个集合里 有k瓶药水,每个英雄最多喝一次,可以多打一只怪兽,求最多打多少只 n,m,k<=500 思路: 最大流, ...

  4. symfony开发步骤简述

    对symfony具体开发也有了一定时间的接触了,下面说一下开发步骤,以备自己以后查看; 1.确定表关系,字段等 2.在相应的模块下的Rescourse下config/Doctrine创建相应的.orm ...

  5. 深入JVM垃圾回收机制,值得你收藏

    JVM可以说是为了Java开发人员屏蔽了很多复杂性,让Java开发的变的更加简单,让开发人员更加关注业务而不必关心底层技术细节,这些复杂性包括内存管理,垃圾回收,跨平台等,今天我们主要看看JVM的垃圾 ...

  6. 终于成功部署 Kubernetes HPA 基于 QPS 进行自动伸缩

    昨天晚上通过压测验证了 HPA 部署成功了. 所使用的 HPA 配置文件如下: apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscale ...

  7. v-charts x轴字体斜显示

    如下图,因为X轴内容太多,放不下,插件默认间隔显示需求:X轴内容要全部显示出来(只有斜显示或固定宽多余的用省略代替,本来需要就是想显示全部内容,所以只能取斜显示的方案) 先看看v-charts的文档: ...

  8. C# bubble sort,selection sort,insertion sort

    static void Main(string[] args) { InsertionSortDemo(); Console.ReadLine(); } static void InsertionSo ...

  9. Android布局管理器-使用TableLayout表格布局管理器实现简单的用户登录页面

    场景 Android布局管理器-使用FrameLayout帧布局管理器显示层叠的正方形以及前景照片: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  10. 掌握这13个MySQL索引知识点,让你面试通过率翻倍

    数据库索引有关的知识,说实在的,真的是很复杂,本来想好好看看这方面的东西,然后写篇文章详细谈谈的,后来发现索引的知识太难太深,要谈得全面又详细真的很难,所以最后还是把自己学到的和想到的变成下面一个个的 ...