Articles of tcp

禁用原始套接字的TCP数据包的内核处理

我正在为embedded式设备开发一个TCP / IP实现,我想使用原始套接字从Linux用户空间进程中进行testing。 生(7)说 原始套接字可以在Linux中使用所有的IP协议,甚至是在内核中有一个协议模块的ICMP或TCP协议。 在这种情况下,数据包被传递给内核模块和原始套接字。 我需要禁用这个内核处理(至less在一个特定的目标端口),以testing我的实现。 我认为有一些涉及iptables的操作可以做到这一点,但坦率地说,我不是Linux专家。 我感谢任何帮助。

如果最后的ACK在TCP连接终止过程中丢失,它是如何被检测到的?

在TCP连接终止中,当客户端进入TIME_WAIT状态时,意味着客户端等待一段时间,等于最大段寿命(MSL)时间的两倍,以确保收到它发送的ACK。 (我从kurose的书籍计算机networking上面读了,也在下面的URL中给出了http://www.tcpipguide.com/free/t_TCPConnectionTermination-2.htm ) 但是,如果最后一个ACK(由客户端作为服务器FIN的响应发送)丢失,是如何检测到的?

私有IPV4地址如何通过iptables NAT(tcp RST,FIN)

我有一个路由器使用iptables iptables -t nat -o -j MASQUERADE执行简单的NAT转换 几乎所有的时间都可以正常工作,除了一些TCP RST和FIN数据包正在离开路由器的情况外。 在这种情况下,我设置了一个或两个客户端计算机streamFlashvideo(例如www.nasa.gov/ntv)在路由器,然后拆除并重新build立公共接口(这是一个调制解调器)正如预期的闪存stream熄灭。 连接重新build立后,我尝试刷新Flash页面,我看到一些TCP RST和[FIN,ACK]数据包离开公共接口(我假设Flash试图恢复其stream)。 我不知道这些数据包是如何离开路由器非NAT的

如何使用pyvirtualdisplay(Python)时使用TCP端口禁用Xvfb?

试图使用Python的pyvirtualdisplay来启动一些虚拟Xvfb Xterminal的应用程序。 但是,我们已经看到端口冲突,并希望禁用使用TCP端口的Xvfb 。 我已经阅读了关于做这个非常相似的问题 ,但我不明白为了使用pyvirtualdisplay (或作为默认configuration,否则)应该为此设置此configuration。 任何帮助,将非常感激。 非常感谢!

Linux – TCP源端口重用(和延迟)

我们有一个应用程序对远程Web服务器/服务进行了大量的调用。 客户端应用程序是Linux上的JBoss / Java(红帽子5),远程服务器是Windows 2008.有一个思科ACE的方式,但没有NAT'ing。 我们注意到,当Linux / JBoss重用一个源端口进行HTTP调用时,我们可以得到“连接被拒绝”。 客户端在几分钟之内重新使用所述源端口。 我在两边运行tcpdump / wireshark时看到的是这样的: 请求#1:源端口6666,目标端口80 客户端 – > Syn Server – > SYN ACK客户端 – > ACK客户端 – > GET /服务器 – >返回数据客户端 – > ACK服务器 – > FIN ACK客户端 – > FIN ACK服务器 – > ACK 请求#2:相同的源和目标端口是成功的。 请求#3:相同的源和目标端口是成功的。 请求#4:相同的源和目标端口,但是这次失败(“拒绝连接”),如下所示: 客户端 – > SYN客户端 – > SYN(重新传输)客户端 […]

Windows中的默认TCP连接积压值

Windows中TCP的缺省连接积压值是多less? 我试图find它,但没有运气。 干杯

对高TCP重传速率进行疑难解答

我一直在试图解决一个networking问题,出现很高的TCP重传率。 36个样本(在32位Windows 7上运行Wireshark 1.10.8)总共超过7小时,范围在2到53分钟之间,每个样本的重传次数占总入口带宽的43%到61%之间。 令我困惑的是,据我所知,这种问题只有两个原因:一个是丢包的薄片链路,另一个是拥塞。 我相信我排除了这些。 让我来阐述一下我们的情况,而且我很乐意听到有人比我更了解其他方面的问题来解决问题。 有问题的networking是在海上的一艘船上。 它使用卫星链路与互联网进行通信。 不幸的是,这种types的链路的带宽成本是巨大的,所以我们坚持1Mbps的下行/ 512kbps的连接。 作为卫星链路,它运行约650ms的ping时间。 目前,我们有大约300人在船上,所有人都分享这个pipe道。 networking由两个VLAN组成(一个用于船舶电脑,另一个用于客人)。 两个VLAN都连接到一个SonicWall TZ 215(运行SonicOS增强5.8.1.2-6o),它控制pipe道到Internet。 两个VLAN都有有线和无线客户端。 有线networking由一系列Cisco 2900千兆交换机运行。 无线networking由许多思科接入点提供(在海上的一艘钢铁船上的信号传播是可怕的)。 我的第一个想法是,这是一个拥塞问题,所以我寻求各种解决scheme(阻止高带宽的服务,如video聊天和stream媒体,窃听公司办公室支付更大的pipe道等)。 可悲的是,我们没有得到一个更大的pipe道。 其他的事情有一点帮助,但还不足以产生真正的影响。 但是这周末我又回到原点了。 上尉要求我在演习期间禁止访客上网。 当这个networking没有拥塞的时候,我利用这个机会拿走了一个Wireshark捕获的networking。 令我吃惊的是,10分钟的样本显示TCP的再次传输速率几乎与所有其他捕获相同 – 58%。 在这个样本的持续时间内,平均带宽使用率为98kbps,所以绝对不会拥塞。 这只会导致数据包丢失。 为了testing这个,我跑了十二个小时的ping。 最后,该scheme报告的丢包率不到1%。 哪个叶子…什么? 我不知道。 任何其他的想法将不胜感激。

Nginx TCP快速开放问题

我在我的一台服务器上configuration了Nginx和Apache。 nginx服务器在端口80上侦听端口80,在端口81上侦听Apache。Nginx作为反向代理。 在nginx中我configuration了TCP Fast Open: server { listen 107.6.155.74 fastopen=50; server_name servtest.com www.servtest.com; TCP快速打开也在服务器上启用: root@server:~/projects/nginx# cat /proc/sys/net/ipv4/tcp_fastopen 3 为了testing这个工作是否正常,我在运行Ubuntu的PC上configuration了Chrome,使用TCP Fast Open(chrome:// flags page)。 客户端上的tcp_fastopen设置设置为1。 在服务器上,我使用下面的grep找出是否使用TCP Fast Open: grep '^TcpExt:' /proc/net/netstat | cut -d ' ' -f 87-92 | column -t TCPOFOMerge TCPChallengeACK TCPSYNChallenge TCPFastOpenActive TCPFastOpenPassive TCPFastOpenPassiveFail 0 2 2 0 0 0 我相信TCPFastOpenActive和/或TCPFastOpenPassive计数器不应该是“0”,如果这个工程。 任何想法如何实际找出是否使用TCP Fast […]

我可以使用HAProxy负载平衡telnet连接吗?

我们使用HAProxy作为负载均衡器来处理常规的HTTP请求。 我在“HAProxyconfiguration指南”中看不到有关telnet连接的提示:“ HAProxyconfiguration指南” 。 我希望重用HAProxy(或为长寿命的连接启动单独的实例)来平衡TCP客户端,这可以用HAProxy完成吗?

Nagle的algorithm,ACK延迟和Rlogin回声

我正在阅读有关TCP数据stream, 延迟ACK和Nagle的algorithm 。 到目前为止我明白: TCP上的延迟ACK实现会在收到的段的确认上产生延迟,从而为应用程序提供写入确认的一些数据的机会,从而避免发送空的ACK数据包并造成networking拥塞。 Nagle的algorithm实现规定,你不能发送一个小的TCP段,而另一个小段仍然没有被确认。 这可以避免stream量被加载几个小图 。 在一些交互式应用程序中,比如Rlogin, Nagle的algorithm和延迟应答可以“冲突”: 当我们input键盘input时,Rlogin会将键盘input发送到服务器,并且一些键(如F1 )会生成多个字节( F1 = Escape +左括号+ M)。 如果将这些字节逐个传递给TCP,则可以将这些字节发送到不同的段中。 服务器没有回应,直到它有整个序列,所以所有的ACK将被延迟(期待从应用程序的一些数据)。 另一方面,客户端会在发送下一个字节之前等待第一个字节的确认(尊重Nagle的algorithm )。 这种组合最终导致了“laggy”Rlogin。 在Rlogin上发送的F1和F2密钥的tcpdump如下所示: type Fl key 1 0.0 slip.1023 > vangogh. login: P 1:2(1) ack 2 2 0.250520 (0.2505) vangogh.login > slip.1023: P 2:4(2) ack 2 3 0.251709 (0.0012) slip.1023 > vangogh.login: P 2:4(2) ack […]