当前位置: 首页 > news >正文

如何使用CANoe自带的TCP/IP Stack验证TCP的零窗口探测机制

如果想利用CANoe自带的TCP/IP协议栈验证TCP的零窗口探测机制,就必须添加一个网络节点并配置独立的CANoe TCP/IP协议栈,作为验证对象。而与它进行TCP通信的对端也是一个网络节点,但不要配置TCP/IP协议栈,而是使用CAPL代码在底层组装TCP报文模拟TCP通信过程。这样可以尽量减少对端协议栈的影响。

零窗口探测机制的原理:

当TCP通信双方A和B建立连接后,就可以在通道上传输数据。但如果有一方的接收缓冲区满了,TCP层再接收到数据无法存储进接收缓冲区,就会造成数据丢失。所以TCP在通信时需要告诉对方自己的接收缓冲区大小,发送TCP报文时用window字段表示自己的接收缓冲区。对方收到报文时,如果window字段为0,即使应用层有数据要发送,TCP也不会发送报文。

但TCP层也不能无限期地等待,因为接收缓冲区剩余空间是动态变化的。这就要求TCP层能够提供一种机制探测对方的接收缓冲区,这就是零窗口探测机制。

根据上面的描述,只需要在建立连接时让对方发送过来的SYN报文的window字段为0,然后发送数据,TCP层肯定立刻发送。而是在等待一定时间后发送零窗口探测帧。

当Server端在建立TCP连接时发送的SYN报文的window字段为0:

Server端发送TCP报文window字段为0

Client在连接建立后发送"Hello"数据,TCP层不会立刻发送,而是在等待一定时间后发送了一条TCP报文,这条TCP报文把

http://www.lryc.cn/news/411001.html

相关文章:

  • 二进制搭建 Kubernetes v1.20(中)
  • Scrapy 爬取旅游景点相关数据(七):利用指纹实现“不重复爬取”
  • java的对象向上转型
  • Navicat Premium 16破解
  • 【C/C++】C语言到C++的入门知识点(主要适用于C语言精通到Qt的C++开发入门)
  • docker 建木 发版 (详细教程)
  • 什么样的人适合学习网络安全?
  • 大厂linux面试题攻略四之Linux网络服务(二)
  • MySQL和PostgreSQL group by后 Concatenate 拼接所有的字符串
  • Python爬虫技术 第24节 数据清洗和预处理(二)
  • conda常用命令整理
  • JDK8新特性之Lambda表达式快速入门
  • QEMU源码全解析 —— CPU虚拟化(14)
  • libsoup的简单使用
  • electron项目搭建
  • 【CVPR2024】Efficient LoFTR: 高效的 LoFTR:具有类似稀疏的速度的半密集局部特征匹配
  • 【Golang 面试 - 基础题】每日 5 题(九)
  • 《程序猿入职必会(4) · Vue 完成 CURD 案例 》
  • 编程技巧:如何优雅地合并两个有序数组?
  • Vue组件库移动端预览实现原理
  • FastAPI(七十五)实战开发《在线课程学习系统》接口开发-- 创建课程
  • 【C++】 条件变量实现线程同步示例
  • linux下载redis安装并指定配置文件启动
  • 线性结构、线性表、顺序表、链表、头插法、尾插法、中间插入或删除一个节点
  • C# Task.WaitAll 的用法
  • vue2 前端实现pdf在线预览(无插件版)
  • 排序XXXXXXXXX
  • 【文件解析漏洞】实战详解!
  • 【杂谈】学会让你节省三秒钟——Dev-c++的缺省源
  • 推荐一款前端滑动验证码插件(Vue、uniapp)