Checksum

אמיר ט

New member
Checksum

אני מנסה לחשב checksum עבור פאקטות ip ו tcp. הורדתי קוד מהRFC שעושה את הchecksum עצמו, אבל כנראה שאני לא עושה אותו על החלק הנכון של המידע או משהו כזה... כל הזמן יוצא לי checksum לא נכון מול מה שיש בפאקטה (ethreal אומר שchecksum נכון). מישהו עשה את זה בעבר, או יש לו מושג באיזה כיוון יכולה להיות הבעיה ?
 

DNile

New member
been there, done that.

אולי הפאק במי שמייצר את הchecksum? אם ethereal מאשר, אני מאמין... או שמה שקורה זה שבפקטה זה יוצא לא נכון?? באיזה שפה אתה כותב את החישוב checksum שלך?
 

אמיר ט

New member
....

אני והethreal מסניפים את אותו הדבר, הוא מאשר שהchecksumים נכונים (ואני באמת לא רואה שידורים חוזרים...) אבל כשאני מנסה לבד לחשב את ה checksum הוא יוצא אפילו קרוב למציאות. כשאני עושה checksum על IP, על איזה חלק בדיוק אני צריך לעשות checksum ? ואותה שאלה על TCP. אני כותב את זה ב c++.
 

DNile

New member
או, יפה, טוב ששאלת.

כשאתה עושה IP checksum, זה למעשה רק IP header checksum(במהלך חישוב הchecksum, תציב 0 בשדה הchecksum שבכותרת). כשאתה עושה TCP checksum, זה קצת יותר מורכב. זה checksum משולב של הpayload, של הכותרת, ושל איזה שהיא פסאודו-כותרת, שנועדה לוודא תקינות גם של כותרת הIP. קרא עוד בRFC 793.
 

אמיר ט

New member
../images/Emo45.gifאתה 10 אתה...

טוב החישוב על ה IP עובד עכשיו כמו שצריך, עכשיו אני אסדר את ה TCP. תודה רבה.
 

אמיר ט

New member
ביאור קטן

אחרי קצת מעבר וניסיון להבין את ה RFC הגעתי למסקנה שהוא לא נועד לקריאה בשעות כאלה. אכפת לך לנסות להסביר לי איך אני מחשב את הchecksum על TCP ?
 

DNile

New member
או שנסה להבין את ההסבר כאן:

http://www.netfor2.com/tcpsum.htm
 

אמיר ט

New member
:(

בוא נראה עם הבנתי נכון איך לעשות את הchecksum על tcp : 1. לאפס את שדה ה checksum של tcp. 2. לעשות checksum על הפסודו-הדר + tcp-header + המידע. אני צודק? (כנראה שלא ממש כי לא יוצאים לי checksumים נכונים)
 
למעלה