יום שבת, אוגוסט 01, 2015

MMS

עידו כתב פוסט והיו שם מספר שאלות שאני חושב שהם ראויות לפוסט שלם, נתחיל מהתחלה איך בכלל מדברים עם הודעות מולטימדיה (EMS ו MMS).

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

  • קיים "ענן" של שירותים שנקרא MMSE (סביבת ה MMS)
  • קיימת רשת תקשורת IP בתוך ספק הסלולאר, ובתוכה קיים רכיב ( SGSN ) שדרכו משתמשי קצה יתקשרו.
  • אדם מחזיק במכשיר קצה (מודם/ מכשיר סלולאר) שרוצה לקבל או לשלוח הודעות מולטימדיה (MMS UA) 
  • קיים שירות שמספק את תוכן ההודעות עצמן.
  • קיים רכיב מקשר שהוא ה MMS relay/server (יכול להיות שרת בודד או מחולק)

ה MMS UA יתחבר לMMSE שם ידבר עם רכיב ה MMS Relay, יש הרבה דרכים לתקשר אם "הענן" הפופולריים הם WAP gateway, SIP ו IMAP4/SMTP.

אני משתמש פה במושג MMSE ולא MMSC כי אני מאמין שזה פשוט יותר להבנה , כי  MMSC לא  מוגדר הייטב  כי לפעמים זה רק ה Realy/Server לפעמים זה כולל את השרתים שמספקים את המידע  ( בTS23140 שמגדיר את MMS השם MMSC לא קיים)  .

ברמה הקלאסית ה MMS Relay מדבר עם רכיבים אחרים  בתוך סביבת ה MMSE שיספקו את המידע מול רכיבי האימות-הרשאה-חשבונאות של הרשת, שירותי אימייל (מדובר בתקשורת IP קלאסית עם פרוטקולים כמו IMAP4 ), שירותי המרת מידע ושירותים הקשורים להעברת ההודעה עצמה. הרכיב גם יכול לדבר עם ספקי שירות ברשתות אחרות (בין חברות שונות).

ממה שאני מכיר בדרך כלל מכשיר הקצה יתחבר דרך ה SGSN לכתובת מיוחדת או אפילו ל APN מיוחד בשביל למשוך או לשלוח הודעות.

במכשיר הקצה יוגדרו דרכי הגישה ל MMSc :

רוב הספקים שאני מכיר מספקים גישת HTTP שפתוחה לכל משתמשי הרשת הסלולרית שכוללת לקוחות ארעיים (לקוח O2 שמחורבר ל SGSN של O2 יקבל גישה ל MMSC של O2 אבל לא של BT) ע"ג רשת הנתונים שמספקת חברת התקשורת.

יש ספקים משספקים חיבור SIPי מה שמאפשר ללמשתמש קצה שמתחבר בלקוח SIP כמו linphone יוכל לקבל את הודעות ה MMS כהודעות IM רגילות.

יש ספקים בודדים שמאפשרים גישת HTTP שנגישה לכל (לקוח BT ניגש ל חברת XXX עם אמצעי זיהוי ומקבל תוכן).

שרתי ה MMS Relay בינם לבין עצמם יכולים לדבר ב SMTP (משתמש של BT שולח הודעה ל O2 , ה MMS Relay של BT ו O2 יכולים לדברים ב SMTP בינם לבין עצמם) ובין עצמם לחיצוניים מדברים M4.

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

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

במידה ומדובר על שירות WAP ה MMS UA ידבר WSP מול שירות ה gateway , שירות ה gateway ידבר HTTP מול ה MMS relay. כל אחד מההודעות תהיה בערך כך :

MMS UA send ----MMS Send request     ----> MMSE
MMS UA send <---MMS Send confirmation----  MMSE
MMS UA send                                MMSE
MMS UA send                                MMSE  ---- notification request  ---> MMS UA
MMS UA send                                MMSE  <--- notification response ---  MMS UA
MMS UA send                                MMSE  <---  get request          ---- MMS UA
MMS UA send                                MMSE  ---   retrieve confirmation---> MMS UA
MMS UA send                                MMSE  <--   ACK                   --- MMS UA        
MMS UA send <---MMS Delivry result   ----  MMSE


התעבורה בין MMS UA אחד ל MMSE מבוצעת באמצעות שימוש בMM1,
בתוך רשת ה MMSE יהיו מספר צורות שיחה. ובין שרת RELAY אחד לחיצוני ידברו MM4. אם נרכיב את הדוגמה הקודמת נקבל:


