Articles of tcp

在iptables规则中的–tcp-flags中使用ALL的实用程序

我想知道以下两个–tcp-flags规则有什么区别: 1) -p tcp –tcp-flags SYN,FIN,RST SYN,FIN,RST 2) -p tcp –tcp-flags ALL SYN,FIN,RST

Windows Server 2012中缺lessTcpTimedWaitDelay

突然我的服务器日志显示: 由于系统缺less足够的缓冲空间或队列已满,因此无法执行套接字操作 我GOOGLE了,发现这些链接作为解决这个问题的build议: https://superuser.com/questions/842585/getting-system-lacked-sufficient-buffer-space-or-because-a-queue-was-full 在服务器访问互联网时,得到“在套接字上的操作不能执行,因为系统缺乏足够的…” 他们说,你可以改变registry中的TcpTimedWaitDelay的值,问题可能会消失。 但是,我无法在Windows Server 2012上find这个值。我只是可以添加它。 但是我不确定它是否真的有用,因为我真的不知道如何测量这个关键的结果。 我该怎么办? 我应该将该密钥添加到registry中吗?

在Linux中限制每个连接的带宽

我真的不能谷歌,这让我感到惊讶,但也许我只是看错了方向…我想限制每个TCP连接的带宽,即。 所有的连接都来到一个单一的接口,使用相同的源地址,具有相同的目的地端口,每个连接应限制在例如。 5 Mbit / s。 这个想法是模拟数百个使用一个20 Gbit / s接口的DSL线路较慢的用户。 我想必须有一种方法来标记属于特定连接的所有数据包的唯一标记,然后使用此标记来限制速度,但我从来没有以这种方式使用iptables / tc: 非常感谢您的任何build议! 托马斯

Debian 8:无法让ClamAV在TCP 3310上收听

我试图让Clamav-daemon在Debian 8系统上运行,以便在TCP端口3310上侦听。我已经完成了以下工作: aptitude install clamav-daemon 然后修改/etc/clamav/clamd.conf ,使它现在在顶部有以下内容: # Added by me TCPSocket 3310 TCPAddr localhost # Already existed LocalSocket /var/run/clamav/clamd.ctl FixStaleSocket true LocalSocketGroup clamav LocalSocketMode 666 使用service clamav-daemon restart 。 我发现netstat -tap | grep clam netstat -tap | grep clam不返回任何东西。 运行ps aux | grep clam ps aux | grep clam返回: clamav 18559 11.4 10.3 649212 […]

当主服务器重新联机时强制HAProxy重置TCP连接

我已将HAProxy设置为支持2个服务器之间的TCP应用程序以实现高可用性。 因此,我有HAProxyconfiguration一个服务器作为主要和另一个作为备份。 故障转移到备份服务器几乎是完美的,但是我们目前看到一个问题。 当主服务器closures时,客户端的连接被重置,当客户端尝试重新连接时,它将连接到备份服务器,因为它应该(您可以看到当前的“Cur”连接从backendA到备份backendB系统蓝色]当A下降) 问题是,当主服务器重新联机时,客户端仍然保持连接对备份服务器开放: 由于应用程序的性质,保持与此备份服务器的连接并不理想。 当主服务器恢复时,是否有办法closures与备份服务器的连接? 重置该连接将导致客户端重新连接到主服务器,并解决我们的问题。 在我当前的configuration(haproxy.cfg)中的这个块的内容如下: backend ldm_back server backendA 172.31.xxx.xxx check port 388 server backendB 172.31.yyy.yyy check port 388 backup

我可以通过TCP / UDP进行VPN吗?

我有一个有限的代理,可以redirectTCP和/或UDP的距离。 (例如,从计算机A发送到计算机B的端口1234上的所有内容(仅TCP或UDP)将从计算机C出来,并转到计算机D上的端口1234.同样,从计算机D发送到计算机C的所有内容都将从计算机B出来,转到计算机A上的端口1234)计算机A和B在一个防火墙后面,而计算机C和D在另一个之后。 计算机B和C之间的连接本身应该是非常安全的,今天我并不试图去testing,但是我希望以某种方式在计算机A和D之间build立一个VPN。D可以承载任何种类的VPN服务器,最好没有任何安全性,因为我不想两次encryption的开销。 而A可以使用任何客户端。 我遇到的问题是PPTP使用TCP和GRE(我不能直接使用GRE,因为它不是TCP或UDP)L2TP使用UDP和ESP(和GRE一样,我不能直接使用它,它不是TCP或UDP)OpenVPN可以configuration为只使用TCP或UDP,但它做了一些类似SSL的握手,我的代理似乎不喜欢。 普通的TCP和UDP应用程序在我的系统中正常工作。 如果他们使用SSL,那么他们似乎有问题,因为代理实际上是接受TCP和UDP连接,并从另一台计算机重新发送它们。 UDP可能是首选,因为我没有得到我已经读过的关于TCP的TCP问题。 同样,协议本身的安全性不是问题。 我宁愿它完全不encryption,因为B和C之间的桥梁已经安全,而且SSL似乎会造成问题。

如何阻止出站TCP连接或限制到已知的外部服务端口(即22,80,443,3306等)?

