Articles of tcp

打击临时TCP端口用尽

我们运行一个高stream量的网站。 在过去的几天里,我们有几个客户抱怨我们无法复制的零星停机时间。 我们有几个networking服务器被选为接收来自我们的负载均衡器的stream量,而在调查时,我意识到所有的服务器每秒下降超过20个连接。 一个服务器的连接示例如下所示: 38452 TIME_WAIT 7815 ESTABLISHED 570 FIN_WAIT2 105 FIN_WAIT1 101 LAST_ACK 36 SYN_RECV 25 CLOSING 4 SYN_SENT 2 CLOSE_WAIT 1 Foreign 我们configuration的端口范围目前在所有服务器上设置为15000 61000 。 那么,因为build立或等待closures的连接数量等于46267,所以所有可能的端口都必须耗尽。 在调查stream量的同时,我们应该怎样处理丢失的连接? 增加我们的港口范围可能是明智的吗? 减lessclosures连接等待的时间? 都? 会做有任何潜在的负面后果?

TCP的MSS是否隐藏了一个不匹配的LAN内MTU?

我试图了解networking中MTU的不匹配行为。 假设两台主机能够通过基于以太网的networking相互通话。 networking和主机Aconfiguration为巨型帧,但不包括LAN主机B上的交换机和主机B本身。 从我对TCP的理解来看,每个TCP会话开始时的三次握手都会将每个主机的MSS通告给另一个主机。 考虑到主机B将在减去IP和TCP报头之后通告一个1460字节的MSS,并且由于它们将使用两个通告的MSS中较低的那个,这两个主机之间的任何TCP对话是否会毫无问题地工作? 另一方面,由于UDP没有MSS,主机A发送的大型碎片UDP数据包是否会被主机B丢弃?

Squid3 CONNECT imap.gmail.com:993 TCP_DENIED:NONE

我有squid.conf下的configuration。 但是,当我的黑莓电子邮件客户端试图获取新的电子邮件等Squid访问日志显示以下错误: imap.gmail.com "CONNECT imap.gmail.com:993 HTTP/1.1" 403 3465 "-" "-" TCP_DENIED:NONE smtp.gmail.com "CONNECT smtp.gmail.com:465 HTTP/1.1" 403 3465 "-" "-" TCP_DENIED:NONE 因此,没有电子邮件被抓取。 acl manager proto cache_object acl localhost src 127.0.0.1/32 ::1 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port […]

当填充不为0或F时,没有对TCP SYN数据包做出响应

我有这个用SYN数据包发起三次握手的客户端,但是没有SYN ACK响应。 我们发现这是因为客户端没有用0或者F填充TCP头部的末尾,而是使用了其他值(我们使用数据包生成器软件来确认这个)。 服务器是Windows XP 32位版本2002 Service Pack 3.我在Windows 7上尝试过,并且不会发生此问题。 有没有人听说过这类问题? 难道是因为服务器在Windows XP上运行吗? 我试过简化networking链接(本地链接),我试着在安全模式下运行的服务器,并发生相同的结果。 客户端的提供者说他们已经validation了它能够在Windows XP服务器上运行。

在linux中更好的替代tcp_syncookies

为了防止DDOS攻击,我遵循了在Linux机器中将/ proc / sys / net / ipv4 / tcp_syncookies值设置为1的build议,以启用TCP syncookies。 但是,当我看这个url: http : //ckdake.com/content/2007/disadvantages-of-tcp-syn-cookies.html 它告诉我,如果启用tcp_syncookies,那么包括大型窗口pipe理function在内的一半tcpfunction将被禁用,从而可能会降低性能。 我在其他地方读到,syn cookies的部分目的是当更多的数据包进入时,将tcp syn backlog缓冲区扩展到超过其上限(通过/ proc / sys / net / ipv4 / tcp_max_syn_backlog),使数据包不会丢失。 我希望能够禁用syn cookies,这样我就可以充分利用tcp,并使我的服务器运行得更快,并且不会再发生DDOS攻击。 我可以很容易地增加同步缓冲区和最大的连接数,但是我认为如果我太高的话,我会耗尽内存。 有没有人有一个很好的替代方法来在沉重的服务器上同步cookies而不会被DDOS攻击? 我想享受TCP的function,并为用户提供非常快的内容。

数据包被路由到错误的IP

