Articles of tcp

如何通过IP查找给定端口和时间段的TCP连接总数?

在Linux系统中,有很多方法可以通过连接IP列出给定端口的当前 TCP连接,但是: 如何计算每个源IP在一段时间内连接到端口的总数?

许多ISP的是端口25,我该如何select一个替代端口?

我正在构build一个将在不同networking上作为MUA / MTA组合的应用程序。 但是,许多networking与ISP的阻止端口25的SMTP。 因此,我还想打开一个辅助端口,以便一些安装可以通信,如果端口25closures。 我如何select第二个端口? 我知道有些人使用端口26或端口2525 。 select一个不会干扰现有软件的端口的正确方法是什么?

在FIN / ACK之后的TCP RST

我有最奇怪的问题:有时,只有非常具体的请求,Web服务器发送FIN数据报之后将RST发送到客户端。 首先,对设置的描述: 服务器:VM guest Ubuntu 12.04.1 LTS在Win7 x64主机上,桥接模式下ufw在主机上被禁用 客户端:Win7 x64主机上的Mountain Lion(hackintosh)VM guest虚拟机上的iOS模拟器,桥接模式。 两者都在同一个LAN上。 一个通过以太网连接到路由器,另一个通过WiFi连接。 服务器上的HTTP日志表明,有时候,客户端会发出multipe后续相同的请求。 客户端在收到来自服务器的RST数据包后,只需重新尝试。 我附加了几个tcpdumps: Good1是良好会话的服务器端tcpdump(“好”,意思是没有生成RST)。 Good3是一个很好的会话的另一个服务端tcpdump。 Good1和Good3之间的区别在于从服务器发送ACK的顺序,确认客户端的请求。 该请求在2个分段中得到。 一个用于HTTP标头,另一个用于包含空JSON对象的主体: "{}" 。 在Good1中,服务器在第二个请求到达之后确认两个请求。 在Good3中,服务器在请求到达时立即确认每个请求。 不是说应该有所作为。 Bad1是一个不良会话的转储,客户端和服务器端。 Bad2是另一个糟糕的会话,这次只是服务器端。 请注意,在所有“不良”会话中,服务器收到后立即确认每个请求。 在其他一些不好的会议上,情况是一样的,不包括在内。 奇怪的是,同样的行为在“Good3”中展现出来,使得这个观察有些没有意义。 我不明白这有什么关系。 底线是我无法确定好的和坏的会话之间的显着差异。 我的问题是: 为什么生成这些RST? 或者至less:我怎样才能进一步debugging,或在这里提供更多有用的信息? 编辑我学到的两个新事实: RFC(1122)(和维基百科,在“TCP”,在“连接终止”一节中)第4.2.2.13节指出,一个主机上的TCP应用程序可能会在连接读取其所有的数据之前closures连接缓冲区,在这种情况下,主机上的TCP会向对方发送一个RST,告诉它并不是所有已经发送的数据都被读取了。 我不确定我是否完全理解这一点,因为closures我的连接方面仍然允许我阅读,不是吗? 这也意味着我不能再写了。 但我不确定这是否相关,因为我在 FIN 后看到RST。 wsgiref(Python的开发模式HTTP服务器)发生了这种情况,这正是我所使用的。 我会继续更新,因为我发现更多。 谢谢! Good1 – 服务器端 13:28:2.308319 IP 192.168.1.51.51479> 192.168.1.132.5000:Flags [S],seq […]

增加出站TCP连接的数量

