I'm facing a situation where a client establish a TCP connection via telnet
(or netcat
) in order to connect to a linux server. The server must then send back a banner containing some text info...
In each host, I launched Tcpdump to capture traffic.
First, the two machines did the traditional TCP handshake. the server then sent a PUSH packet containing the banner in the direction of the client and received an ACK of it from the client.
The weird part is that the client never received the banner (nothing showed in telnet
/nc
) and the tcpdump launched on client side didn't capture any PUSH packet from the server nor an ACK in the direction of the server. While the tcpdump on server side captured all packets.
I did this several times and each time nothing changed, seems not a tcpdump problem.
I wonder if this is caused by the firewall since between the 2 machines there is one (but how come the server is receiving the ACK!?)
Beside that, it is possible that when the client received the PUSH packet, instead of sending it to the 7th OSI layer (telnet
) it stoped it for some reason in the 4th layer (TCP) and sent back an ACK ? Does this have to do with some application filtering in client side?
Nb: Both machines use a Linux From Scratch and do not use iptables. I don't know which TCP implementation they are using.
EDIT:
Here is a schema of the communication:
Server view:
Server........................................................................client
<-----------------------------------SYN (Ip ID=3333)---------------------------
----------------------------------SYN-ACK (IP ID=4444)--------------------------->
<---------------------------------ACK (Ip ID=2222)-------------------------------
-----------------------------PUSH (data) (100 bytes, IP ID=4445)------------------->
<----------------------------ACK (Ip ID=2223, ack-num=101)------------------------
Client view:
Server........................................................................client
<---------------------------------SYN (Ip ID=3333)-----------------------------
---------------------------------SYN-ACK (IP ID=4444)--------------------------->
<--------------------------------ACK (Ip ID=3334)-----------------------------
Inside all packets, everything matchs except IP packet Identifier, Ack number and sequence number.