תחי ישראל - אין לנו ארץ אחרת

תחי ישראל -אין לנו ארץ אחרת

מה זה TCP/IP?

מחבר:
בתאריך:

הבסיס לתקשורת הוא פרוטוקול - הליך מוסכם והציפיות הנובעות ממנו. לדוגמה, בני אדם שנפגשים אומרים "שלום" אחד לשני כי זו המוסכמה.

מה שאנחנו קוראים לו "אינטרנט" הוא אוסף של פרוטוקולים. החשוב בהם הוא TCP/IP קיצור של internet protocol suite.

התקשורת באינטרנט היא בין שרת (עליו יושב אתר אינטרנט או שירות סטרימינג) ששולח מידע ומחשב לקוח שמקבל מידע.

the basics of tcp/ip for sending and receiving data over the internet

השולחים והמקבלים ברשת האינטרנט אורזים את המסרים שלהם באמצעות פרוטוקול TCP לחבילות קטנות "פקטות" Packet switching. בהקבלה לשירותי דואר כל פקטה היא גלויה ואין ערוץ ייעודי מיוחד להתכתבות שאתה מנהל במקום זה יש מערכת שיודעת להעביר דואר. במערכת Packet switching ככל שהרשת גדלה, גדל גם מספר הדרכים לשלוח מידע מה שמגדיל את אמינות הרשת.

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

פרוטוקול IP מנחה את הפקטה ליעדה כמו GPS שמנחה נהג. זה לא מובן מאליו מפני שצריך להעביר את המידע על פני מרחקים גיאוגרפיים גדולים כשכל פקטה יכולה לעבור בין עשרות מחשבים מתווכים עד שהיא מגיעה ליעד.

הפרוטוקולים TCP ו-IP עובדים ביחד בשתי שכבות: שכבת TCP מפרקת לפקטות ו-IP מנחה אל היעד. בגלל שהם עובדים ביחד לפרוטוקול קוראים TCP/IP. כדי להוריד מידע משרת אינטרנט, שכבת TCP בשרת מפרקת את המידע המבוקש לפקטות, נותנת לכל פקטה מספר סידורי על פי סדר ההצגה, ושולחת באמצעות שכבת IP למחשב הלקוח. במחשב הלקוח שכבת ה-TCP מרכיבה את המסר מהפקטות על פי סדר.

בגלל אמינות הפרוטוקול פרוטוקולים רבים של העברת מידע ברשת משתמשים ב- TCP/IP: FTP להעברת קבצים, ופרוטוקולים לשליחת וקבלת מיילים IMAP, SMTP, POP.

בעיה עיקרית היא איך אנחנו יודעים שהמידע התקבל בהצלחה. כאן באה לעזרתנו לחיצת יד משולשת Triple handshake בין השרת ומחשב המשתמש. בתהליך שני המחשבים אומרים "שלום" אחד לשני עוד לפני שהם מתחילים להעביר מידע. מחשב המשתמש אומר "שלום", שרת האתר מחזיר "שלום" ומחשב המשתמש מחזיר מסר שהוא קיבל את "השלום". אם השרת מקבל את האישור השלישי התקשורת התבססה ואפשר להתחיל להעביר מידע. במציאות במקום להגיד "שלום" המחשב המקבל והשרת משתמשים במספרים אקראיים שאותם יש להגדיל ב-1 כהוכחה להתקשרות. מחשב הלקוח מתחיל את לחיצת היד המשולשת בשליחת SYN מספר אקראי (לדוגמה 10). השרת מקבל את המסר ומחזיר מסר SYN/ACK הכולל מספר אקראי שיצר השרת (לדוגמה 50) ואישור שהוא מוכן ל-11. המחשב המקבל מחזיר מסר ACK הכולל את המספר שהוא קיבל מהשרת ועוד 1 (51 במקרה זה). אם לחיצת היד המשולשת הצליחה המחשב והשרת יכולים להתחיל להעביר מידע.

the triple handshake between server and client computer for establishing a connection with the TCP/IP model

גם בעת העברת המידע פרוטוקול TCP/IP ממשיך לבדוק שהוא שלם באמצעות ACK. כל פקטה מקבלת מספר סידורי ואם אחת מהם הולכת לאיבוד בדרך השרת ישלח אותה שוב.

