标签: tcp

我正在设计一个每秒处理 10000 个 TCP 连接的系统,我会遇到什么问题?

我有一个运行 CentOS 的相对较新的 8 核机器。我想开发一个使用 TCP 的统计服务器。它非常简单,它接受一个 TCP 连接,增加一个计数器并关闭连接。问题是它至少需要每秒处理 10k 次请求。我怀疑 CPU/内存不会成为问题,但我更关心我可能需要在我的服务器上配置的人为限制(如半开连接)以允许这种卷。那么,这可能吗?我应该注意哪些设置?我的网卡不能处理吗?

networking linux java tcp high-volume

18
推荐指数
1
解决办法
2万
查看次数

通过TCP连接拆分pcap文件的工具?

是否有工具可以为每个 TCP 连接将数据包捕获文件(以 pcap 格式)拆分为单独的文件?(除了可能需要在捕获过程中运行两次的本地 shell 脚本......)。类似于wireshark的“跟随TCP流”但对于命令行(我担心wireshark在显示700 MB数据包捕获时会消耗大量内存)

我查看了tcpflow,但它似乎生成的文件比原始 pcap 文件大得多,而且它们似乎不是 pcap 格式。

linux command-line-interface tcp pcap

18
推荐指数
4
解决办法
2万
查看次数

了解端口:多个浏览器选项卡如何同时通信?

我今天意识到我根本不了解端口通信是如何工作的。

如果我启动一个侦听端口 80 的网络服务器实例,它可以响应来自许多不同浏览器选项卡的许多请求,所有请求都通过端口 80 进行通信。

但是,我无法启动服务器的两个实例,它们都侦听端口 80,因为这会导致端口冲突。

我一直认为这是给定的(在任何给定时间只有一个进程可以绑定到特定端口)而没有真正考虑过——不是有多个进程在端口 80 上通信吗?(即,浏览器中运行的每个选项卡?)

networking port tcp

18
推荐指数
3
解决办法
2万
查看次数

网络速度故障排除 - 古老的调查

我正在寻求帮助,我确信这是一个古老的问题。我发现自己处于一种渴望更清楚地了解网络吞吐量的情况,但我似乎无法找到使其“点击”的信息

我们有一些分布在不同地理位置的服务器,运行着各种版本的 Windows。假设我们始终使用一台主机(台式机)作为源,那么在将数据从该主机复制到全国其他服务器时,我们会发现速度差异很大。在某些情况下,我们可以始终如一地以 12MB/s 的速度复制数据,而在其他情况下,我们看到的是 0.8 MB/s。应该注意的是,在测试了 8 个目的地之后,我们似乎总是在 0.6-0.8MB/s 或 11-12 MB/s。在我们主要关心的建筑物中,我们有一个到 ISP 的 OC-3 连接。

我知道有很多变数在起作用,但我想我希望这里的专家可以帮助回答一些基本问题,以帮助加强我的理解。

1.) 对于运行 Windows XP、服务器 2003 等的旧机器,具有 100Mbps 以太网卡和 72 毫秒典型延迟,0.8 MB/s 听起来是否合理?或者您认为这足够慢以表明存在问题?

2.) 在我们的例子中,“吞吐量 = TCP 窗口/延迟”的经典“数学最快速度”计算为 0.8 MB/s (64Kb / 72 ms)。我的理解是这是一个上限;您永远不会期望达到(由于开销),更不用说超过那个速度了。但在某些情况下,我们看到的速度为 12.3 MB/s。网络上散布着 Steelhead 加速器,这些加速器可以解释如此高的传输速率吗?

3.) 有人建议使用 SMB 与 SMB2 可以解释速度的差异。事实上,正如我们预期的那样,数据包捕获显示两者都根据正在使用的操作系统版本而被使用。我了解决定是否使用 SMB2 的因素,但我很想知道使用 SMB2 可以获得什么样的性能提升。

我的问题似乎只是缺乏经验,更重要的是,关于什么是合理的网络速度和什么是不合理的观点。任何人都可以帮助传授背景/观点吗?

networking windows wide-area-network tcp network-speed

18
推荐指数
1
解决办法
4196
查看次数

永远使用 netcat 代理

我正在用 netcat 代理一个 VNC TCP 服务器端口。代理机器运行linux。

这是我使用的命令:

mkfifo backpipe
nc -l 5902  0<backpipe | nc 10.1.1.116 5902 1>backpipe
Run Code Online (Sandbox Code Playgroud)

10.1.1.116 是“远程”机器,原始 VNC 服务运行在端口 5902 上。执行此命令后,本地主机上的 VNC 服务可用于其他机器。

但是在每次 VNC 会话之后,netcat“代理服务器”都会停止,这就是 netcat 的工作原理。

在 VNC 会话终止后,如何让 netcat 保持“代理服务”运行?


作为一种解决方法,我将 netcat 命令行置于无限循环中:

mkfifo backpipe
while true; do   nc -l 5902  0<backpipe | nc 10.1.1.116 5902 1>backpipe; done
Run Code Online (Sandbox Code Playgroud)

但我更喜欢“官方”的 netcat 解决方案,它根本不会中断服务。


