草庐IT

Networking

全部标签

networking - 禁用 TCP SYN 重传

我正在开发一个通过TCP连接到服务器的客户端。服务器被配置为如果一个服务器关闭,则与另一台服务器建立连接。我的要求是如果2s内没有和第一台服务器建立TCP连接,客户端需要和第二台服务器建立连接。以下是我基于测试的观察-TCPSYN消息由客户端发送到第一个服务器以建立连接。由于第一台服务器宕机,1s后,TCPSYN重传发送给第一台服务器。2秒后(由于处理和网络延迟),客户端将TCPSYN消息发送到第二个服务器。因此,将SYN消息发送到第二台服务器需要3秒(1秒+2秒),这不是我想要的。我希望TCPSYN消息在2秒内发送到第二台服务器。为了在2秒内将TCPSYN消息发送到第二个服务器,我想

c++ - QT QTcpServer 没有及时连接

我正在制作一个简单的程序,它将“连接”到自身然后发送数据。它启动一个QTcpServer然后等待任何传入的连接。我有一个单独的函数,它将依次尝试在我决定的本地主机和端口上连接到该服务器。这在我在命令提示符下打开Telnet时起作用,但现在在我的实际程序中起作用。这是我使用的代码(有些是来自其他来源的代码片段)主窗口.cpp:#include"mainwindow.h"#include"ui_mainwindow.h"MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->s

sockets - Wireshark 中的 [TCP ACKed unseen segment] 等是什么?

我已经通过SCP传输数据并在上图中得到一些消息(黑色)。这些消息有什么关系(TCPACKed...,TCPZerowindow和TCPPrev...)。非常感谢您,对于网络新手的语言感到抱歉。 最佳答案 TCP数据包上的ACK给出其他机器下一步应使用的序列号:SYN(seq=1)->receivedrecivedreceived2bytesreceived即ACK在每个数据包上发送到另一台机器说:“我期望你的下一个序列号是这个数字”。如果从未看到部分数据,ACK永远不会增加。如果在上面的示例中没有收到“hi”(例如网络拥塞),右侧将

networking - 为什么 UDP 和 TCP 使用端口号而不是 PID 来定位目标?

如上。也许端口号更可靠,因为进程可以终止?谢谢 最佳答案 进程不是网络概念。不清楚通信方是否有进程的概念。此外,一个进程可以有多个连接。 关于networking-为什么UDP和TCP使用端口号而不是PID来定位目标?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/37642576/

sockets - 我们可以在收到应用程序级别的确认后重置 TCP 连接吗?

我正在研究重置TCP连接作为TIME_WAIT问题的解决方案。让我们以下面的请求-回复协议(protocol)为例:客户端打开到服务器的连接。客户端发送请求。服务器回复。服务器关闭。客户端也关闭。这会导致服务器出现TIME_WAIT状态。作为一种变体,客户可以先关闭。然后,TIME_WAIT到达客户端。我们不能用下面的步骤替换步骤4和5吗?客户端重置。服务器重置以响应传入的重置。这似乎是一种避免TIME_WAIT问题的方法。服务器已通过发送回复证明它收到并处理了请求。一旦客户端收到回复,连接就可以消耗掉,就可以消失了。这是个好主意吗? 最佳答案

python - TCP 线程 python

我正在通过Python学习一些网络知识,并提出了TCPServer多线程的想法,因此我可以连接多个客户端。问题是我只能连接一个客户端。importsocketimportosimportthreadingfromtimeimportsleepfromthreadingimportThreads=socket.socket(socket.AF_INET,socket.SOCK_STREAM)print('SocketPreparado...')defMain():host='127.0.0.1'port=5000s.bind((host,port))print('Enlazelisto.

c - 使用 TCP/IP 通过网络发送可变大小的数据包

我想通过内部网络在2个Linux操作系统之间发送可变大小的数据包。数据包的大小可变,其长度和CRC在header中指示,header也随数据包一起发送。大致像-structhdr{uint32crc;uint32dataSize;void*data;};我在应用层使用CRC来克服固有的limitationofTCPchecksums我遇到的问题是,dataSize字段本身有可能损坏,在这种情况下,我不知道下一个数据包从哪里开始?因为在接收方,当我读取套接字缓冲区时,我读取了n个这样的数据包。所以dataSize是我可以正确到达下一个数据包的唯一方法。我的一些想法是-如果发生CRC不匹配

sockets - NAT 路由器在拒绝来自先前打开的连接的传入数据包之前等待多长时间

在拒绝数据包之前,NAT路由器通常允许来自先前打开的TCP流的传入数据包多长时间?我正在开发一个P2P应用程序,我不想与我的中央服务器和中继数据包保持开放连接。相反,我正在考虑让客户端轮询中央服务器,保存这些ip和端口号,然后从服务器返回到每个客户端以在以后的某个时间启动P2P连接。如果NAT长时间允许数据包进入,这是可行的。如果这不可能,有谁知道其他P2P应用程序如何建立NAT横向/连接? 最佳答案 这不太可能奏效。典型的家用路由器会跟踪TCP连接的状态,不会转发已关闭连接上的流量。即使对于事件TCP连接,路由器保持打开连接但不发

c - 手动完成 3 次握手?

准确地说,我有一个简单的程序,它制作一个TCP同步数据包并将其发送到远程主机。代码TCP.c://Datapartdata=datagram+sizeof(structiphdr)+sizeof(structtcphdr);strcpy(data,datagram);//someaddressresolutionstrcpy(source_ip,sourceip);sin.sin_family=AF_INET;sin.sin_port=htons(80);sin.sin_addr.s_addr=inet_addr(destinationip);//FillintheIPHeaderip

networking - 有没有办法将 ping (icmp) 数据包转换为 TCP 数据包?

我想让PING包走代理程序,但是这个程序只支持从TCP层转发数据包,不支持转发ICMP数据包。有什么解决办法吗? 最佳答案 如果您需要工具,可以使用像psping这样的软件。,paping和tcping.他们测试与ICMPPing类似但基于TCP的时间响应。如果需要手工实现,可以使用SYN包及其响应(SYNACK)来衡量。对于C#,this线程正在讨论实现。 关于networking-有没有办法将ping(icmp)数据包转换为TCP数据包?,我们在StackOverflow上找到一个类