I'm trying to figure out where a connection is failing. My rusty
TCP/IP knowledge isn't helping. Perhaps someone here can offer some
tips. I hope I provide enough info without being too verbose... ;)
Background:
A friend has a Brother Printer/Fax/Scanner with a built-in mail client.
You can scan and then email the image via smtp directly from the printer
-- it has an ethernet port. Most (but not all) of the time when he
sends more than a small document the printer aborts with "Network
Error". He uses an ADSL router. We have tried with two remote SMTP
servers with same results.
He is able to send the same image from his PC on the same LAN without
any problem. Placing the printer on my LAN (where I have a local SMTP
server) it works without any problem at all.
I setup my laptop running Debian at his house between the printer and
the ADSL router (using NAT) so I could run ethereal.
The interesting part:
The printer sends packets with a typical length in the range of 70 to a
few hundred bytes. Then while sending the "Message Body" the printer
sends a packet with a larger Len:
Seq: 2669, Ack: 185, Len: 1460 (from printer)
I see what appears to be a normal ACK for that packet
[ACK] Seq=185 Ack=2669 Win=8576 Len=0 (from smtp server side)
and then 36 Duplicate ACKs of that follow. During that time the Printer
sends about 30 more packets with the last one being:
Seq: 6731, Ack: 185, Len: 52 (from printer)
and then the printer starts to resend [TCP Retransmission] the 2669
packets:
Seq: 2669, Ack: 185, Len: 1460 (from printer)
It sends five of those retransmissions and then the printer aborts with
"Network Error".
Looks to me like a MSS problem. Here's where my TCP/IP skills are
rusty. In the initial SYN,ACK form the smpt server it offers MSS=1460.
So, now I'm not sure where the problem is. It seems odd that the
printer is sending small packets (seems like it's sending data split at
line breaks), but then all of the sudden it sends a bunch of lines in a
single packet with a length of 1460.
I assume the 1460 packet is too big to make it through the network
(although shouldn't it get fragmented?). But how do I find out where
that large packet is getting dropped? And from what I'm saying is the
printer in error in sending that large of a packet?
Thanks very much,
--
Bill Moseley
moseley@xxxxxxxx