בדיקת הפונקציונליות של 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, משתמשים בפקודה udp open כדי לפתוח את השקע. לאחר מכן תהיה לכם אפשרות לקשר את השקע לכתובת IP וליציאה ספציפיות.

הפקודה bind

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

הפקודה connect

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

הפקודה send

פקודת udp send שולחת הודעה ליעד באמצעות ה-socket לדוגמה שאת כתובת ה-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.

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 send

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

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

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

הדוגמה הזו דומה לדוגמה הקודמת, אבל היא ממחישה חלק מהגמישות. שמשתמשים בשקעי 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.