הבעיה היא שלפעמים שני קליינטים שולחים סיגנל בו זמנית ואז חוסמים אחד את השני. הפתרון הוא שהשולחים יחכו על פי תבנית של נסיגה אקספוננציאלית exponential backoff בכל פעם בה התקשורת נכשלת צריך לחכות עד פי-2 יותר זמן לפני שמנסים שנית (כמה בדיוק נקבע באקראי). נכשלת בפעם הראשונה, מחכים שנייה, נכשלת בפעם השנייה מחכים שנייה או שתיים. פעם שלישית - מחכים עד 4 שניות. וכיו"ב (2, 4, 8, 16).

התקשורת בין שרת למחשב לקוח מתחיל בהאצה של קצב העברת הנתונים. אם פקטה ראשונה מתקבלת בהצלחה השרת שולח שתיים. אם שתיים מתקבלות הוא שולח 4, וכיו"ב. ברגע ש-ACK של פקטה לא מוחזר לשרת, מפסיקה ההאצה של קצב שליחת הנתונים, ובמקומו נכנס לפעולה אלגוריתם AIMD. אם כל הפקטות מתקבלות AIMD מוסיף פקטה 1. אם ACK לא מתקבל, קצב העברת הפקטות קטן לחצי. AIMD גורם לצורה האופיינית של רוחב הפס ברשתות להראות דפוס אופייני של "שן מסור" TCP sawtooth - טיפוס מתמיד ויציב, שאחריו ירידה חדה.

המנגנון של שימוש באישורים כדי לוודא שכל המידע נשלח גורם לאמינות גבוהה של העברת המידע באמצעות TCP אבל הוא גם מאט את מהירות האינטרנט. פרוטוקול חלופי הוא UDP שאין בו מספור של הפקטות ואין צורך לאשר שהמידע התקבל. לפיכך, פרוטוקול UDP הוא פחות אמין אבל גם מהיר יותר מה שהופך אותו למועיל עבור אינטרנט שמעדיף מהירות על פני דיוק, דוגמת יישומים של העברת קול VoIP, משחקי רשת וסטרימינג.

 

גם זה יעניין אותך

כיצד עובדת רשת האינטרנט?

מה זה REST API?

איתור תקלות רשת באמצעות שורת הפקודות

 

לכל המדריכים על כישורי מחשב

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

 

המדריכים באתר עוסקים בנושאי תכנות ופיתוח אישי. הקוד שמוצג משמש להדגמה ולצרכי לימוד. התוכן והקוד המוצגים באתר נבדקו בקפידה ונמצאו תקינים. אבל ייתכן ששימוש במערכות שונות, דוגמת דפדפן או מערכת הפעלה שונה ולאור השינויים הטכנולוגיים התכופים בעולם שבו אנו חיים יגרום לתוצאות שונות מהמצופה. בכל מקרה, אין בעל האתר נושא באחריות לכל שיבוש או שימוש לא אחראי בתכנים הלימודיים באתר.

למרות האמור לעיל, ומתוך רצון טוב, אם נתקלת בקשיים ביישום הקוד באתר מפאת מה שנראה לך כשגיאה או כחוסר עקביות נא להשאיר תגובה עם פירוט הבעיה באזור התגובות בתחתית המדריכים. זה יכול לעזור למשתמשים אחרים שנתקלו באותה בעיה ואם אני רואה שהבעיה עקרונית אני עשוי לערוך התאמה במדריך או להסיר אותו כדי להימנע מהטעיית הציבור.

שימו לב! הסקריפטים במדריכים מיועדים למטרות לימוד בלבד. כשאתם עובדים על הפרויקטים שלכם אתם צריכים להשתמש בספריות וסביבות פיתוח מוכחות, מהירות ובטוחות.

המשתמש באתר צריך להיות מודע לכך שאם וכאשר הוא מפתח קוד בשביל פרויקט הוא חייב לשים לב ולהשתמש בסביבת הפיתוח המתאימה ביותר, הבטוחה ביותר, היעילה ביותר וכמובן שהוא צריך לבדוק את הקוד בהיבטים של יעילות ואבטחה. מי אמר שלהיות מפתח זו עבודה קלה ?

השימוש שלך באתר מהווה ראייה להסכמתך עם הכללים והתקנות שנוסחו בהסכם תנאי השימוש.

הוסף תגובה חדשה

 

 

ענה על השאלה הפשוטה הבאה כתנאי להוספת תגובה:

איך אומרים בעברית אינטרנט?