Articles of tcp

如何使cURL从命令行使用keepalive?

我正在尝试validation在与运行的Tomcat Web服务器通信期间正在使用HTTP持久连接。 目前,我可以从浏览器(例如Chrome)检索服务器上的资源,并使用netstatvalidation连接已build立: # visit http://server:8080/path/to/resource in Chrome [server:/tmp]$ netstat -a … tcp 0 0 server.mydomain:webcache client.mydomain:55502 ESTABLISHED 但是,如果我使用curl,我从来没有看到在netstat服务器上的连接。 [client:/tmp]$ curl –keepalive-time 60 –keepalive http://server:8080/path/to/resource … [server:/tmp]$ netstat -a # no connection exists for client.mydomain 我也试过使用下面的curl命令: curl -H "Keep-Alive: 60" -H "Connection: keep-alive" http://server:8080/path/to/resource 这是我的客户端机器的curl版本: [server:/tmp]$ curl -V curl 7.19.5 (x86_64-unknown-linux-gnu) libcurl/7.19.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5 […]

DNS查询是否总是通过UDP传输?

我花了一些时间研究这个话题,似乎无法find一个确切的答案,所以我相当有信心,这不是一个重复的,虽然我的问题是基于安全需要,我认为它仍然是安全的请问这里,但让我知道如果我需要把它移动到安全社区。 从根本上说,DNS查询是否使用TCP(如果是这样,这种情况会发生)? 再次,我只是在谈论查询。 他们可以通过TCP旅行吗? 如果域最多只能有253个字节的长度,而UDP数据包最多只能有512个字节,那么不会总是以UDP的forms出现。 我不认为一个可parsing的查询可能足够大,需要使用TCP。 如果DNS服务器收到一个大于253字节的域的请求,服务器是否会放弃/不尝试并解决它? 我确信我在这里做了一些错误的假设。 在某些情况下,我正在与安全小组合作,将DNS查询纳入他们的安全监控工具,由于各种原因,我们决定通过DNS服务器和域控制器上的标准数据包捕获来捕获此stream量。 核心要求是捕获所有DNS查询,以便他们可以识别客户端尝试parsing任何给定的域。 基于这一要求,我们不关心如何捕获DNS响应或其他stream量(如区域传输),这也是由于我们需要尽可能限制日志量。 因此,我们计划只捕获目的地为DNS服务器并通过UDP发送的DNS查询。 对于更多的上下文(问题范围在这里蔓延),现在已经提出,我们可能需要扩大安全的可见性,以便他们可以监视像DNS上运行的隐蔽通道这样的活动(这也将需要捕获DNS响应,和随后的TCPstream量)。 但即使在这种情况下,我认为任何出站DNSstream量都将以查找/查询的forms出现,而且即使是来自恶意来源(由于我在第一段中的推理),它们也始终是UDP。 所以这带来了一些额外的问题: 我们至less要用我概述的方法来捕捉一半的谈话? 或者,客户端是否会发送非查询forms的DNSstream量? (也许像某种DNS服务器响应的回复,也许最终会通过TCP出去) 可以修改DNS查询使用TCP? DNS服务器是否接受并响应通过TCP传来的DNS查询? 不知道是否相关,但我们限制DNS请求授权的DNS服务器,并阻止所有其他stream量通过端口53 outbound。我绝对是一个菜鸟,所以我很抱歉,如果我的问题不符合,让我知道我应该如何修改。

HTTPS使用TCP还是UDP?

HTTPS使用TCP还是UDP?

调整iSCSI存储

这是关于iSCSI的规范问题 ,我们可以用作参考。 iSCSI是一种将SCSI命令作为有效负载放入TCPnetworking数据包的协议。 因此,它受到与光纤通道不同的一系列问题的困扰。 例如,如果一个链路拥塞并且交换机的缓冲区已满,以太网将默认丢弃帧,而不是告诉主机减速。 这导致重传,这导致存储stream量的很小部分的高延迟。 有针对此问题的解决scheme,具体取决于客户端操作系统,包括修改networking设置。 对于以下的操作系统列表,最佳的iSCSI客户端configuration是什么样的? 会涉及到更改交换机上的设置? 那储物柜呢? VMWare 4和5 Windows Hyper-V 2008和2008r2 Windows 2003和2008裸机 裸机上的Linux AIX VIO 你碰巧认为的任何其他操作系统都是相关的

尽pipeSYN_RECV连接数很less,但日志中可能出现“SYN泛洪”