我已经阅读了“-”参数,但我不确定这是否适合这种情况,而且我还无法正确应用它。


补充说明:

当然,我可以通过 ssh 隧道以不同的方式做到这一点,但我想要一个没有加密开销的解决方案,使其尽可能响应 VNC 客户端。否则,可以使用不同的代理解决方案。

客户端必须是 VNC,没有其他协议是可能的。

linux proxy tcp service netcat

17
推荐指数
1
解决办法
2万
查看次数

英特尔 AMT(主动管理技术)如何不干扰 TCP/IP 主机堆栈?

我一直在使用的英特尔开发工具包包括一个远程管理功能 (另请参阅此处Ubuntu 手册页),它允许在操作系统挂起时进行远程重启。

它能够在与操作系统共享的 IP 地址上侦听少数端口(具体来说是 16992 和 16993)。(通过侦听 DHCP 请求或发出自己的请求;我不确定,但无论哪种方式,它都在此模式下使用共享 MAC 地址)

我让它在一个单独的 IP 地址上运行,因为我担心一个潜在的用例:AMT 如何防止主机网络堆栈与其发生冲突?

换句话说,英特尔管理软件现在正在侦听 [至少] 两个 TCP 端口,带外且操作系统不知道。假设我发起了到远程主机的 TCP 连接,并且主机堆栈选择 16992 或 16993 作为本地端口来侦听 [返回到盒子的数据包]。

从远程主机返回的数据包不会被“黑洞”而永远不会到达操作系统吗?或者是否有一些预防措施,例如 Linux 内核中的 Intel 驱动程序知道 TCP 应该避免端口 16992?(似乎不太可能,因为这是一个与操作系统无关的功能。)或者管理接口可以将发送到端口 16992 的不属于已知管理会话的流量转发回主机堆栈?

无论哪种方式,在我了解其工作原理之前,我都不愿意将其用于网络密集型负载。我搜索了英特尔文档,也找不到任何内容。

我想这可以通过启动大约 30,000 个 TCP 连接并检查连接是否有效来测试,即使端口重叠。但我还没有机会这样做。

(脚注:我意识到这个问题类似于基于 Intel vPro 的计算机如何保持 IP 连接?但该问题涉及一般连接,而不是与与主机堆栈重叠的特定 TCP 端口的连接。)

networking tcp amt

17
推荐指数
1
解决办法
7177
查看次数

在没有 tcpdump 的情况下转储 tcp 连接

在 centos 机器上,我喜欢转储 tcp 连接 - 我想看看服务器是否尝试向某个 IP 发送请求。通常 tcpdump 可以解决问题 - 但 tcpdump 没有安装,并且安装软件不是一个选项(因为公司政策)。恐怕 netstat 不会向我显示一个请求。

所以我想知道我还有什么其他选择。我确实在服务器上有 root 访问权限。

linux tcp

17
推荐指数
5
解决办法
3万
查看次数

[PSH, ACK] 在我连接到全局编录服务器期间在做什么?

我的一个 linux 服务器正在尝试与全局目录服务器建立 LDAPS 连接,但连接正在断开(大概是 GC 端)。

为便于讨论,假设 1.1.1.1 是 Linux 服务器,而 1.2.3.4 是全局编录服务器。

如果我尝试telnet从 Linux 框中使用,我会看到:

[root@foobox ~]# telnet gcfoo.exampleAD.local 3269
Trying 1.2.3.4...
Connected to gcfoo.examplead.local.
Escape character is '^]'.
Connection closed by foreign host.
Run Code Online (Sandbox Code Playgroud)

第 4 行和第 5 行之间没有延迟。它只是立即断开连接。

我认为telnet结果可能有点误导(因为它实际上并不适合任何类型的安全通信),所以我从设备收集了实际连接尝试的数据包捕获(使用需要 LDAPS 的实际程序)。

这是我所看到的(同样,IP 和源端口已被重命名以保护无辜者):

No.     Time      Source     Destination      Protocol    Length    Info
1       0.000000  1.1.1.1    1.2.3.4          TCP         66        27246 > msft-gc-ssl [SYN] Seq=0 Win=5840 Len=0 MSS=1460 SAC_PERM=1 WS=128
2       0.000162  1.2.3.4    1.1.1.1          TCP         62        msft-gc-ssl …
Run Code Online (Sandbox Code Playgroud)

tcpip ldap tcp

17
推荐指数
2
解决办法
9万
查看次数

为什么在下载文件时比较校验和是一种好习惯?

提供 ISO 文件供下载的网站通常会提供这些文件的 md5 校验和,我们可以使用它来确认文件已正确下载,并且没有损坏。

为什么这是必要的?当然,TCP 的纠错特性就足够了。如果数据包没有被正确接收,它将被重新传输。TCP/IP 连接的本质难道不能保证数据完整性吗?

tcp

17
推荐指数
5
解决办法
7435
查看次数

LAST_ACK 是什么意思,作为 netstat 中的状态值?

如果 Windows 服务器有数千个端口处于打开LAST_ACK状态(如 netstat 所示),这意味着什么?是因为一个端点正在等待另一个端点响应吗?

tcp

16
推荐指数
3
解决办法
8万
查看次数