我正在为websockets开发一个小testing客户端。 我正在使用Ubuntu 11.04。 我已阅读https://stackoverflow.com/questions/410616/increasing-the-maximum-number-of-tcp-ip-connections-in-linux ,我做了以下 sudo sysctl -w net.ipv4.tcp_fin_timeout=10 sysctl -w net.ipv4.ip_local_port_range="1024 65535" 据我所知这些是入站连接,而不是出站。 当我input ulimit -n unlimited 我的客户和服务器运行在不同的盒子上。 即使以上所有情况,我都无法跨越1000个连线。 如果有不同的提示,请告诉我 回答我通过inputulimit -a来了解这一点,它显示了所有的内核限制。 ulimit -n unlimited 而 ulimit -a 返回nofile的值为1024.我以/etc/security/limits.conf文件的格式设置了限制 <user> soft nofile 8192 <user> hard nofile 65000 和事情为用户工作

如何实现到同一台服务器的多个NFS / TCP连接?

我试图通过一个10Gbps链路来最大化Linux客户端和单个NFS服务器之间的NFS / TCP带宽。 尽pipe每个NFS挂载都有自己的设备(主要/次要),但是一切都归结为单个TCP连接,这是一个瓶颈。 使用iperf和多个TCP连接,我可以达到〜8Gbps,但NFS卡在一个单一的TCPstream,并限制在〜2Gbps(没有TCP调整呢)。 在Solaris上,有系统设置rpcmod:clnt_max_conns ,它允许设置系统可以使用多less并发的TCP连接到单个NFS服务器。 有没有一个相当于Linux的方法呢? 作为一种解决方法,我知道我可以在NFS服务器上设置多个IP,然后在它们上对这些挂载点进行负载平衡,但这不是最佳的。

TCP ack暂停,然后恢复,然后再次暂停。 为什么?

我想在我的应用程序中寻找降低数据传输速率的原因。 我有12个embedded式系统和一个Linux服务器。 embedded式系统通过交换机在以太网链路上通过TCP发送数据到服务器。 以下是Wireshark捕获一个板卡上的stream量的TCP StreamGraph。 正如你所看到的,数据传输发生在大约5.8MBit / s直到大约0.25秒。 这与我所预期的embedded式系统一样快。 在此之后,延期被插入转移。 以下显示了该图的一个特写: 标有ACK的底部的阶梯形曲线显示服务器在任何给定时间已经确认了多less数据。 标有RWIN的相应曲线显示了数据卡上的缓冲区有多less空间。 标记为“发送数据”的较小垂直段是实际发送的数据包。 在A点,服务器以尽可能快的速度发送数据,但是持续23ms,服务器不会发送数据。 允许embedded式系统在不等待ACK的情况下发送RWIN,但是它不这样做,因为它需要保持发送的数据,直到它们被发送(如果需要重新发送),发送缓冲区空间是有限。 然后,在B点,所有接收到的数据立即被确认,正常的确认和发送恢复2.5ms,然后再发生一次暂停。 Wireshark捕获是由一台不同的PC机完成的,该PC连接到交换机上的一个端口,该端口被设置为镜像在embedded式系统所连接的端口上发送和接收的所有数据。 Linux服务器运行一个Java应用程序来处理数据并将它们存储在磁盘上。 它没有显示已经超出了CPU的迹象。 操作系统是具有默认networking设置的Ubuntu Server 12.04。 我可以看到,我可能会从在embedded式系统中分配更多的发送缓冲区空间中获益,以匹配Linux服务器中的接收窗口空间量,但这似乎并不是限制因素。 我的问题是: 什么可能是Linux服务器暂停ACK的原因,即使它显然能够收到的一切就好了? 我怎么去debugging呢?

什么是用于移动设备的最佳TCP拥塞algorithm?

鉴于目前可用的大量TCPalgorithm和基于Linux的移动设备的兴​​起,什么是理想的algorithm要考虑? 从各种实现的阅读,Veno和Westwood +看起来很有趣,但我有兴趣了解真实的数据。

基于TCP的OpenVPN,可怕的延迟,但只在Win7 x64

