在我的上一篇文章中,我向您展示了如何模拟DDoS攻击以及如何缓解它。简单回顾一下,DDoS使用了大量的伪造请求,导致目标服务器消耗大量资源来处理这些无效请求,以至于无法正常响应正常的用户请求。在Linux服务器中,可以通过内核调优、DPDK、XDP等多种方式来提高服务器的抗攻击能力,降低DDoS对正常业务的影响。在应用中,可以使用各级缓存、WAF、CDN等来减轻DDoS对应用的影响。但是需要注意的是,如果DDoS流??量到达了Linux服务器,即使在应用层做了各种优化,网络服务延迟一般也会比平时大很多。所以在实际应用中,我们通常会使用带有专业流量清洗和网络防火墙设备的Linux服务器来缓解这个问题。除了DDoS导致的网络延迟增加,我想你一定见过很多其他原因导致的网络延迟,比如网络传输慢导致的延迟。由Linux内核堆栈中缓慢的数据包处理引起的延迟。应用数据处理慢等导致的延迟。那么遇到这些原因导致的延迟我们应该怎么办呢?如何定位网络延迟的根源?让我们在本文中讨论网络延迟。LinuxNetworkLatency说到网络延迟(NetworkLatency),人们通常认为是指网络数据传输所需要的时间。不过这里的“时间”指的是双向流量,即数据从源端发送到目的地,然后从目的地址返回响应的往返时间:RTT(Round-Trip时间)。除了网络延迟之外,另一个常用的指标是应用延迟(ApplicationLatency),它指的是一个应用从收到请求到返回响应所花费的时间。通常,应用程序延迟(也称为往返延迟)是网络数据传输时间加上数据处理时间的总和。通常人们使用ping命令来测试网络延迟,ping是基于ICMP协议的,它通过计算ICMP发送的响应报文和ICMP发送的请求报文之间的时间差来获得往返延迟时间。这个过程不需要特殊的认证,所以经常被很多网络攻击所利用,比如端口扫描工具nmap,分组工具hping3等。因此,为了避免这些问题,很多网络服务禁用了ICMP,这使得无法使用ping来测试网络服务的可用性和往返延迟。在这种情况下,您可以在TCP和UDP模式下使用traceroute或hping3来获取网络延迟。例如:#-c:3requests#-S:SetTCPSYN#-p:Setportto80$hping3-c3-S-p80google.comHPINGgoogle.com(eth0142.250.64.110):Sset,40headers+0databyteslen=46ip=142.250.64.110ttl=51id=47908sport=80flags=SAseq=0win=8192rtt=9.3mslen=46ip=142.250.64.110ttl=51id=6788sport=80flags=SAseq=1win=8192rtt=10.9mslen=46ip=142.250.64.110ttl=591SAidseport=5912win=8192rtt=11.9ms---baidu.comhpingstatistic---3packetstransmitted,3packetsreceived,0%packetlossround-tripmin/avg/max=9.3/10.9/11.9ms当然也可以使用traceroute:$traceroute--tcp-p80-ngoogle.comtraceroutetogoogle.com(142.250.190.110),30hopsmax,60bytepackets1***2240.1.236.340.198ms**3**243.254.11.50.189ms4*240.1.236.170.2140ms23417.2.0.182.716ms.150.234ms241.0.12.760.219ms...24142.250.190.11017.465ms108.170.244.118.532ms142.251.60.20718.595ms会在每三跳routetraceohroute包中发送,响应后输出往返时延已收到。如果没有响应或者响应超时(默认5s),会输出星号*。案例展示我们需要在这个演示中托管host1和host2两个主机:host1(192.168.0.30):托管两个Nginxweb应用程序(正常和延迟)host2(192.168.0.2):分析主机host1在host1上准备就绪,让我们运行并开始twocontainers,theofficialNginxandtheNginxwithadelayedversion:#Officialnginx$dockerrun--network=host--name=good-itdnginxfb4ed7cb9177d10e270f8320a7fb64717eac3451114c9fab3c50e02be2e88ba2#Latencyversionofnginxfexdnginx--work--name/nginx:latencyb99bd136dcfd907747d9c803fdc0255e578bad6d66f4e9c32b826d75b6812724Runthefollowingcommandtoverifythatboth容器正在服务流量:$curlhttp://127.0.0.1...
Thankyouforem>ngin/p>