בדיקת הפונקציונליות של UDP באמצעות OT CLI

הצגת המקור ב-GitHub

ב-OpenThread יש פקודות UDP לשימוש עם רשת Thread כדי לבדוק תקשורת מקצה לקצה (P2P) בין שקעי UDP. הפונקציה cli udp מספקת שקע לדוגמה אחד שאיתו כל הפקודות של udp פועלות.

הדוגמאות הבאות ממחישות איך לפתוח ולחבר שקעים, איך לחבר אותם ואיך לשלוח הודעות באמצעות שקעי UDP.

פקודות UDP

כדי להציג את רשימת הפקודות של udp, מקלידים help:

udp help
bind
close
connect
linksecurity
open
send
Done

פקודה אחת (open)

צריך להשתמש בפקודה udp open כדי לפתוח את השקע כדי להתחיל תקשורת UDP. יש אפשרות לקשר את השקע לכתובת IP מסוימת וליציאה ספציפיות.

פקודה אחת (bind)

אחרי open השקע, אפשר להריץ פקודת udp bind כדי להקצות כתובת IPv6 ויציאה לשקע הפתוח. הפעולה הזו מחברת את השקע לתקשורת. הקצאת כתובת IPv6 ויציאה נקראת גם מתן שם לשקע. אם לא מבצעים את bind השקע ישירות, מחברים אותו (udp connect) או משתמשים בו בפקודה udp send כדי לחבר אותו ליציאה זמנית.

פקודה אחת (connect)

אפשר להשתמש בפקודה udp connect כדי לחבר את השקע לדוגמה לכתובת שקע להשוואה. לאחר מכן אפשר להריץ פקודת udp send כדי לשלוח הודעה לאפליקציה להשוואה. אם השקע עדיין לא כבול, הנפקת הפקודה udp connect תחייב גם את השקע.

פקודה אחת (send)

פקודת udp send שולחת הודעה באמצעות השקע לדוגמה ליעד שאפשר לציין בו את כתובת ה-IP ואת יציאת ה-UDP באמצעות משתני הפקודה. אם כתובת ה-IP והיציאה לא צוינו בפקודה udp send, ההודעה תישלח באמצעות השקע לדוגמה ליעד שצוין בפקודה udp connect. כשמנפיקים את הפקודה udp send, השקע מחובר ליציאה זמנית אם הוא עדיין לא קושר.

פקודה אחת (close)

מומלץ להשתמש בפקודה udp close כדי לסגור את השקע כשאין בו צורך יותר.

פקודה אחת (linksecurity)

אפשר להשתמש בפקודה udp linksecurity כדי להפעיל או להשבית אבטחת שכבת קישור לנתונים עבור הודעות.

שליחת הודעה בין שני צמתים

  1. בצומת 1, פותחים את שקע ה-UDP.

    udp open
    Done
    
  2. בצומת 1, מחברים את השקע.

    udp bind :: 1234
    Done
    

    השימוש ב-:: מציין שה-bind צריך להשתמש בכתובת IPv6 שלא צוינה, ולכן מחסנית UDP/IPv6 תקצה את כתובת ה-IPv6 המקשרת. לאפשרויות המלאות עם udp bind, כמו קישור לממשק רשת, עיינו ב-udp bind.

1 בצומת 2, פותחים את שקע ה-UDP.

udp open
   Done
   

  1. בצומת 2, שולחים הודעה פשוטה לצומת 1.

    udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
    Done
    

    ההנחה של הפקודה הזו היא שצומת 2 כבר גילה את הכתובת של צומת 1. בנוסף, בדוגמה הזו, האדמין של צומת 2 בחר לא לקשר את השקע. הסיבה לכך היא שהאדמין של צומת 2 רוצה לשלוח הודעה לצומת 1 בלי לדעת אילו מכתובות ה-IP ומהיציאות שלו ישמשו כמקור של צומת 2. בתרחיש הזה, השקע בוחר כתובת IP ויציאה באופן אקראי.

    האפשרויות המלאות עם udp send מפורטות במאמר שליחת udp.

  2. צומת 1 מאשר את קבלת ההודעה מצומת 2:

    5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
    

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

הדוגמה הזו דומה לדוגמה הקודמת, אבל ממחישה חלק מהגמישות שיש לכם בשימוש בשקעי UDP. בשיטה הזו, קודם כול מחברים את השקע לכתובת של השקע להשוואה, ואז לא צריך לציין את כתובת ה-IP ואת היציאה בכל פעם שמבצעים udp send.

  1. בצומת 1, פותחים את שקע ה-UDP.

    udp open
    Done
    
  2. בצומת 1, מחברים את השקע.

    udp bind :: 1234
    Done
    
  3. בצומת 2, פותחים את שקע ה-UDP.

    udp open
    Done
    
  4. בצומת 2, משתמשים בפקודה udp connect כדי לפתוח את התקשורת לצומת 1.

    udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
    Done
    

    האפשרויות המלאות עם udp connect זמינות במאמר udp connect.

  5. בצומת 2, משתמשים בפקודה udp send כדי לשלוח הודעה לצומת 1, אבל לא מציינים את ip ואת port בתחביר הפקודה udp send.

    udp send hello
    Done
    

    אם לא מציינים ip ו-port, הפקודה udp send תשתמש ב-ip וב-port שצוינו בפקודה udp connect.