环顾四周,在任何地方都找不到类似的问题。 我最近在networking上遇到了一些非常奇怪和难以解释的问题,为了find原因,我遇到了一个有趣的发现,我正在努力去理解。 在我的networking中,有一个路由器/调制解调器将WiFi设备连接到networking,并将networking连接到互联网 – 路由器上只有一个networking:192.168.178.0。 有一个简单的8端口非pipe理交换机连接到路由器,并在该交换机有4个服务器,每个在他们的操作系统内的静态IP设置(主要运行Ubuntu服务器14.04) 每个服务器都有iptables设置,除了特定的主机:端口:状态组合外,其他所有的服务器都会丢弃。 所以这里是问题: 在服务器A(192.168.178.19)上运行tcptrack显示了我期望的stream量,除了我注意到有数据包被捡到的serverB地址(192.168.178.13)。 ServerA正确地反弹这些数据包(仅限于SYN_SENT,从未build立) – 但是数据包是如何在那里被路由的? 被黑掉的IP是我自己的外部IP,但是我也从另一个IP看到了这个问题。 所以我想我是问这是否正常? 或者,如果我有路由器问题? 提前致谢。 蒂姆

Ubuntu 14.04 TCPbuild立了哈希表项

一点背景 我运行在高通信量的两个服务器与Ubuntu的12.04(Linux的3.2.0-69-通用)和一个与Ubuntu的14.04(Linux 3.13.0-52-通用)。 我现在试图保证两个。 他们都有非常相似的硬件资源(相同数量的CPUS,但是12.04在14.04获得16GB时只有8GB RAM)。 我想启用ufw防火墙,但是我遇到了nf_conntrack表越来越大的问题。 数据包基本上正在被丢弃。 我find了解决scheme,通过降低超时,增加表大小以及桶的数量。 那是: net.netfilter.nf_conntrack_tcp_timeout_established = 600 net.netfilter.nf_conntrack_max = 196608 net.netfilter.nf_conntrack_buckets = 24576 这些值正确更新,并保持重新启动。 (看到这个博客 )我也看到conntrack_count被提高远远高于默认值,所以我相信这是在两个服务器上工作。 值保持在极限之下,所以我相信它很好。 问题 12.04服务器在高负载下工作正常,但14.04一直丢包,创build客户端超时。 现在在14.04启动,我可以在kern.log中看到这一行: TCP established hash table entries: 131072 (order: 8, 1048576 bytes) 而在12.04,这是: TCP established hash table entries: 524288 (order: 11, 8388608 bytes) 我怀疑这可能是为什么我的服务器丢包,因为这个表可能太小,关于14.04的stream量。 所以我试图寻找一种方法来设置这个大小,并发现参数thash_entries 在这里看到的解释)。 但是,我不能用sysctl来设置它。 所以这是我的问题: 这个tcp连接表真的是我麻烦的来源吗? 或者我应该看看别的地方? 如果是,那我该如何设置它并使其在重新启动后能够存活? […]

Wireshark在每个常规ACK之后在SACK上显示“TCP Dup Ack”

我有通过交换机端口镜像和tcpdump捕获的TCP会话。 查看时(在Wireshark中),当我发送消息时,我会看到相同的模式。 这里是出站数据包的摘录(我没有捕获入站的数据…): [PSH, ACK] Seq=34477 Ack=46645 Len=51 # sending first message [ACK] Seq=34528 Ack=46714 Len=0 # acknowledge response (not shown) [ACK] Seq=34528 Ack=46714 Len=0 SLE=46645 SRE=46714 # TCP Dup Ack! [PSH, ACK] Seq=34528 Ack=46714 Len=51 # sending second message [ACK] Seq=34579 Ack=46783 Len=0 # acknowledge response (not shown) [ACK] Seq=34579 Ack=46783 Len=0 SLE=46714 SRE=46783 […]

带复位原因的RST ACK

我们有一个通过有线LAN(以太网)连接到我们的云服务器的设备。 在某些客户位置,当设备尝试发送数据时,我们将从客户服务器获取RST ACK到我们的云服务器并导致重置。 我无法从中理解原因。 设备通过DHCP连接到客户路由器,然后从路由器连接到我们的云服务器。 我附上了wireshark转储的副本。

无法ping通其中一个networking接口

build立 ubuntu linux VM(虚拟机)configuration了两个接口, eth0和eth1 。 eth0在桥接networking上并直接连接到外部networking。 eth1在“natnetworking”上,也连接到外部networking。 问题 无法通过eth0 ping通。 能够通过TCP连接到主机。 ping -I eth0 -c2 google.com PING google.com (172.217.1.238) from 10.254.185.16 eth0: 56(84) bytes of data. From company.com (10.254.185.16) icmp_seq=1 Destination Host Unreachable From company.com (10.254.185.16) icmp_seq=2 Destination Host Unreachable — google.com ping statistics — 2 packets transmitted, 0 received, +2 errors, 100% packet […]