C++模拟TCP滑动窗口传输

article/2025/9/30 18:32:56

此程序是用C++进行模拟tcp的“滑动窗口”操作,具体操作如下:
1、首先在提示下发送端输入发送信息和窗口大小
2、调用tcp()函数进行将发送端信息发送给接收端操作
3、具体具体原理如下:
1)发送端每次将窗口大小的信息传给接收端
2)接收端对收到信息进行存储,并发送ack确认给发送端
示例:
1、输入“qwertyuiopasdfghklzxc”作为发送信息
在这里插入图片描述

2、输入“5”作为窗口大小
在这里插入图片描述

4、输出tcp传输的过程

在这里插入图片描述
在这里插入图片描述
代码如下:

#include <iostream>
#include <string.h>
using namespace std;void print(char (*m)[30],char *n,int s,int l){int i;cout<<"发送端如下↓"<<endl;cout<<"信息队列:";for(i=0;i<l;i++)cout<<m[0][i]<<' ';cout<<endl<<" ack接收:";for(i=0;i<l;i++)cout<<m[1][i]<<' ';cout<<endl<<endl<<"接收端如下↓"<<endl;cout<<"信息队列:";for(i=0;i<l;i++)cout<<n[i]<<' ';cout<<endl<<endl;
}int tcp(char (*m)[30],char *n,int s,int l)
{char ack[7]="123456";int i,j,k;j=i=0;k=1;cout<<"-------------------------------------------------------"<<endl;cout<<"发送信息为:"<<m[0]<<endl;cout<<"发送信息长度为:"<<l<<endl;cout<<"发送窗口大小为:"<<s<<endl;while(i<l){for(;j<s && i<l;i++){n[i]=m[0][i];m[1][i] = ack[j++];}j=0;cout<<"-------------------------------------------------------"<<endl;cout<<"第"<<k<<"次传输结果:"<<endl;print(m,n,s,l);k++;}
}
int main()
{int l,s;   ///l表示发送信息的长度,char m[2][30]; ///用二维字符组表示发送端发送信息内容与接收到的ack确认信息char n[30];    ///用字符串表示接收端接收信息cout << "请输入发送端信息:" << endl;cin>>m[0];l=strlen(m[0]);while(1){cout << "请输入窗口大小(小于等于6):" << endl;cin>>s;if (s<=5)break;}for(int j = 0;j<l;j++){n[j]='\0';m[1][j]='\0';}tcp(m,n,s,l);return 0;
}

http://chatgpt.dhexx.cn/article/GNlePNXI.shtml

相关文章

TCP滑动窗口、流量控制及拥塞控制详解

一、TCP滑动窗口 TCP虽然是面向字节流的&#xff0c;但是TCP传输的单元确实报文段。一个TCP报文段分为首部和数据部分。TCP首部前20个字节是固定的&#xff0c;后面有4N个字节是可选的。因此&#xff0c;TCP首部最小字节数是20个字节。 下面我们看下一TCP首部中几个重要的字段…

TCP 滑动窗口是个什么东西?这篇讲清楚

今天我们来看TCP的滑动窗口问题&#xff0c;无论是在工作中&#xff0c;还是在笔试面试中&#xff0c;滑动窗口都是非常重要的概念&#xff0c;今天&#xff0c;图文并茂给大家讲清楚&#xff0c;一起来看看。 一、TCP的优势 TCP经过多年厮杀&#xff0c;早已确立了坚实的江湖…

计算机网络之TCP滑动窗口

文章目录 计算机网络之TCP滑动窗口1.详细讲一下TCP的滑动窗口2. 聊聊 TCP 的滑动窗口 计算机网络之TCP滑动窗口 1.详细讲一下TCP的滑动窗口 在进行数据传输时&#xff0c;如果传输的数据比较大&#xff0c;就需要拆分为多个数据包进行发送。TCP 协议需要对数据进行确认后&…

运输层:TCP滑动窗口

一般来说&#xff0c;我们总是希望数据传输得更快一些。但是如果发送方发送的更快&#xff0c;接收方就可能来不及接收&#xff0c;这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快&#xff0c;要让接收方来得及接收。 滑动窗口就是用于实现流量控制的。可以…

TCP滑动窗口机制

滑动窗口机制 **作用&#xff1a;**利用滑动窗口机制可以很方便地在TCP连接上实现对发送方的流量控制。 1 . A给B发送数据&#xff0c;则A有发送缓冲区&#xff0c;B有接收缓冲区。应用层的所有需要发送的数据都被放在了发送者的发送缓冲区。发送窗口是发送缓存中的一部分&am…

TCP 滑动窗口

TCP滑动窗口主要有两个作用&#xff0c;可靠性、流控 TCP 如果都以一个包为单位&#xff0c;每发一个包进行一次确认应答的处理&#xff0c;这样的传输方式包的往返的时间越长和包的数量越多其通信性能就越低。 为了解决这个问题&#xff0c;TCP引入了窗口这个概念。在往返时…

tcp滑动窗口原理

参考&#xff1a;​​​计算机网络-传输层_wiscourper的博客-CSDN博客 TCP 滑动窗口 作用&#xff1a; 1. 提供TCP可靠性&#xff1a;对发送的数据进行确认2. 流量控制&#xff1a;窗口大小随链路变化 一、TCP窗口机制 TCP中窗口大小是指tcp协议一次传输多少个数据。因为TCP是…

TCP的滑动窗口

