Articles of tcp

是否有一个netstat -s相当于windows?

我知道netstat -s存在于Windows上,但它显示的信息比Linux / OS Xless。它只给出8个关于TCP的计数器,而在Linux上则超过50个。 我正在寻找任何TCP相关的计数器,如: Linux: TCPDSACKOldSent , DelayedACKLocked , TCPOFODrop或TCPDSACKIgnoredNoUndo 。 您可以通过cat /proc/net/netstat获取整套计数器。 BSD / OS X: rcvbyteafterwin , rcvduppack或rcvoobyte 。 有没有一个内置的工具来实现这一目标? 或者也许有一个系统调用,可以让我检索这些信息?

TCP请求如何从虚拟机路由到外部资源,然后再返回?

场景:计算机A的本地IP为192.168.1.100,其中运行着一个虚拟机。 VM现在向外部IP地址(74.125.225.98)发出一个tcp请求。 有人可以解释如何将请求路由到远程IP,然后回到VM? 根据我的理解,虚拟机将这个请求包装在一个IP包中,包含目标IP地址,然后用自己唯一(可能是假的)MAC地址重新包装在一个以太网帧中。 然后,路由器用自己的IPreplace虚拟机的IP和MAC,并将目标MAC设置到ISP的路由器。 我的主要困惑是,当tcp响应被创build并被发回到VM …由于VM在计算机A内部运行,路由器如何运行ARP请求来获取VM的MAC地址? 谢谢您的帮助 :) 编辑: find了以下帮助解释NAT的video: https : //www.youtube.com/watch?v = 01ajHxPLxAw

保持TCP连接处于活动状态,以跟踪哪些客户端在线

我正在开发一个服务器需要与大量简单的物联网设备保持联系的应用程序。 服务器和每个设备之间几乎不需要信息交换,但是设备需要保持联机并且可以在服务器上24小时到达。 在某些情况下(很less发生这种情况),服务器需要能够与其中一台设备联系并交换一些消息:但是,至关重要的是,这些设备在很短的时间内是可以到达的。 这意味着我需要这些客户端设备以某种方式连续连接。 现在,我想知道:通过TCP连接这些设备是否可行,并保持这些连接处于活动状态,随时准备交换消息? 我尝试过四处阅读,而且总是阅读相同的答案: 这取决于您的实现,因为您的消息交换和处理很可能是瓶颈,而不是保持这些TCP连接处于活动状态 。 现在,这不是我的情况,因为我只需要每隔很多时间就交换非常有限的信息量。 那么保持这些客户端连接是否合理呢? 或者我应该devise一个更有效的方法? 例如,在没有任何数据交换的情况下,只需保持一个TCP连接的活性就需要多less带宽? 这是否需要大量的内存或CPU? 我实现了一个简单的C ++程序,它每隔几秒就发送一次UDP给我的服务器。我的基准testing可以在没有任何问题的情况下扩展到数百万个在线设备上,即使是在一个相当有限的服务器上。 TCP会比这更差吗?

如何在使用“mode tcp”时根据URIselect不同的后端

我正在使用haproxy版本1.6.2 我已经启用http2使用下面的configuration,我需要使用“模式tcp”。 但是,一旦我从“模式http”切换到“模式tcp”我不能使用acl path_beg来 frontend websocks mode tcp bind *:443 ssl crt /etc/certs/domain.pem alpn h2,http/1.1 ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; no-sslv3 timeout client 1h acl is_api path_beg /api acl is_xmpp path_beg /chat use_backend api_backend if is_api use_backend xmpp_backend if is_xmpp use_backend fe_public_tcp if { ssl_fc_alpn -i h2 } default_backend fe_public fe_public server fe1 localhost:444 weight 1 maxconn 4096 […]

使用多个NIC增加带宽

如果我的系统中有两个网卡,并且两个网卡都连接到具有不同IP地址的不同ISP,我可以将networkingstream量分配给它们以增加带宽。 我已经看到了像net-bonding这样的解决scheme,我们在这里创build一个呈现给应用程序的逻辑接口,并将两个NIC绑定在一起。 我也看到使用SCTP或SCPS-TP协议而不是TCP的解决scheme。 我的困境是我必须使用应用程序域中的解决scheme。 假设我正在为多个客户端系统编写一个软件,我不希望他们使用sctp来更改他们的tcp,或者使用绑定来进行太深入的绑定(也使用netbonding,只有在IP来自同一个networking时才能工作)。 devise这样一个解决scheme的关键问题是什么?

三方握手

这是如何工作的? 1. Client sends syn to server. 2. Server responds with syn ack. 3. Client responds with ack. 如果服务器刚刚用syn或者ack响应,会发生什么? 如果服务器根本没有响应会发生什么? 如果客户端没有回应,会发生什么?

排除大量TCP重传/重复/分段丢失

RDC缓慢爬行或完全断开连接时遇到问题。 客户端是XP SP3 w / RDC 6,服务器是Win 2k8 R2。 两者都被彻底扫描,发现无病毒。 我在客户端计算机上下载并安装Wireshark,并在RDC会话期间运行数据包捕获。 日志显示在正常使用期间,每分钟至less有10-20次重传/重传/分段丢失。 然后,当我断开连接的时候,每秒钟就会出现几十个这样的数据。 仅供参考,我对Wireshark工具知之甚less,或者对如何对这个问题进行全面的分析。 **编辑** 一点关于我的networking架构: 客户端 – 12 Mb下来,1Mb了 1笔记本电脑直接连接到调制解调器 – 或 – (我已经试过这种方式没有变化)通过Linksys的DSL电话盒插入 位于以色列。 电信业务分为基础设施和ISP,基础设施由HOT提供,ISP由Netvision提供。 服务器 – 5 Mb以下,5 Mb以上 中等networking/数据/应用托pipenetworking,与Allied Telesyn AR410路由 位于CA(美国)。 ISP正在呼叫美国。 其他远程客户端连接到服务器没有问题(速度或断开连接)。 在客户端使用了其他几台笔记本电脑来validation这不是硬件问题。 电缆调制解调器也被replace了。

如何全局限制与iptables的TCP连接总数?

我有一个相当困难的时间搞清楚如何拒绝入站和出站连接从一台机器与iptables一旦TCP连接总数达到全局最大值,而不考虑源端口或目标端口。 所有来源/目的地/港口必须包括在内。 这可能与iptables?

当一个sockets切换到TIME_WAIT状态时,为什么我看不到它的inode号码?

我正在开发一个parsing/proc/net/tcp信息的python程序,但不幸的是,当我这样做的时候,我看到了一个奇怪的东西。 实际上,当套接字在TIME_WAIT状态下改变时,它的inode号会TIME_WAIT ,我不知道谁是这个套接字的所有者。 我读了一些关于这个TIME_WAIT问题的文档,我知道这个连接实际上已经完成了,而且只能保证数据传输。 有人知道这件事吗?

在Windows中将文本string发送到套接字

我有一个服务器有一个开放的套接字,侦听一个特定的文本string,以执行一个操作。 我们的linux机器通过以下方式发送此数 echo "text_string" | nc -w 2 server-name port# 这可能在Windows上(可能在PowerShell或其他内置工具)? 如果是这样,怎么样?