最近我们有一个Apache服务器,由于SYN泛滥,响应非常缓慢。 解决方法是启用tcp_syncookies( net.ipv4.tcp_syncookies=1 in /etc/sysctl.conf )。 我在这里发布了一个关于这个问题,如果你想更多的背景。 启用syncookies后,我们开始每隔60秒在/ var / log / messages中开始看到以下消息: [84440.731929] possible SYN flooding on port 80. Sending cookies. Vinko Vrsalovic告诉我,这意味着syn backlog已经满了,所以我把tcp_max_syn_backlog提高到了4096.在某些时候,我还通过发行sysctl -w net.ipv4.tcp_synack_retries=3将tcp_synack_retries降低到了3(从默认值5降低了) 。 这样做后,频率似乎下降,消息的间隔大约60和180秒之间变化。 接下来我发出了sysctl -w net.ipv4.tcp_max_syn_backlog=65536 ,但是我仍然在日志中收到消息。 在这一切中,我一直在观察SYN_RECV状态下的连接数(通过运行watch –interval=5 'netstat -tuna |grep "SYN_RECV"|wc -l' ),它永远不会高于240远远低于积压的大小。 然而,我有一个红帽服务器徘徊在512左右(限制在这台服务器是默认的1024)。 有没有其他的tcp设置会限制积压的大小,还是我吠叫错误的树? netstat -tuna的SYN_RECV连接的数量是否与积压的大小相关? 更新 尽我所能告诉我在这里处理合法的连接, netstat -tuna|wc -l徘徊在5000左右。我今天一直在研究这个,并且从last.fm员工那里find了这个post , 这个post非常有用。 我还发现,当syncookies被启用时,tcp_max_syn_backlog没有效果(按照这个链接 ) 所以作为下一步,我在sysctl.conf中设置了以下内容: […]

为什么服务器不会响应SYN数据包发送SYN / ACK数据包?

最近,我们已经意识到TCP连接问题,主要限于浏览我们网站的Mac和Linux用户。 从用户的angular度来看,它performance为与我们网站的连接时间非常长(> 11秒)。 我们已经设法追查这个问题的技术签名,但是不知道为什么会发生这个问题或者如何解决这个问题。 基本上,发生的事情是客户端的机器正在发送SYN数据包来build立TCP连接,Web服务器收到它,但没有响应SYN / ACK数据包。 客户端发送了很多SYN数据包之后,服务器最终响应一个SYN / ACK数据包,其余的连接都可以正常工作。 当然,这个问题的起因是:它是间歇性的,并不是一直发生的(尽pipe它的确发生在10-30%之间) 我们使用Fedora 12 Linux作为OS和Nginx作为Web服务器。 wireshark分析的屏幕截图 更新: closures客户端上的窗口缩放function可以防止问题的发生。 现在我只需要一个服务器端的解决scheme(我们不能让所有的客户端这样做:)) 最终更新: 解决scheme是closures我们的服务器上的TCP窗口缩放 和 TCP时间戳 ,这些服务器可供公众访问。

随机TCP RST在某些网站上,发生了什么事?

简短版本:在连接到某些网站时,我的networking上的一台Windows Server 2012计算机正在持续但间歇性的TCP RST。 不知道他们从哪里来。 检查我的分析和问题wireshark日志。 长版本: 我们在我们的一台服务器上运行一个cachingweb代理服务我们的小型办公室。 一位同事报告说,当连接到某些网站时,出现了很多“连接重置”或“页面无法显示”的错误,但是刷新通常会修复这些错误。 我validation了浏览器行为,然后更直接地尝试在服务器本身上使用未经代理的浏览器。 但是对麻烦的网站ping和traceroute没有任何问题,这些问题似乎只限于TCP连接。 然后我做了一个脚本来testing受影响的站点,通过直接发送HTTP HEAD请求通过cURL检查它们成功的频率。 一个典型的testing看起来像这样:(这是没有代理的,直接在坏的服务器上运行) C:\sdk\Apache24\htdocs>php rhTest.php Sending HTTP HEAD requests to "http://www.washingtonpost.com/": 20:21:42: Length: 0 Response Code: NULL (0%) 20:22:02: Length: 0 Response Code: NULL (0%) 20:22:22: Length: 0 Response Code: NULL (0%) 20:22:42: Length: 0 Response Code: NULL (0%) 20:23:02: Length: 3173 Response Code: […]

TCP和UDP数据包可以分成几块吗?

TCP数据包可以通过分段到达接收器吗? 例如,如果我使用TCP协议发送20个字节,我可以100%确定我将一次接收20个字节,而不是10个字节,然后是另外10个字节左右? 和UDP协议相同的问题。 我知道UDP是不可靠的,数据包根本不能到达或按不同的顺序到达,但是单个数据包呢? 如果到达,我可以确定它是一个完整的数据包,而不是一个?

什么是IP后的“斜线”?

在Amazon EC2中,我设置了“安全组”,它说:来源: 0.0.0.0/0然后给出一个例子:192.168.2.0/24 什么是“/ 24”? 我知道端口和IP是什么。

如何通过Tcpdump捕获ack或syn数据包?

我想用一个过滤规则来捕获只有ack或syn数据包。 我如何做到这一点?