home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.protocols.tcp-ip      TCP and IP network protocols.      14,669 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 13,946 of 14,669   
   Josef Moellers to Jorgen Grahn   
   Re: telnet not giving up after RST packe   
   13 Mar 13 14:47:35   
   
   From: josef.moellers@invalid.invalid   
      
   On 03/13/2013 01:46 PM, Jorgen Grahn wrote:   
   > On Tue, 2013-03-12, Josef Moellers wrote:   
   > ...   
   >> I've found it myself: The TCP header checksum must include parts of the   
   >> IP Header! Thus, my checksum was bad and the TCP layer discarded the RST   
   >> packet.   
   >   
   > 'tcpdump -v' would have told you this, at least on the side receiving   
   > the RST.  That side would also have recorded a bad checksum discard in   
   > 'netstat -s'.   
      
   I used wireshark, but it only said:   
      
       Checksum: 0xf89a [validation disabled]   
           [Good Checksum: False]   
           [Bad Checksum: False]   
      
   I now (since yesterday afternoon ;-) have Fall/Stevens "TCP/IP   
   Illustrated 2nd Ed" and it says "The TCP Checksum field covers the TCP   
   header and data and *some fields in the IP header*, using a   
   pseudo-header computation ...". I should have taken that more serious   
   and should have read the RFC more thoroughly. I have added this code   
   fragement:   
      
   checksum = 0;   
   checksum = update_checksum(checksum, my_IP[0], my_IP[1]);   
   checksum = update_checksum(checksum, my_IP[2], my_IP[3]);   
   checksum = update_checksum(checksum, source_IP[0], source_IP[1]);   
   checksum = update_checksum(checksum, source_IP[2], source_IP[3]);   
   checksum = update_checksum(checksum, hi8(PROT_TCP), lo8(PROT_TCP));   
   checksum = update_checksum(checksum, hi8(5*4), lo8(5*4));   
      
   setup_TCP_header(destination_port,        /* Source Port */   
                    source_port,             /* Destination Port */   
                    acknowledgement_number,  /* Sequence Number */   
                    sequence_number,         /* Acknowledgement Number */   
                    RST | ACK,               /* Flags */   
                    checksum);               /* No data */   
   -eoc-   
      
   I'll keep "tcpdump" in mind and use it when I take the next steps:   
   connection establishment and then data transfers. I gather that   
   maintaining the sequence numbers (seq and ack) will be tricky.   
      
   Thanks again,   
      
   Josef   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca