大多数情况下,我的rsh循环是通用的,我们可以从rshd获得以下日志:
Aug 19 04:36:34 shmm500 authpriv.info in.rshd[21343]: connect from 172.17.0.40 (172.17.0.40)
Aug 19 04:36:34 shmm500 auth.info rshd[21344]: root@172.17.0.40 as root: cmd='echo 481'对于某些错误情况,rsh可能会成功,但是会有几秒的延迟,请参见以下时间戳:
Aug 19 04:12:24 shmm500 authpriv.info in.rshd[17968]: connect from 172.17.0.40 (172.17.0.40)
Aug 19 04:12:27 shmm500 auth.info rshd[17972]: root@172.17.0.40 as root: cmd='echo 18'我还发现,在大多数正常情况下,PID增加了1,而在大多数错误情况下,PID增加了4,参见上述日志中的PID,似乎rshd分叉了一些进程。那么,您能解释一下为什么rshd占用了这几秒和PID增加。
我们的rsh是旧的rsh,不是ssh,我不确定,但似乎rsh是来自netkit。这是一个嵌入式的板,里面有百事箱,没有strace/p堆栈。对于客户端,我只是'rsh 172.17.0.8 pwd',没有使用主机名。
发布于 2015-01-06 01:36:20
我自己回答这个问题:
这个问题是由帧丢失引起的。由于某种原因,3路握手中的SYN或SYN+ACK都以罕见的速度下降,无论如何,客户端在3秒内没有在超时时间内获得SYN+ACK (这个超时是在Linux内核中硬编码的),然后connect()再次对SYN表示不满,并且通常在第二次尝试中成功。
从应用的角度来看,我们有3秒的延迟,甚至6秒,如果它在第二次尝试失败。
其他有关资料:
第一个日志来自tcpd(也称为tcp包装器)。
Aug 19 04:36:34 shmm500 authpriv.info in.rshd[21343]: connect from 172.17.0.40 (172.17.0.40)
第二个日志来自netkit 0.17中的rshd
Aug 19 04:36:34 shmm500 auth.info rshd[21344]: root@172.17.0.40 as root: cmd='echo 481'
rsh需要两个tcp连接,第一个是从rsh客户端到rshd,第二个tcp连接是从rshd到rsh客户端,这意味着rshd是tcp客户端。我的问题是第二个tcp连接的帧丢失。
https://stackoverflow.com/questions/27622453
复制相似问题