Articles of tcp

TCPstream量控制误解的原因是什么?

客户端无法连接到我们的Web服务器。 我嗅探客户端和Web服务器,发现客户端看到TCP连接成功,而服务器将其视为失败。 这个问题的可能原因是什么? 当客户端通过networking发送到服务器的ACK数据包是否被破坏? 两者的屏幕截图显示在下面的链接中。 客户 服务器

Sonicwall:不能发送电子邮件(Outlook)和下降连接(谷歌驱动器)

我将首先说我是一个Web开发人员,我的networking知识是非常有限的,请耐心=)。 我们公司没有networking/系统。 我们的连接有问题。 我们不能在Outlook中发送外发电子邮件,除非我们按下“ disconnect button重新启动界面(见图片)。 重新启动后,电子邮件将被发送,但几分钟后发生同样的问题,然后我们必须重新启动! 我们也使用谷歌驱动器无法连接到谷歌服务器(不知道是否因为我们正在频繁重新启动) 顺便说一句,我们有这个问题解决(有点)一个月或两个,一切正常工作,直到我按下了disconnect button 。 然后问题再次出现,直到现在。 Please note that we dont have any problem receiving emails. Only for outgoing. 我们正在使用Sonicwall Model TZ 105 其他信息: 电子邮件客户端:Outlook 2013/2016 用户操作系统:Windows 8 / 8.1 / 10 电子邮件:提供者:Etisalat(在阿联酋的本地提供商) 发送服务器:mailv.emirates.net.ae端口:25 传入服务器:mailv.emirates.net.ae端口:110 SSL:我们没有使用它(不知道要提供什么) 更新 在主机上使用cmd时,尝试ping发送邮件服务器Im有request timeout响应。 但是,当虚拟机(virtualbox)里面的ping接收不同的响应(见图)。 当使用mobile data并使用host machine ping传出服务器mailv.emirates.net.ae然后它的成功。 我也尝试了不同的笔记本电脑,并ping mailv.emirates.net.ae他们是成功的。 如果您需要更多信息,请告诉我。

识别UDP端口build立连接的IP

我试图获得Rocketleague.exebuild立连接在UDP端口的IP。 我试过用netstat -p udp,但是由于一些奇怪的原因,它没有显示任何活动的udp连接。 但是,使用TCPView,它确实显示为使用某些UDP端口。 问题是它没有显示该特定端口连接到的任何IP地址。 这里有一个截图: 你可以看到它没有显示udp端口连接到的IP地址,我的问题是: 是UDP更像是一个广播协议,因此我的电脑只听信息的端口传入信息? 如果没有,有没有办法确定这些UDP端口连接到的IP地址? 如果它只是在监听并且不知道连接来自哪里,那么来自哪里的信息就是那个.exe所连接的TCP协议。 提前致谢。

ngx_stream_core_module和最终用户ip

比方说,我有一些服务工作在原始的TCP级别,我想添加一个负载平衡。 我试过使用ngx_stream_core_module 。 虽然TCPstream确实代理到后端服务器,但我发现了一些我无法解决的问题。 我的服务在node.js中写入,这是设置进程pipe理器的常用技术,比如pm2,它在消耗太多内存的情况下重新启动节点。 但是,这显然会终止所有连接的客户端。 我的期望是nginx将用户连接到上游的下一个服务器(也许它也是> 2016,但是),但我的连接只是closures。 我的服务需要最终用户的IP和远程端口来操作,但在应用程序套接字的remoteAddress和remotePort指向本地nginx实例。 也就是说,当我打印到缓冲区时,我看到127.0.0.1连接代理时,我真正的IP当我直接连接到节点。 我看到nginx支持一些configurationvariables(自v.1.11.2起),而$ remote_addr就是其中之一。 但我没有看到任何信息如何将这个variables转发到上游。 proxy_set_header指令在stream中不可用,因为TCP中没有任何“头文件”,所以它看起来没问题。 这甚至有可能吗? 我不是一个devops,而是一个编码器,所以我听说了haproxy,但是我不知道它是否可以解决这两个问题。 它可以? 为了testing,我用哑巴回声node.js服务器,所有的工作部分被缩小到 server.on('connection', socket => { socket.write(`Hello from ${instance}, ${socket.remoteAddress}:${socket.remotePort}\n`); }); 而我的nginxconfiguration的相关部分是 stream { upstream echo { server localhost:9000; server localhost:9001; } server { listen 8080; proxy_connect_timeout 1s; proxy_timeout 2h; proxy_pass echo; } } 最后我用netcat来检查一下东西。 // direct connect ~|⇒ […]

使用Upstart在启动时通过套接字发送消息到服务器

问题 我需要在计算机启动过程中通过TCP套接字发送消息到服务器。 我们使用的是Ubuntu 14.04,因此,默认情况下,必须使用Upstart作为系统初始化。 (我们也有运行Ubuntu 16.04的其他计算机可以使用systemd,所以我试图保持shell脚本与系统初始化文件分开) 当前解决scheme 目前我为客户端使用两个文件:一个upstart .conf文件和一个shell脚本文件。 新贵档案 新贵档案(我们称之为foo.conf)有以下内容: #!upstart description "Send Message on Startup" start on (local-filesystems and net-device-up and runlevel [2345]) exec /opt/foo/foo.sh shell文件 shell文件(我们将其称为foo.sh)具有以下内容 #!/bin/bash echo "Sending update message…" echo "Message" | nc server-hostname 9999 echo "Completed sending update message." 症状 当我重新启动具有这些文件的计算机时,我在日志文件中得到以下内容: Sending update message… Completed sending update message. 但是,服务器永远不会收到消息。 […]