1. 引入滑动窗口的原因 如果没有滑动窗口&#xff0c;TCP每发送一个数据&#xff0c;都需要等待这一次确认应答。只有收到了上一个数据包的应答&#xff0c;才能再发送下一个。这样效率太低了当引入了滑动窗口机制后&#xff0c;就可以采取累计确认机制。TCP引入了窗口这个概念…

TCP滑动窗口原理终于清楚了!

我们在学习计算机网络的时候&#xff0c;遇到很多知识点。即便是背的滚瓜烂熟&#xff0c;让你去辨别知识点背后的深层逻辑的时候&#xff0c;可能就手足无措了。 比如小邱去面A公司的时候就被问到&#xff1a; 事实上&#xff0c;这个问题很大程度弥补我计算机网络的“漏洞”…

TCP滑动窗口模拟实战

1.TCP滑动窗口机制 客户端与服务端之间的通信是一个数据传输的过程&#xff0c;消息以数据包形式进行传输。 在传输的过程中&#xff0c;通过滑动窗口机制来同时传输多个数据包&#xff1b;发送端根据接收端的处理能力&#xff0c;适当控制发送窗口大小&#xff0c;实现流量控…

TCP滑动窗口机制(附图例)

文章目录 前言一、滑动窗口的引出二、流量控制2.1 16位窗口大小2.2 发送缓冲区2.3 逐步解析滑动窗口运作 三、快重传机制四、拥塞控制&#xff08;仅供参考&#xff09;五、延迟应答与捎带应答&#xff08;略&#xff09;总结 前言 博主个人社区&#xff1a;开发与算法学习社区…

TCP 滑动窗口(快速重传)

目录 一、滑动窗口的来由 二、滑动窗口 1、滑动窗口模型 2、滑动窗口可能出现的状况 (1) 客户端发送的报文丢了&#xff08;快重传机制&#xff09; (2) 服务端发送的ACK丢了&#xff08;先收到了排序靠后的ACK&#xff09; 三、滑动窗口大小为0时&#xff0c;何时才能继…

TCP滑动窗口

1、滑动窗口的概念 TCP每发送一个数据&#xff0c;都需要进行一次应答。当收到了上一个应答&#xff0c;在发下一个数据&#xff0c;但这种方式效率比较低。数据包往返时间越长&#xff0c;通信的效率就越低。   为了解决这个问题&#xff0c;TCP引入了窗口概念。即在接收窗口…

TCP 滑动窗口详解(非常实用)

一、滑动窗口简介 滑动窗口&#xff08;Sliding window&#xff09;是一种流量控制技术。早期的网络通信中&#xff0c;通信双方不会考虑网络的 拥挤情况直接发送数据。由于大家不知道网络拥塞状况&#xff0c;同时发送数据&#xff0c;导致中间节点阻塞掉包&#xff0c; 谁也发…

TCP滑动窗口机制(重要)

本文参考了一些优秀的书籍->图解TCP/IP,TCP协议卷一,小林coding,还有等等的知乎,百度. 小林coding 小林coding 知乎牛客的文章 : 万字长文 | 23 个问题 TCP 疑难杂症全解析_技术交流_牛客网 这篇文章是关于TCP的又一个重要机制-->滑动窗口,下面是这篇文章的思维导图: 目…

TCP滑动窗口详解

相较于UDP&#xff0c;TCP有以下区别&#xff1a; 1、可靠传输 2、流量控制 这两个功能都是依靠滑动窗口来实现的&#xff0c;本文就来解密TCP中的滑动窗口。 TCP实现可靠传输依靠的有 序列号、自动重传、滑动窗口、确认应答等机制。 序列号 首先我们说下序列号&#xff0c…

计算机视觉——SIFT图像匹配算法

第二章&#xff1a;SIFT&#xff08;尺度不变特征变换&#xff09; 1. SIFT简介1.1 SIFT算法特点1.2 SIFT特征检测的步骤 2. 尺度空间3. 高斯模糊3.1 高斯模糊3.2 高斯金字塔 4. DoG金字塔4.1 DoG局部极值检测4.2 DoG去除边缘响应4.2.1低对比度的响应点4.2.2不稳定的边缘响应点…

SIFT图像匹配原理及python实现(源码实现及基于opencv实现)

写在前面 黄宁然&#xff0c;看过你看过的算法&#xff0c;数学不好是硬伤。 问题来源&#xff1a; An***** xue100: https://bbs.csdn.net/topics/*********?spm1001.2014.3001.**77 &#xff08;1&#xff09;相机置于地面&#xff0c;离天花板的高度始终不变。在某位置拍…

计算机视觉——sift特征匹配+opencv(包含sift的低于3.4.3的opencv安装方法)

文章目录 实验环境环境配置&#xff08;低于3.4.3的opencv安装方法&#xff09;虚拟环境的搭建&#xff08;非必要&#xff09;局部图像描述子Harris 角点检测基本原理SIFT特征提取代码实现运行实例匹配图像展示匹配结果和分析 实验环境 系统&#xff1a;Ubuntu16.04 语言&…

使用 Javascript 和 OpenCV.js 进行人脸检测

大家好&#xff0c;我们将研究如何使用常规 Javascript、HTML Canvas 和 OpenCV.js 库从图像中检测人脸。 让我们先看一些例子&#xff0c;然后我们将继续编写代码并解释 如果您需要查看完整的代码库刚刚获得我的 github 存储库 GitHub - reactcodes/face-detection-javascript…