草庐IT

Networking

全部标签

linux - 是否值得增加 TCP MTU 以及 Dont Fragment 标志如何工作

我有一个覆盖TCP的自定义协议(protocol),可以描述如下:-客户端向服务器发送数据包A。服务器确认数据包A。客户端发送数据包B。换句话说,在任何时间点,只有一个未确认的数据包。因此,尽可能快地发送消息的考虑因素是:-数据包多久可以到达目的地。这意味着最少的碎片由TCP完成。如果一个数据包可以到达单个分段而不是5个分段,则服务器可以更快地响应它。服务器为该数据包完成的工作单元。目前,我并不关注这一点,但最终,我也会触及它。还假设损失率可以忽略不计。Nagle已禁用。典型的数据包大小从1KB到3KB不等。带宽为1Gb/秒我在想,如果我将MTU配置为等于最大消息大小(3KB+head

node.js - Node js - 为什么 3 个连接?

考虑这个用于node.js的小型服务器varnet=require('net');varserver=net.createServer(function(socket){console.log("Connectiondetected");socket.on('end',function(){console.log('serverdisconnected');});socket.write("HelloWorld");socket.end();});server.listen("8888");当我在MacbookPro上使用Chrome测试服务器时,我在控制台中收到三倍的“检测到连接”消

performance - TCP 最大吞吐量和浏览器

理论上,最大tcp速度是min{rwnd,cwnd}/RTT,其中cwnd是拥塞窗口大小,rwnd是接收窗口大小。假设cwnd足够大,那么它就是rwnd/RTT。现在,如果最大窗口大小为65Kbytes,我得到(使用来自某些站点的这些计算):RTT10ms=>TCPthroughput=52428000bps=52MbpsRTT20ms=>TCPthroughput=26214000bps=26MbpsRTT50ms=>TCPthroughput=10485600bps=10MbpsRTT100ms=>TCPthroughput=5242800bps=5.2MbpsRTT150ms=>

sockets - TCP/UDP 多路分解是如何工作的?

我有以下声明。“在TCP中,接收方主机使用所有源IP、源端口、目标IP和目标端口将数据报定向到适当的套接字。而在UDP中,接收方仅检查目标端口号来定向数据报。”以上说法是否正确?如果是,是否意味着在TCP中,同一个端口可以用于一个进程中的多个套接字,而在UDP中,一个套接字只能用于一个进程中的一个端口?不同进程中的套接字呢?多个进程可以在TCP/UDP中使用同一个端口吗?(编程语言:C/C++/Java)如果不是,为什么? 最佳答案 "InTCP,thereceiverhostusesallofsourceIP,sourceport

delphi - 一个Form可以放多个ClientSocket组件吗?

我想编写一个程序,从一台计算机连接到多台计算机。有点像“命令中心”,您可以在其中在一台PC上远程监控所有远程系统。我的计划是在一个表单上有多个客户端套接字。他们将远程连接到个人电脑。因此,他们可以向他们请求信息以显示在窗口上。远程PC将成为主机。这可能吗? 最佳答案 直接回答您的问题:是的,您可以这样做。长答案:是的,你可以这样做,但你确定你的设计是正确的吗?您确定要创建并行连接,每个客户端一个吗?可能你不知道!如果是,那么您可能希望在单独的线程中运行它们。如果您想不时发送一些命令(并且您没有进行某种持续的视频监控),为什么不只使用

networking - TCP 序列号

为什么我们需要TCP头中的序列号和下一个序列号字段?下面是使用wireshark捕获的数据包中的TCPheader。 最佳答案 首先,Wireshark中[brackets]中的字段是计算字段-它们不在数据包中。Wireshark显示的下一个序列号字段就是这样一个字段。Wireshark通过获取“序列号”字段并将其添加到数据包的有效负载大小来计算。毫不奇怪,这两个数字之间的差异是1430——一个常见的TCP负载大小。TCP中的序列号以字节为单位-它们基本上表示,此数据包的有效负载插入TCP流中的哪个字节位置。“已确认”序列号显示我确

sockets - 大量连接使用 TCP 还是 UDP?

我想创建一个具有以下特征的P2P网络:低延迟并不重要丢包裹没关系节点只会在附近发送少量数据不会有NAT/防火墙问题,每个节点的公共(public)ip上都有一个开放端口每个节点都连接到每个其他节点通常我会将TCP用于任何对时间不敏感的事情,但最后一个要求会导致节点长时间拥有大量打开的连接。如果我没记错的话,使用TCP连接到1000个服务器意味着我必须使用1000个端口来处理这些连接。另一方面,UDP只需要每个节点一个端口。所以我的问题是:TCP是否能够在网络中处理上述要求,例如1000个节点而不调整系统?在这种情况下,UDP会更适合吗?还有什么会破坏这两种协议(protocol)的交易

python - TCP 网络 - 手动编程 SYN、SYN ACK、ACK?

如果您正在编写一个基本的pythonTCP服务器和客户端,您需要自己添加SYN、SYNACK和ACK响应,还是由套接字模块处理?如果需要自己写,会这么简单吗?客户:#setupclientSocketdata="SYN"clientSocket.send(data.encode('utf-8'))if((clientSocket.recv(1024)).decode('utf-8')=="SYNACK"){data="ACK"clientSocket.send(data.encode('utf-8'))}服务器以类似的方式响应,检查recv是否为SYN,然后发送SYNACK。如果不是,

networking - 追踪数据包被阻止/丢弃的位置

当我在中国时,我公司的网站被封锁了大约24小时。我假设它是“伟大的中国防火墙”,但我想知道是否有任何方法可以找出数据包或TCP/IP连接被阻止的确切位置。我能够验证它没有被阻止在我们这一端(我使用本地主机文件指向中国境内的备份服务器)或在我们服务器端(其他人仍然可以连接到两者)ISP)。我尝试了tracert,但只有端口80被重定向。我可以毫无问题地通过ssh连接到服务器。另一个问题是中国的大多数路由器只是丢弃数据包而不响应ping等,因此您无法找到它们的IP地址。future是否有任何工具可以追踪数据包被阻止的位置? 最佳答案 t

windows - 如何关闭 Windows 机器上的套接字?

我有一个应用程序,我怀疑它会遇到问题,因为网络节点关闭了它与它通信的各种其他服务器的套接字。我想通过关闭可以在netstat中看到的一个或多个连接来模仿该行为。我不是操作系统级别网络方面的专家,所以这个问题可能很愚蠢,如果是这样,您对如何模拟这种情况还有其他建议吗? 最佳答案 在尝试模拟问题之前,您可以使用Wireshark确定地诊断情况。或者,在*nix上,tcpdump。您应该能够捕获流量和观察者,无论其中一台服务器是否向您发送RST。如果您正在接收RST那么这可能是由于服务器本身(在等待您向它们发送响应或数据时超时并关闭连接,