我正在用 python 开发一个解析/proc/net/tcp信息的程序,但不幸的是,在我这样做的时候,我看到了一件奇怪的事情。
实际上,当套接字TIME_WAIT状态发生变化时,会丢失其 inode 编号,而且我不知道此套接字的所有者是谁。
我阅读了一些关于这个TIME_WAIT问题的文档,我了解到连接实际上已经完成,它保持等待只是为了保证数据传输。
有人对此有所了解吗?
我有一个服务器,它有一个打开的套接字,用于侦听特定的文本字符串以执行操作。
我们的 linux 机器通过以下方式发送这些数据:
echo "text_string" | nc -w 2 server-name port#
Run Code Online (Sandbox Code Playgroud)
这在 Windows 上是否可行(可能在 powershell 或其他内置实用程序中)?如果是这样,如何?
我正在使用 haproxy 版本 1.6.2
我已经使用下面的配置启用了 http2,我需要使用“模式 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 check inter 10000 ssl verify none
fe_public_tcp
mode tcp
server fe1 localhost:445
api_backend
server api1 localhost:9966
xmpp_backend
server …Run Code Online (Sandbox Code Playgroud) 我正在通过 iperf3 测量 tcp 和 udp 吞吐量。我在虚拟机中运行 iperf3,一台作为服务器,另一台作为客户端。VM 通过 10 Gbps 链路进行连接。结果表明tcp比udp获得更高的吞吐量。然而,正如我们所知,TCP 运行更多的算法和计算,并且还具有三向握手,那么为什么 udp 吞吐量小于 tcp?这与 tcp 和 udp 的缓冲区大小有关吗?下面是 tcp 和 udp 测量的结果。很明显,iperf 在特定时间内为 tcp 发送的数据比 udp 发送的数据多,但为什么呢?
TCP:8.88 Gbps
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 922 MBytes 7.73 Gbits/sec 1 3.04 MBytes
[ 4] 1.00-2.00 sec 1.04 GBytes 8.92 Gbits/sec 0 3.04 MBytes
[ 4] 2.00-3.00 sec 1.07 GBytes 9.15 Gbits/sec 0 3.04 MBytes
[ 4] 3.00-4.00 sec 1.05 GBytes 8.99 Gbits/sec 0 …Run Code Online (Sandbox Code Playgroud) 任何数据丢失都会被检测到并自动纠正,这就是 TCP 也被称为可靠协议的原因。
换句话说,
传输层负责从源主机到目的主机无差错、端到端的数据传输。
TCP 确实保证是可靠的传输。提出了一个问题,在应用层回复接收到的消息(在 TCP 上传输)告诉发送者消息已经成功接收是多余的(或无用的,对不起我的英文不好)?
我的 MikroTik RouterBOARD hEX - RB750Gr3(运行 Router OS 7.8)有一个奇怪的问题。
\n某些 TCP 连接非常慢,例如这个 93 KB 文件需要很长时间才能从 router\xe2\x80\x99s LAN 中的客户端下载:
\ncurl https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js > /dev/null\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 95957 0 95957 0 0 1998 0 --:--:-- 0:00:48 --:--:-- 1279\n\nRun Code Online (Sandbox Code Playgroud)\n花了48秒!
\n这是可重现的,并且也会发生在同一 LAN 上的其他客户端上。
\n然而,在路由器本身上获取文件速度很快:
\n[admin@MikroTik] > /tool/fetch url="https://gewerbeauskunft.bremen.de/navigaweb/res/themes/System_09.12.06/js/jquery-1.11.3.min.js"\n status: finished\n downloaded: 93KiB-z pause]\n total: 0KiB\n duration: 1s\nRun Code Online (Sandbox Code Playgroud)\n所以我想看看\xe2\x80\x99s发生了什么,并开始在路由器上捕获数据包:
\n[admin@MikroTik] /tool/sniffer> …Run Code Online (Sandbox Code Playgroud) 在我们的应用程序中,服务器 A 与服务器 B 建立 TCP 连接,然后通过 TCP 连接向服务器 B 发送大量请求。请求消息是基于 XML 的。服务器B需要在很短的时间内做出响应,处理请求需要时间。所以我们希望可以引入一个负载均衡器,我们可以通过使用多个服务器 B 来加快处理速度。这不是网络应用程序。我做了一些研究,但没有找到负载均衡器的类似应用。
谁能告诉我是否有负载均衡器可以帮助我们的应用程序?
说明我们的应用程序的图表:
