正途:网络监听解决邮件发送时间长问题
在系统管理员看来,网络监听的主要用途是进行数据包分析,通过网络监听软件,管理员可以观测分析实时经由的数据包,从而快速的进行网络故障定位。
我们可以举个例子: server是邮件服务器,下面带了很多的client用户,邮件服务器收发邮件工作正常,但下面的client用户总是抱怨发邮件时连接到邮件服务器后要等待很久的时间才能开始发送工作,问题出在哪里呢?
在server上使用tcpdump对来自其中的一个client的数据包进行捕获分析,看看结果如何?
server#tcpdump host client
tcpdump: listening on hme0
19:04:30.040578 client.1065 > server.smtp: S 1087965815:1087965815(0) win 64240 <mss 1460,nop,wscale 0,nop,nop,timestamp[|tcp]> (DF)
19:04:30.040613 server.smtp > client.1065: S 99285900:99285900(0) ack 1087965816 win 10136 <nop,nop,timestamp 20468779 0,nop,[|tcp]> (DF)
19:04:30.040960 client.1065 > server.smtp: . ack 1 win 64240 (DF)
client连接服务器的25端口,三次握手正常,没有问题,我们再往下看
19:04:30.048862 server.33152 > client.113: S 99370916:99370916(0) win 8760 <mss 1460> (DF)
19:04:33.411006 server.33152 > client.113: S 99370916:99370916(0) win 8760 <mss 1460> (DF)
19:04:40.161052 server.33152 > client.113: S 99370916:99370916(0) win 8760 <mss 1460> (DF)
19:04:56.061130 server.33152 > client.113: R 99370917:99370917(0) win 8760 (DF)
19:04:56.070108 server.smtp > client.1065: P 1:109(108) ack 1 win 10136 <nop,nop,timestamp 20471382 167656> (DF)
这里有问题了,我们看到server端试图连接client的113认证端口,然而client端并不会去回应它,server端从19点04分30秒到19点04分56秒尝试3次,费时26秒后,才放弃认证尝试,主动reset了client端的113端口,开始push后面的数据,而正是在这个过程中所花费的时间,使用户发送邮件时产生了漫长的等待。
问题找到了,下面的工作就好办了,通过修改服务器端的软件配置,使它不再进行113端口的认证,看看这个问题解决了么?不用问client用户,再抓包如下:
server# tcpdump host client
tcpdump: listening on hme0
19:06:45.775516 client.1066 > server.smtp: S 1119047365:1119047365(0) win 64240 <mss 1460,nop,wscale 0,nop,nop,timestamp[|tcp]> (DF)
19:06:45.775546 server.smtp > client.1066: S 116566929:116566929(0) ack 1119047366 win 10136 <nop,nop,timestamp 20482353 0,nop,[|tcp]> (DF)
19:06:45.775776 client.1066 > server.smtp: . ack 1 win 64240 <nop,nop,timestamp 169013 20482353> (DF)
19:06:45.789316 server.smtp > client.1066: P 1:109(108) ack 1 win 10136 <nop,nop,timestamp 20482354 169013> (DF)
19:06:45.796767 client.1066 > server.smtp: P 1:11(10) ack 109 win 64132 <nop,nop,timestamp 169013 20482354> (DF)
我们看到,server不再进行113端口的认证尝试,直接push数据,问题应该解决,到client试验,果然延迟现象消失!
由这个试验,我们可以看到,网络监听手段,对网络的系统管理员是非常有价值的。