我知道通过TCP封装TCP通常是一个可怕的想法,但是我可以处理偶尔出现的性能下降和MTU问题,TCP内部的雪球效应提供了错误控制在这两个层次上起作用的地方。 Windows 7 x64上的最新OpenVPN客户端存在可怕的延迟问题,在隧道内对主机进行ping操作会导致> 500ms的ping时间,并导致整体性能下降。 吞吐量看起来不错,它确实只是延迟。 但是,在同一台计算机上,Linux 64位上的OpenVPN客户端(Ubuntu 10.04,相同的OpenVPN版本,相同的OpenVPNconfiguration,没有不同的设置)运行完美。 〜30ms,一切都很实用。 在同一台交换机上,同样的OpenVPN客户端版本,相同的configuration文件,在Mac OS X 10.5(PowerPC)也完美地工作。 我无法解释这一点。 我已经尝试了各种各样的东西,例如将虚拟适配器的MTU值降低到1400(因为商业切换的可怕的文档提到这个不是在Windows上dynamic设置的,并且推荐这样的动作),我试过了在全球TCP设置中禁用ECN,烟囱和CTCP,开启和closuresLzo压缩,牺牲一只山羊,没有什么更好的。 有任何想法吗? 起初,我认为在Windows上OpenVPN的PMTU支持不足是造成这种情况的原因,但是我尝试了使用Windows XP,它的工作原理也是完美无缺的。 我从用户那里得到了报告,它也能在Windows 7 32位上完美地工作。 此外,文档似乎说,MTU设置对于TCP连接是毫无价值的,并且用于UDP。 tl;博士:TCP上的OpenVPN是慢的,但只有在Windows 7的64位,一切工作正常。 是什么赋予了? 非常感谢,如果有人能回答这个问题,我会永远欠我的睡眠债务。

通过socat将linuxterminal从串口转发到TCP

我正在开发embedded式ARM平台Slackware。 我正在使用configuration为在端口/dev/ttyS1和/dev/ttyACM0之间转发数据的G24 Java调制解调器,因此任何进入这些端口的任何内容都可以在另一端看到。 我想在其中一个端口/dev/ttyS1上设置terminal,并将另一个端口/dev/ACM0到TCP端口,以便通过LAN从其他机器访问。 首先,我configuration了/etc/inittab : s2:12345:respawn:/sbin/agetty -L ttyS1 115200 vt100 然后我试着用下面的命令使用socat: socat -d -d -d TCP-l:2020,reuseaddr,fork /dev/ttyACM0,raw,nonblock,waitlock="/var/run/ttyACM0.lock",b115200,echo=1,icanon=1,crnl 然后我试图从其他机器连接telnet 192.168.1.222 2020 ,结果不是很好,我从客户端看到terminal要求login,但是有一个直接的答案,我没有input在: ^M^M^M …等等,terminal回答login不正确,然后一次又一次地是一回事。 我知道^M表示回车符号,但我不太清楚如何解决这个问题。 我尝试了不同的socatconfiguration,但是没有一个能够正确工作。

如何增加Windows 2008服务器的最大连接积压限制

我有一个Windows 2008 Server。 它的最大连接积压限制(TCP)是200.有什么办法把这个限制提高到一个更高的值 – 比如1000或者2000? 在本文中,您将find在此registry项下的参数更改说明: HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\ AFD \参数 相关的价值应该是这样的: EnableDynamicBacklog(DWORD) MinimumDynamicBacklog(DWORD) MaximumDynamicBacklog(DWORD) DynamicBacklogGrowthDelta(DWORD) 我曾尝试使用不同的值集 EnableDynamicBacklog = 1 MinimumDynamicBacklog = 250 MaximumDynamicBacklog = 20000 DynamicBacklogGrowthDelta = 100 和 EnableDynamicBacklog = 1 MinimumDynamicBacklog = 20 MaximumDynamicBacklog = 1000 DynamicBacklogGrowthDelta = 10 但不pipe我做什么,我仍然只能积压200个连接。 (是的,我已经在configuration更改之间重新启动服务器。) 有任何想法吗?