MMS UA @BT                MMS relay @BT            MMS relay @O2               MMS UA @ O2
   |                         |                          |                           |
   |--> MM1 submit.req -->   |                          |                           |
   |<--MM1 sumbit.res        |                          |                           |
   |                         | --MM4 forward.req ---->  |                           |
   |                         | <--MM4 forward.res ----  |                           |
   |                         |                          | -MM1 notification.req->   |
   |                         |                          | <-MM1 notification.res    |
   |                         |                          |                           |
   |                         |                          | <-MM1 retrieve.req-       |
   |                         |                          | --MM1 retrieve.res->      |
   |                         |                          | <--MM1 ACK     .req-      |
   |                         | <-MM4 Delivry report.req |                           |
   |                         | MM4 Delivry report.res-> |                           |
   |                         |                          |                           |
   |<-MM1 Delivry report.req |                          |                           |


דוגמה לשימוש כזה אפשר לראות כאן.


במקרה SIPי המצב טיפה שונה :

יש לא רק MMS UA אלא גם SIP UA ומה שיקרה שיהיה זיהוי מול השרת שמספק SIP ושרת זה ידבר מול ה MMS relay (לדוגמה ע"י register).

בקשות ה MM1 submit מומרות ל SIP MESSAGE.

התוכן יהיה multipart mime כאשר חלק ראשון יהיה בעל Content type מסוג application/vnd.wap.mms-message ומכיל את ה PDU של MM1 submit.

החלק השני יהיה תוכן הבקשה עצמה או קישור לתוכן.

בתלות בספק ראיתי כי יש או העלאה http put של תוכן ההודעה בספק השירות ואז שליחת קישור לתוכן בתוך ההודעות או העברה של התוכן מקודד.

MMS SIP UA                                    MMS HSP                             MMS Relay

  |                                            |                                 |
  | -----REGISTER --->                         |                                 |
  | <----200      ---                          |                                 |
  |                                            |  -- Register MMS SIP UA --->    |
  |                                            |  <--    200                     |
  |                                            |                                 |
  | SIP message (submit.req)--->               |  -- SIP MESSAGE ---------->     |
  |                                            |  <-- SIP MESSAGE response -     |  
  | <--- SIP message response (submit.res)     |                                 |
  |                                            |                                 |

  

לקריאה נוספת :
 rfc3428
rfc3261 
MMS stage 3 sip


במקרה שמדובר על חיבור ל IMAP4 / SMTP -
מרבית הספקים שאני מכיר מספקים SMTP שקוף למשתמש, כלומר משתמש שולח הודעת MMS לכתובת מייל וזה עובד ישירות ללא שום הגדרה מיוחדת.

הצד המקבל יקבל הודעה מ msisdn@mms.bt כאשר ה msisdn הוא msisdn של השולח.

ממה שראיתי המימוש מורכב מ שרת postfix שמקבל מידע משרת שמבצע המרת תעבורת MM1 + store להודעת SMTP. במקרה הזה הודעת הקבלה לא מתקבלת , אבל בגלל שמדובר על הודעה שהיא אופציונלית אין שום בעייה בנושא.
 
ספקי שירות (VAS) לעומת זאת ישתמשו ב MM7 (שזה בסה"כ SOAP ) ויוכלו לשלוח מסות של הודעות.

רשתות סלולאר מכילות רכיב חשוב נוסף שהוא ה SMSC .

בגלל שיש לנו את SMPP (פרוטקול תקשורת שמאפשר לנו לתקשר בין SMSC שונים) הדבר מאפשר לנו לחבר בין שני שרתים שונים ע"ג IP (הרבה יותר נוח משאר SS7), רכיב ה SMSC הוא בדר"כ שונה מ MMSC אבל ניתן לבנות מערכת שתבצע קישור בין SMSC ל MMSC (רואים את זה בדר"כ בשירותי תוכן בהם שולחים MMS ומקבלים תשובה ב SMS).

אחד ההבדלים העיקרים בין עבודת SMSC ל MMSC שאני רואה (פרט לעובדה של טיפול ב SMS וטיפול ב MMS) הוא התגובה - ב SMSC יש דרישה לאבטחת שליחת מידע ואימות השליחה בעוד ב MMSC זה אופציונאלי.

עכשיו נחזור לשאלה המקורית,

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

בכל אחד מצורות החיבור יש מנגנוני זיהוי ב WAP מדובר ע"י מערכות רשת הסלולאר ב SIP ו IMAP מדובר על אחזקה כמו כל שרת SIP ו IMAP אחר.

ממה ששאני מכיר יש מערכות שיודעות לזהות הודעות כפולות. אם אני שולח 20 הודעות אני אראה 20 הודעות negoations אבל השרת עצמו יכול העתק אחד בלבד של התוכן.

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

אין תגובות:

הוסף רשומת תגובה