大型孤立的连接

让我先说一下,我对这个级别的networking知识足够了解是危险的,所以如果我说一些愚蠢的话,请善良。 我在3台Apache服务器前使用了一个Big IP负载均衡器。 这3个Apache服务器都在同一台物理机器上(运行Linux),绑定到三个不同的虚拟IP地址的端口80,但我不认为这是在这个问题上的一部分。 我们configuration了LB,以便同一个客户端每次获得相同的WEB服务器,通过LB提供的cookie进行控制。 如果我通过LB来访问我们的应用程序,我会偶尔(5-15%的时间)得到一个浏览器正在旋转的页面,永远不会返回。 如果我直接打到每个WEB服务器上,我都不会那么做。 使用WireShark,我查看了我的电脑,LB和我通过LB打的WEB服务器发生了什么,我看到了以下内容: 1)大多数时候,PC用来打LB的端口是LB用来打WEB服务器的端口,我认为是“正常”的。 所有3次我复制我的问题,端口是不同的(例如1234之间的PC / LB和2345之间的LB / WEB)。 但是,并不是所有的时代,他们是不同的,我看到一个问题。 这可能是一个红鲱鱼…. 2)PC < – > LB通信与1260字节长的数据包; LB – > WEB报文为1260字节,LB < – WEB报文为1260的几倍。当WEB向LB发送2520字节时,LB收到2×1260字节报文,只发送一个ACK。 然后它将发送回PC 2×1260字节的数据包,并从PC接收一个ACK。 我不明白为什么2520被分成2×1260,我也不明白为什么PC知道只发送一个ACK。 这也可能是一个红鲱鱼…. 3)在某些时候,WEB服务器向没有收到ACK的LB发送数据,然后重新发送启动这个数据序列的数据包。 但是,我不知道为什么重新传输会发生,因为只有0.6秒的时间,所以不能超时(呃,我想是可能的,但看起来似乎不太可能)。 此外,原始的WEB-> LB数据包是5040字节(4×1260),但重传仅为1260.LB接收到来自原始5040发送的所有4个数据包,但是从不发送任何原因的ACK。 我看到其他时候,LB已经能够处理发送给它的5040个字节,它确认得很好,所以看起来好像发送的数据包的长度不是问题。 但是,这些数据包都没有从LB发送回PC。 4)尽pipe只有第一个1260块的数据从WEB重新发送到LB。 有一个小的延迟(0.4秒),然后是第二次重传数据,从第一个1260块开始,这次所有的4×1260数据包都被重新发送。 然而,由LB发回的ACK是全部5个重新发送的数据包,即使它们中的一个明显地重新发送了两次(我基于WireShark所示的相对seq编号;发回的ACK等于seq即使第二重发分组的序号与第一重发分组相同,也是第一重发分组的编号+ 5×1260)。 这似乎很糟糕。 5)最糟糕的是,我认为,港口都搞砸了。 原来的对话端口如下: PC <-> LB == 2723 LB <-> WEB == 2722 […]

确定TCP连接是否使用SSL

也许某些服务器可以处理不安全和安全的协议。 有没有已知的方法来确定现有的TCP连接是否安全? (我相信可能只是监视stream量,并检查一些文本是否可读,但也许有更好或更详细的build议?)

做繁忙的smtp服务器使用长时间运行的TCP连接交换很多邮件?

我有这个想法从https://stackoverflow.com/questions/2813326/maximum-number-of-bytes-that-c​​an-be-sent-on-a-tcp-connection 是否有可能像Gmail和雅虎smtp服务器进入某种forms的协议,以维持它们之间的TCP连接,以便大量的邮件可以在同一个TCP连接发送。 这将是有效的,因为在这些邮件服务器之间会有大量的邮件stream量。

java在RH Linux和Solaris之间的TCP性能差异?

在比较RH Linux和Solaris之间的java TCP套接字性能时,我的一个testing是通过使用java客户端发送string并从java echo服务器读取回复来完成的。 我测量了发送和接收数据所花费的时间(即回程往返)。 testing运行100,000次(更多发生的结果相似)。 在我的testing中,Solaris的平均速度比RH Linux快25/30%,在默认系统和networking设置的相同计算机上,相同的JVM参数(如果有的话)等等 我不明白这么大的差别,是否有一些我缺less的系统/networking参数? 所使用的代码(客户端和服务器)显示如下,如果有人有兴趣运行它(发生次数必须在命令行中给出): import java.io.*; import java.net.*; import java.text.*; public class SocketTest { public final static String EOF_STR = "EOF"; public final static String[] st = {"toto" ,"1234567890" ,"12345678901234567890" ,"123456789012345678901234567890" ,"1234567890123456789012345678901234567890" ,"12345678901234567890123456789012345678901234567890" ,"123456789012345678901234567890123456789012345678901234567890" }; public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException { double mean = 0.0; […]

Solaris tcp_keepalive_abort_interval

在tcp_keepalive_abort_interval的 Solaris参考手册中有一节。 但是,它不会出现在ndd /dev/tcp \? 清单。 # uname -srvmpi SunOS 5.10 Generic_142909-17 sun4us sparc FJSV,GPUZC-L # ndd /dev/tcp \? | grep keepalive tcp_keepalive_interval (read and write) 你们有没有知道这个参数在哪里? 更新:看来我正在阅读错误的文档,感谢您指出。