我正在build立一个服务,要求客户端通过TCP端口连接到它。 它可以通过互联网在某个已知的端口上访问(比如9999)。 所以,客户端需要打开一个TCP连接到“myhost.com:9999”。 具体来说,该服务是针对networking服务器,包括在Heroku上运行他们的应用程序的人。 我的问题是: 服务器/主机/提供程序阻止出站TCP连接有多常见? 我曾经在AWS上看到过这种情况,但是他们的VPC设置等等都是超级限制的。 我从来没有在其他地方见过,但我的经验在这里非常有限。 Heroku阻止出站TCP连接? 那么Azure云呢? 简而言之,如果我的服务需要人们通过特定端口的TCP连接到我的服务器,那么我可以从潜在的用户池中切出多less世界? 注意:在启动之前,我正计划使用SSL / TLS保护TCP连接。 我对细节仍然有点模糊,但安全难题的这一部分是有计划的。 更多详情 我有一个中央服务器(S),最终用户安装一个中间件层,即客户端(MW)。 MW将打开与S的连接并定期在其上发送/接收。 客户端不需要实现或理解协议,只需安装MW(Ruby中的Rubygem,Node中的npm包等)并提供一些configuration选项。 MW负责了解协议和通信。 现在所有的处理都使用REST轮询。 它的工作,但似乎有点杂乱,不必要的冗长。 S是用Elixir编写的,这意味着它理论上可以处理大量的开放空闲连接。 所以,使用REST轮询以外的东西似乎是个好主意。 另一种select是websocket,其中MW通过websocket连接到S. 也许这实际上是最好的select,但是对于我来说,我们现在处于一个超过80/443港口的世界似乎有点奇怪。 另外,我不确定使用websockets进行服务器到服务器通信的常见情况。 他们似乎更倾向于向连接的JavaScript客户端提供内容。 最终,我现在的REST轮询解决scheme的工作原理将会达到很高的程度,比我实际达到的要高。 我只是很好奇要做什么才能“做对”。

为什么我无法使用ToS字段排列TCP通信的优先级?

我正在尝试优先使用IP头中的ToS字段的TCP通信。 我通过发送1GB数据饱和接口(以太网),通过iperf与ToS字段设置为0x10(最小延迟)。 然后我用默认的ToS(0)启动另一个TCP客户端。 期望:我的TCP客户端不应该发送数据,直到iperf完成发送数据。 结果:我的客户端发送的数据甚至是难以发送的iperf正在发送更高优先级的数据包。 我也尝试通过创build2个独立的客户端并使用iptables为各个客户端分配0x10和0x08 ToS来创build相同的场景。 我用:iptables -A PREROUTING -t mangle -p tcp –sport 5000 -j TOS –set -tos Minimize-Delay 我仍然不能优先考虑一个客户。 我使用iptables版本1.4.21使用Ubuntu(14.04) 有人可以帮我解决这个问题吗? 谢谢Varun

TIME_WAIT端口是否可以用于不同的远程服务器?

在一台机器上,我发现netstat使用相同的本地端口有很多的TIME_WAIT连接(到不同的远程服务器): tcp 0 0 10.32.198.120:10240 10.32.92.81:4000 TIME_WAIT tcp 0 0 10.32.198.120:10240 10.66.32.192:80 TIME_WAIT tcp 0 0 10.32.198.120:10242 10.32.92.81:4000 TIME_WAIT tcp 0 0 10.32.198.120:10242 10.66.32.192:80 TIME_WAIT tcp 0 0 10.32.198.120:10243 10.32.92.81:4000 TIME_WAIT tcp 0 0 10.32.198.120:10243 10.66.32.192:80 TIME_WAIT tcp 0 0 10.32.198.120:10244 10.32.92.81:4000 TIME_WAIT tcp 0 0 10.32.198.120:10244 10.66.32.192:80 TIME_WAIT tcp 0 0 10.32.198.120:10245 10.66.32.192:80 TIME_WAIT […]

在AWS EC2 Windows Server 2008实例上的TomEE服务器上下载速度较慢

我有一台在Windows Server 2008 AWS m1.medium实例上运行的Tomee 1.5.1机器。 我把2.5 MB的静态.jpg文件放在服务器上,用我的电脑在我的机器上用Chrome下载它大概需要25 seconds 。 观察Wireshark中的stream量时,我发现当接收器窗口为256,缩放因子为256(左移8)时,接收器的Window Size在64 KBbytes上保持不变。 典型的交换是: 消除的因素 : 服务器过载 – 不是。 服务器的带宽很低 – 至less从服务器初始化连接时不是这样。 在服务器机器上运行ookla speedtest时,我的位置周围的一些基准testing提供商显示大约60 Mbps的上行/下行链路。 3.接收器速度慢/configuration错误 – 不是 – 在2秒内从某个文件共享服务器下载相同的文件。 随着交通/拥堵的增加,窗口大小会随之增大,并且会更大。 编辑1 禁用启发式在cliend没有帮助 编辑2 另一个问题是,为什么发送者似乎发送的数据是1460 * 6 + 240 = 9000个字节的系列,并且没有多于一个“优秀”系列,这意味着他一旦发现了一个新的数据,前一堆 编辑3: 事实certificate,http连接器有一个设置socketBuffer – “为缓冲区输出缓冲区提供的缓冲区大小(以字节为单位) socketBuffer 1可以指定禁止使用缓冲区。默认情况下,缓冲区为9000字节将被使用。“ – 这些正好是我们看到的即将离任的批次的9000个字节。 可能的情况是,tcp驱动程序将传出的数据包存储在缓冲区中,以便在需要的情况下进行重新传输,直到得到确认,并且由于某种原因,客户端数据库正在批量返回,从而批量传输stream量。 如果我们将其更改为4MB,批量增加到64KB … 如果stream量不是SSLencryption的。 如果SSL打开,批处理是16kb。 需要检查以下内容: […]