יום שלישי, 13 ביוני 2017

תקשורת סלולארית -

תקשורת סלולרית, גלישה סלולרית - ובעיקר, מה שבינהם

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

אז נתחיל, תקשורת סלולרית מהי?

לפני שניגע בכלל בגלישה סלולרית נתחיל מהבסיס, תקשורת סלולרית, כיצד זה מתבצע?
טלפון סלולרי הוא בעצם מכשיר רדיו דו כיווני (המסוגל לקלוט ולשדר בו זמנית), ניתן להפעילו באזורים נרחבים, בטכנולוגיה המתבססת על פרישת תחנות בסיס סלולריות (אנטנות). המילה סלולרי מגיע מהמילה האנגלית cell (תא), המשמעות היא שמדינת ישראל מחולקת לתאים, בכל תא יש אנטנה שקולטת את האות של המכשיר ומתקשרת עם המתג ומשם לשאר הרכיבים של המפעילה הסלולרית.
GSM Architecture

עקרונות התקשורת הסלולרית

תהליך התקשורת הסלולרית מתבצע על ידי כמה רכיבים שאותם אנו נתאר בקצרה ונסביר על מה כל אחד אחראי.
הנתיב:
  • השיחה יוצאת מה UE (ראשי תיבות של User Equipment או המכשיר של הלקוח) ודרך תדרי רדיו נקלטת ע”י האנטנה שנמצאת באזור (B.T.S), מי שקובע איזה אנטנה תיהיה מקושרת לאיזה מכשיר זה ה B.S.C.
  • ה M.S.C מנהל / מטפל בשיחה ובודק את המידע מול ה VLR שהינו שרת ששומר חלק מהמידע על הלקוח ובעצם נותן את האישור לבצע את אותה פעולה (לדוג’ שיחה). ה HLR שומר את כל המידע של הלקוח ומספק ל VLR את המידע המנהלי שצריך בשביל “לתת אישורים”. ה HLR מתעדכן במידע ע”י הספקית (בעצם כשהנציג במפעילת הסלולר מתקין לכם שירות, אותו שירות מתעדכן ב HLR). ה HLR הינו שרת ענק שמנהל את התעבורה בין השיחות / SMS / גלישה וכדומה אל הרכיבים השונים (ל SMSC בסמסים, למשיבון, ל VLR בבקשות ואישורים לגישה לרשת, או ל GMSC בשיחות נכנסות וכד’) וקובע גם לאיזה M.S.C + VLR להעביר את השיחה לפי המיקום הגיאוגרפי של מקבל השיחה.
UE (ראשי תיבות: User Equipment) - ציוד המשתמש, זהו המכשיר קצה / מכשיר נייד / מודם וכד’.
B.T.S (או בעברית פשוטה, אנטנה / אתר סלולרי) - האנטנה מאפשרת תקשורת בין ציוד המשתמש (UE) והרשת. הרשת יכולה להיות מכל סוג שהוא (GSM, CDMA, UMTS, WIMAX, LTE, WIFI, WANN וכ’ו).
B.S.C (ראשי תיבות: Base Station Controller) - ה B.S.C הינו מחשב ששולט בקבוצת אנטנות (B.T.S) וקובע לאיזה אנטנה הלקוח יתחבר, (החלטה זאת נקבעת לפי הרבה פרמטרים, כמו: המרחק מהאנטנה, כמות המשתמשים שמחוברים לאותה אנטנה ועוד). בדרך כלל ה B.S.CC נמצא קרוב (גיאוגרפית) לקבוצת האנטנות (B.T.S) אליהם הוא קשור.
M.S.C (ראשי תיבות: Mobile Switching Center) - זהו השירות העיקרי שאחראי על הטיפול בשיחות הקוליות וב SMS (ובין היתר גם על שיחת ועידה, פקס, ועל חיוב בזמן אמת של מה שנקרא בישראל טוקמן). בנוסף, המידע שמגיע ל M.S.C מועבר בצורה מקודדת (מאובטחת) וה M.S.CC מפענח אותו ומעביר את המידע מחדש עדיין באות אנלוגי. סדרי גודל: ה M.S.C תומך (בערך) בכ 100,000 מנויים וכ 5,000 שיחות בו זמנית.
VLR (ראשי תיבות: Visitor Location Register) - ה VLR מכיל חלק מהמידע המנהלי שקיים ב HLR, והכרחי עבור בקרת שיחות ואספקת השירותים שיש למנוי. ה VLR נמצא מבחינה פיזית ביחד עם ה M.S.C (ובגלל זה לא רשום בציור), אך עובד ביחד עם ה HLRR.
ה HLR וה VLR הם תחנות עבודה המכילות מסדי נתונים ענקיים, במילים אחרות שרתים. ה VLR מכיל בין היתר את המידע אודות המיקום הגיאוגרפי של המנוי, במידה והלקוח נמצא בחול והתחבר למפעילה אחרת, ה VLR שאליו הוא יתחבר מוודא שהוא אכן זכאי לקבל שירות ומאפשר לו להוציא / לקבל שיחות. בנוסף הוא שומר את המיקום שלו ויודע לאן לנתב את השיחה כשמתקשרים אליו.
HLR (ראשי תיבות: Home Location Register) - ה HLR הינו מסד הנתונים המרכזי שמכיל את כל הנתונים של כל לקוח המורשה להשתמש ברשת ה GSM (הדגש בכוונה על GSM כי קיימים HLRים שונים לרשת ה GSM ולרשת ה TDMA לדוג’). כל IMSI (מספר הזהות של ה SIM ברשת ה GSMM) יכול להופיע רק ב HLR אחד. הנתונים המוקלטים נשארים ב HLR כל עוד המנוי נשאר אצל המפעילה שלו.
דוגמאות לשירותים הקיימים ב HLR:
  • השירותים השונים ברשת ה GSM אותם המנוי מבקש (הפניות שונות, יכולת לקבל / לשלוח SMS, יכולת לגלוש – DATA / WAP / CSD, מספר משני / דאבל / דו וכד’).
  • המיקום הגיאוגרפי של המנוי (נעזר ב VLR וב SGSN).
  • זהות לאומית (IMSI), מספר ציוד (IMEI).
עוד כמה רכיבים (שמתקשרים עם ה HLR):
  • BC (ראשי תיבות: Billing Centre) – מרכז החיוב, אחראי על תמחור כל מנוי בהתאם לתוכנית המוגדרת, ואחראי גם ליצירת החשבונית.
  • SMSC (ראשי תיבות: Short Message Service Centre) – אחראי על שליחה וקבלה של הודעות טקסט.
  • MMSC (ראשי תיבות: Multimedia Messaging Service Centre) – אחראי על קבלה ושליחה של הודעות מולטימדיה (לדוג’ הודעה ארוכה, אודיו, וידיאו וכד’).
  • VMS (ראשי תיבות: Voicemail System) – אחראי על התא הקולי (הקלטה ואחסון של ההודעות הקוליות).
על מנת להבין את סדרי הגודל: לסלקום (מפעילת הסלולר הגדולה בישראל, בעלת 3.5 מליון משתמשים) ישנם 4 שרתי HLR ו-9 שרתי VLR.

תדרים

כל מפעילה סלולרית רוכשת ממשרד התקשורת תחום תדרים מסוים. בישראל רוב התדרים בשימוש הצבא ולפני ביצוע מכרז של תדר, על הצבא לפנות את התדר, ורק לאחר מכן נערך המכרז ע”י משרד התקשורת.
כל מפעילה עובדת על תחום תדרים בו היא מורשת להשתמש, לרוב בכל תחום תדר משתמשות כמה מפעילות. בנוסף, לפעמים למפעילות יש הסכמים פנימיים בהם הן מאפשרות למנויי החברה המתחרה להתחבר ל B.T.S שלהן וכך לקבל קליטה במקום שלחברה “המקורית” אין בו קליטה (אין B.T.S).
רשימת תחומי התדרים בישראל לפי מפעילות:
GSMUMTS
סלקום1800850 / 2100
אורנג900 / 18002100
פלאפוןאין850 / 2100
גולן טלקוםאין2100
הוט מוביילאין2100

WAP

נתחיל עם טכנולוגיית הגלישה: wap, שהוותיקים יותר מבינינו מכירים. ב-1997 נוקיה, מוטורולה, אריקסון ו phone.com חברו יחדיו על מנת לפתח את ה wap, מתוך אמונה כי תקן אחיד לגלישה באינטרנט נחוץ על מנת להמשיך ולפתח את הגלישה הסלולרית.
ש בעיקר 3 סיבות ללמה פותחה טכנלוגיית ה wap:
  • מהירות העברה - באותם ימים מהירויות ההורדה של אינטרנט סלולרי היו סביב 14Kbps - 20Kbps, ודפי HTML רגילים שהיו מלאים בגרפיקה (CSS) היו כבדים להורדה בקצבים כאלו.
  • גודל ויכולת קריאה - המכשירים הניידים של אותה תקופה היו בעלי מסך קטן, ודפי האינטרנט היו מוצגים בגודל מינמלי של 640x480 פיקסלים, דבר שלא איפשר קריאה וניווט נוח בדף (דפי ה wap מותאמים לרוב לרזולוציית 150x150 פיקסלים).
  • ניווט - במחשב אנו משתמשים בעכבר על מנת לנווט בדף האינטרנט בעוד במכשיר הסלולרי אין לנו עכבר ולכן הדף צריך להיות מותאם למכשיר סלולרי על מנת לאפשר ניווט תקין במקשי המכשיר.
ה wap תוכנן לעבוד על גלישת CSD וגלישת GPRS (שהייתה אז בחיתולים). ובניגוד לאינטרנט הרגיל שמבוסס על HTML, ה wap מבוסס על WML (ראשי תיבות של Wireless Markup Language), ה wap מאפשר שימוש גם בפרוטוקולי אינטרנט רגילים כמו XMLIP, ו UDP.
כשאנו מנסים לגלוש ב wap, מתבצעת סדרת הפעולות הבאות:
  1. אנו פותחים את הדפדפן הסלולרי.
  2. המכשיר שולח אות רדיו ומחפש שירות.
  3. מתבצע חיבור בין המפעילה למכשיר.
  4. אנו רושמים את כתובת האתר ושולחים בקשה לשרת שער (שרת wap).
  5. השרת שער מבקש את המידע משרת ה HTTP.
  6. השרת שער מעביר את המידע מ HTTP ל WML.
  7. המידע (ב WML) נשלח אל המכשיר.
  8. המשתמש רואה את האתר (בגרסתו הwapית) בדפדפן.
בשביל ליצור דף wap, אתר בדרך כלל יוצר גרסה מנימליסטית עם גרפיקה נמוכה או אפילו בעלת טקסט בלבד. הדף נשלח לשרת שער (WAP Gateway) הכולל מקודד wap, קומפיילר (לסקריפטים), ופרוטוקולים שונים ההופכים את המידע מ HTTP ל WML. לאחר מכן השער שולח את המידע (כשהוא כבר בצורתו הwapית) למשתמש.
Wap Stack
אז איך בנויה מחסנית הפרוטוקולים בשער ה wap?
  • WAE (ראשי תיבות: Wireless Application Environment) - ה WAE מחזיק בכלים שמפתחי האתרים משתמשים. אלה כוללים WML ו WMLScript (שהיא שפת סקריפט הפועלת בשיתוף עם WMLL ומתפקדת כמו JavaScript).
  • WSP (ראשי תיבות: Wireless Session Protocol) - ה WSP קובע אם השיחה בין המכשיר לשרת  צריכה להיות שיחה דו כיוונית (הכוונה אם המכשיר ישלח מנות בחזרה לשרת) או שיחה חד צדדית (אם המכשיר אך ורק יקבל מנות מהשרת). ה WSP שולח את המנה לשכבת ה WTP במידה ומדובר על שיחה חד צדדית, ול WDP במידה ומדובר על שיחה דו כיוונית (שיחות דו כיוונית נפוצות בעיקר כשאר מדובר על סטרימינג וכד’).
  • WTP (ראשי תיבות: Wireless Transaction Protocol) - ה WTP משמש כשוטר תנועה, הוא שומר על  המידע זורם בצורה לוגית וחלקה וקובע כיצד לסווג כל בקשה (אמין דו כיווני, אמין בכיוון אחד ולא אמין בכיוון אחד). שכבות ה WSP וה WTP משלבות גם את פרוטוקול ה HTTP הפופולרי - TCP/IP.
  • WTLS (ראשי תיבות: Wireless Transport Layer Security) - ה WTLS מספקת תכונות זהות רבות משכבת התעבורה TLS (שבפרוטוקול TCP/IP). ה WTLSS בודק את שלמות הנתונים, מספק הצפנה ומבצע אימות ללקוח ולשרת.
  • WDP (ראשי תיבות: Wireless Datagram Protocol) - ה WDP עובד בשיתוף עם שכבת המפעיל (Network carriers). ה WDP הפוך את ההתאמה ל WAPP לקלה יחסית בגלל שכל מה שצריך לשנות הוא את המידע הנמצא ברמה הזאת.
  • Network Carriers - פה מדובר על המפעילה של הרשת, יכול להיות מצויין פה כל טכנולוגיה הקיימת (כל עוד המידע מסופק ברמת WDP).

DATA

הטכנולוגיה השנייה עליה נדבר היא ה Data, שהינה הגלישה העקרית היום. סוג הגלישה הנ”ל מחולק לכמה סעיפים ונדבר על כל אחד מהם בנפרד.
נקודת גישה - APN
APN Structure
ראשי תיבות של Access Point Name. נקודת הגישה זהו קובץ הגדרות שנועד לזהות ולאמת את המשתמש. כאשר טלפון נייד מגדיר חיבור נתונים (במונחים טכניים הפעולה נקראת להקים קישור PDP), ה APN משמש את שרת ה GGSN כדי לקבוע ולספק את כתובת ה IP.
לפי נקודת הגישה המפעילה יודעת איזה סוג חיבור יש ליצור (WAP, MMS וכד’), איזה IP להקצות (הקצאת כתובת ה IP מתבצעת פיזית ב GGSN שבעצם משמש כשרת NAT של המפעילה), באיזה שיטת אבטחה יש להשתמש, וכד’.
בנוסף אפשר לשים לב ל-2 הגדרות קבועות אצלנו, והן:
  • MCC (ראשי תיבות: Mobile Country Code) - קוד המדינה, המספר של ישראל הוא 425 (לרשימה של כל הארצות לחץ כאן).
  • MNC (ראשי תיבות: Mobile Network Code) - קוד המפעיל, אורנג’: 01, סלקום: 02, פלאפון: 03, הוט מובייל: 07, גולן טלקום: 08.
פרוטוקול נתוני מנות - PDP
ראשי תיבות של Packet Data Protocol. הפרוטוקול מאפשר למכשיר הסלולרי והרשת לתקשר אחד עם השני. קשר PDP נמשך רק למשך חיבור מסוים (ניתן לחשוב על זה כ Data session).
פרוטוקול PDP כולל:
  1. נקודת גישה.
  2. שם משתמש.
  3. סיסמה.
יש לציין כי רק בהנחה שהבקשה נכונה הרשת מספקת כתובת IP לבקשת ה PDP (הבחירה איזה IP להקצות מתבצעת ע”י ה GGSN). המכשיר יכול להפעיל כמה PDP בו זמנית. כתובת ה IP מנוהלת באופן דימני, ז”א שברגע שהחיבור הסתיים ונתחיל אחד חדש (נשלח בקשה חדשה) נקבל כתובת IP אחרת.

הנתיב בו מנה עוברת

הנתיב בו המנה עוברת הוא מה B.T.S (אנטנה) -> HLR -> שרת SGSN -> שרת פלקסי -> שרת GGSN -> לרשת של חברה אחרת.
SGSN
ראשי תיבות של Serving GPRS Support Node. לרוב ישנם כמה שרתי SGSN כשכל אחד מהם אחראי על אזור גיאוגרפי מסויים. ה SGSN מעביר את המנות מ / אל המכשיר (שומר בתוכו מידע על המיקום לפי ה VLR וה B.T.S על מנת לדעת לאן להעביר את המנות המגיעות).
בנוסף ה SGSN שומר בתוכו את מספר ה IMSI של המנוי ודואג לתקשר עם מערכת הבילינג על מנת לבצע חיוב, ואף מבצע אימות של ה APN מול שרת הפלקסי, במידה והשאילתה (PDP) נכונה הבקשה עוברת לשרת ה GGSN.
שרת פלקסי
בשרת הפלקסי קיימים כל כתובות ה APN שיש בחברה. בדיקות אימות מתבצעות מולו ובמידה והלקוח לא רשם כמו שצריך את ה APN במכשיר, שרת הפלקסי יחסום את השאילתה והלקוח יקבל הודעת שגיאה.
GGSN
ראשי תיבות של Gateway GPRS Support Node. ה GGSN מנהל את בריכת הכתובות, על ידי הקצאת כתובות IP אמיתיות כדי לאפשר לשאילתה להמשיך לאינטרנט.
בעת קבלה של נתונים ה GGSN קודם כל בודק האם המשתמש פעיל, במידה וכן הוא מעביר את הנתונים ל SGSN (ולאחר מכן למכשיר), במידה והמשתמש אינו פעיל, הוא מבצע מחיקה של הנתונים. ה GGSN דואג לפענח / להצפין את הנתונים הנשלחים / מגיעים (ובנוסף ממיר את הנתונים ל / מ פרוטוקול PDP).
QoS - איכות / מהירות הגלישה
ראשי תיבות של Quality Of Service, המושג שייך למרכיבים שונים בעולם הטלפוניה והמחשבים. אצלנו הוא משתייך כמושג שאחראי על איכות תעבורת המידע (הכוונה לדירוג תעבורת המידע, מהירות העלה / הורדה, לפי דרגות שונות).
יש המון מרכיבים שמשפיעים על איכות השירות כמו עמידות הרשת, זמינות הקובץ שאותו אנו מבקשים וכד’, הנה כמה דוגמאות שיכולות לגרום לעיכוב המנות כשהן בדרך (עוברות מהמקור אל היעד):
  • תפוקה נמוכה - יכולה להיגרם בשל עומס משתנה ממשתמשים אחרים החולקים את אותו משאב רשת, לדוגמה: הרבה משתמשים שמחוברים לאותו אנטנה (B.T.SS) בו זמנית ויוצרים עומס על המשאב. הרבה פעמים ניתן להימנע מהמצב הזה ע”י ניתנת עדיפויות למשתמשים שגולשים פחות על משתמשים שגולשים יותר, או נתינת עדיפות נמוכה יותר למשתמשים שעושים שימוש ב P2P (ראשי תיבות: Peer to Peer).
  • מנות לא עוברות - נתבים עשויים להיכשל בהעברת המנות אם הנתונים שהם מעבירים פגומים (נפגמו אצל השרת או בזמן ההעברה) או שהמנות מגיעות כשה bufferr כבר מלאים. במקרה כזה האפליקציה עשויה לבקש את המידע מחדש ואז אנו מרגישים איטיות בהעברת המידע.
  • שגיאות - לפעמים, במיוחד כשמדובר על רשתות אלחוטיות, המנות נפגמות כתוצאה מרעש והפרעות. במצב כזה ציוד הקצה מזהה כי המנה  פגומה ומבקש אותה מחדש.
  • תורים - מנות מנותבות ע”י נתב שאחראי על ביצוע ההעברת המנה מהמקור אל היעד בדרך הקצרה ביותר לפי עומס וכד’, לפעמים גם אם  אינכם נמצאים באתר עמוס יכול להיות שהדרך היחידה “להגיע” אל האתר עמוסה וכתוצאה מכך המנה מתעקבת בתור עד השליחה לציוד הקצה של המנוי.

סוגי הרשתות

CSD
Packets vs CSD
ראשי תיבות של Circuit Switched Data. או יותר נכון עלי לכתוב CSD ז”ל / אבי הגלישה הסלולרית. הגלישה הסלולרית הזו מתומחרת לפי זמן (בדומה למודמים הישנים, 56KB, מודמים PSTN) ולא לפי נפח כפי שאנו רגילים כיום. הטכנולוגיה הינה הטכנולוגיה הראשונה שאפשרה גלישה “נורמלית” - 9.6KBPS ו 14.4KBPS לתדרים 900 / 1800 בהתאמה.
גלישת CSD דומה מאוד לשיחה קולית ברשת ה GSM, אות רדיו יעודיי מקשר בין המכשיר לתחנת הבסיס (ברגע שהאות מקושר המשתמש גולש - המכשיר שולח ומקבל מידע והמשתמש מתחיל להיות מתומחר לפי זמן החיבור), תחנת הבסיס מקושרת ל transcoder ומשם האות עובר ל MSC. המודם הנמצא ב MSC מעביר את האות מאנלוגי לדיגיטלי.
להלן הצגת ההבדל בין גלישת CSD לגלישת מנות רגילה באיור:
GPRS
ראשי תיבות של General Packet Radio Service. הטכנולוגיה אפשרה בפעם הראשונה לדבר ולגלוש בו זמנית. הקצבים עלו ל 16Kbps - 48Kbps ואפשרו גלישה באתרים בתצוגה רגילה (נקרא גם גלישת DATA), שיחות וידיאו, הורדת קבצים מהדפדפן, אימייל וכד’.
EDGE
ראשי תיבות של Enhanced Data rates for GSM Evolution. עדיין נחשבת לרשת דור 2 (או כמו שאוהבים להגיד בישראל 2.75), הטכנולוגיה מאפשרת גלישה של עד 384Kbps בהתחשב בכך שהיא יכולה להשתמש בעד כ 8 סלוטים בו זמנית.
UMTS
ראשי תיבות: Universal Mobile Telecommunications System. ל UMTS יש כמה תתי גרסאות, בגרסה המתקדמת שלו (+HSPA) ניתן להגיע לעד כ 84Mbps (מהירות הורדה). האבולוציה הבאה של UMTS נקראת UMTS 4G ותאפשר מהירות הורדה של עד 100Mbps והעלה של עד 50Mbps.
טכנולוגיית ה UMTS דרשה מהמפעילות להקים תחנות בסיס חדשות וקניית תדרים חדשים בגלל היותה שונה באופן העבודה מרשת ה GSM עליה דיברנו עד כה. התדרים שהוקצו לרשת החדשה הם 188MHz - 2025MHz בהעלה ו 2110MHz - 2200MHz בהורדה. מה שהפך את התקן לפופולרי היא העבודה שהוא יכול לשתף את רשת ליבה עם רשת הליבה של תקן ה GSM, ובכך יכול להתבצע מעבר שקוף בין הרשתות על פי הצורך.
HSDPA
תקן ממשפחת UMTS (גרסה 5). מאפשר מהירות הורדה של עד 14Mbps.
HSUPA
התקן ממשפחת UMTS (גרסה 6) אך נוגע אך ורק ל’העלת’ מידע (עד מהירות 5.76Mbps).
+HSPA
מכונה גם דור 3.5. תקן מפותח של UMTS (גרסה 7 עם פיתוח שנעשה בגרסה 9), המשיג מהירות הורדה של עד 84Mbps והעלה של עד 22Mbps. התקן משיג את המהירויות הללו בזכות כמה חידושים:
  • טכניקת ריבוי אנטנות המכונה MIMO שבה המכשיר מחובר לכמה אנטנות בו זמנית, ומקבל / שולח מידע על פי הצורך והיכולת של אותה  אנטנה.
  • טכניקת Dual cell, בה המכשיר משתמש בשני ערוצים רדיו במקביל על מנת לשדר/לקבל.
  • אפנון מסדר גבוהה יותר (64QAM).

לסיכום

הגענו לסוף המאמר על תקשורת וגלישה סלולרית. עברנו על מבנה הרשת הסלולרית ורכיביו השונים, הבנו כיצד שיחות / SMSים מגיעות למנוי, כיצד המנוי יודע להעביר את השיחה וכד’. לאחר מכן התמקדנו בנושא הגלישה, תחילה בגלישה הישנה יותר, מסוג wap והבנו למה פותחה וכיצד היא בנויה ופועלת, ולאחר מכן לגלישה העדכנית יותר - Data, גם בה ראינו כמה מושגי מפתח כמו APN ו PDP ולאחר מכן צללנו לנתיב בו המנה עוברת בסוג הגלישה הנל, הכלל הסבר מעמיק על התפקיד של כל רכיב, ואף תיבלנו עם שיחה קצרה על איכות הגלישה (QoS). לבסוף, עברנו בזריזות על טכנולוגיות הגלישה על פי סדר כרונולוגי הכלל הסבר על ההדבל בין גלישת מנות לגלישת CSD, והמגבלות של כל טכנלוגיה.

באדיבות  אתר - https://lifelongstudent.io/stuff/2012/10/07/mobile-communication/

יום שלישי, 3 בינואר 2017

טפסים HTML

טפסים HTML


כללי:
מערכת האינטרנט בנויה לספק מידע וככזאת, היא בנויה כמערכת לקריאה בלבד. לעיתים, יש צורך להפעיל את המערכת גם בכיוון החוזר וזאת לצורך איסוף מידע מהגולש (כתובת דואר אלקטרוני, מס' כרטיס אשראי, השתתפות בסקרים וכו'). הדרך שפותחה לצורך זה היא "הטופס" שהוא כלי ליצירת מערכת אינטראקטיבית וחיבור הדדי בין המשתמש אל האתר. הטופס הוא האמצעי היחיד לאיסוף מידע ונתונים.
פתיחת טופס באתר מאפשרת איסוף נתונים והעברתם אל השרת לצורך ניתוח ועיבוד. לצורך אלה מספק הטופס כלים כשורות לכתיבת טקסט, תיבות סימון, כפתורי "שגר" (Submit) ו"נקה" (Clear) ועוד. כלי הטופס משמשים גם לצורך פעולות פנימיות בדף עצמו כמו למשל, הפעלת הוראות של Javascript השתולות בתוך הדף עצמו.
טכניקת "טופס" ב HTML מאפשרת בניית שלושה סוגי שדות המאפשרים:
 ·          כתיבת טקסט חופשית
 ·          בחירה מתוך רשימה קבועה או נפתחת (נגללת).
 ·          סימון ובחירת בסגנון "כן/לא".
עיבוד המידע מחייב קיום קבצי עיבוד מיוחדים בצד השרת, כאלה שידעו לטפל במידע שהגיע. שעור זה אינו דן בקבצים אלו. בתחילה, עם פיתוח כלי הטופס, היתה התמיכה בו מבוצעת ע"י קובצי CGI שבשרת. כיום, נוטים לעבור לקבצי ASP שהם בעלי יכולות חזקות יותר ותומכות במיגון רב יותר של אפשרויות.

בניית טפסים ב- HTML

(קובצי תרגול: Forms  ו- script)

התג לפתיחה וליצירת טפסים הוא <FORM>. תג מכולה המגדיר את תחילת הטופס ואת סופו. ניתן להכניס אל כל דף כמה וכמה טפסים, המנותקים האחד ממשנהו, ועל כן, יש לפתוח ולסיים כל טופס בנפרד.
כל המידע המוקלד אל תוך שדות הטופס, מאופיין בגופן מסוג ריווח אחיד. גופן זה אינו ניתן לשינוי או עיצוב.
כל תגי הטופס מאופיינים בכמה תכונות. תכונה אחת מופיעה בכולם. תכונת name= מגדירה את שם הטופס ואת שם (כינוי) השדה שבטופס הנתון. כך תוכל תכנת השרת לשייך את השדה הנכון אל הטופס הנכון.
 המידע מהטופס יכול לעבור אל השרת – לתוכנת עיבוד נתונים מיוחדת (קובצי CGI ו- ASP) או אל כתובת דואר אלקטרוני. שתי תכונות מצורפות אל התג, שבאמצעותן מנתבים את המידע אל מקומו הסופי.
            ·          Method היא התכונה המגדירה את השיטה בה מעבירים את המידע. הערך Post מציין העברה בדואר אלקטרוני, ו- Get מציין העברה ישירות אל השרת.
            ·          Action: מגדיר את המסלול אליו נשלח את המידע.
תג טופס המעביר את המידע אל דואר אלקטרוני יראה כך (הכתובת היא דוגמא בלבד ואינה אמיתית):
<Form Name=”Form01” method=”post” action=”Myaddress@isp.net.il ?subject=Submitted from the site" enctype="text/plain”>
            ·          התוספת ?subject= מוסיפה את שורת הנושא הנלוות אל הדואר.
            ·          התכונה enctype=text/plain גורמת לדואר להישלח בקידוד רגיל.
תג טופס המעביר את המידע אל השרת יראה כך:
<Form Name=”Form01” method=”get” action=”/cgi-bin/script”>

תגי הטופס

כל טופס כולל כמה סוגים של שדות המאפשרים איסוף מידע מסוגים שונים. קיימים שלושה תגי טופס שונים המאפשרים שיטת איסוף נתונים שונה. כל אחד מהתגים השונים מתחלק לכמה קבוצות של תת סוג. שלוש התגים הם:
 ·          <Textarea>
 ·          <Select>
 ·          <Input>

Textarea

תג מכולה להגדרה שטח לכתיבת טקסט.
<FORM …>
<textarea name="textarea1" cols=”35” rows=”15”></textarea>
שורת הדוגמא המצוינת, בונה שטח לכתיבה ברוחב 35 עמודות ו- 15 שורות.
תחביר: התג מחייב מתן שם (name=) המאפשר לתכנת השרת לזהות את מקור המידע בטופס. מידות השטח מוגדרות ביחידות של עמודות ושורות טקסט. אין חובה לציין מידות אלו, וקיימת מידה מסוימת הניתנת כברירת מחדל.
ניתן להוסיף לתיבה זו, טקסט שיופיע כברירת מחדל:
<textarea name="textarea 2" rows=”10”>טקסט כברירת מחדל</textarea>

Select

תג לבחירת אפשרות מתוך רשימת גלילה או מתוך רשימה פתוחה.
תיבת בחירה זו בנויה משני תגים, ומתכונות המצורפות לכל אחת בנפרד. Select מאפשרת שלושה סוגי תיבות בחירה.
·         רשימת גלילה:
אפשרות המציגה על המסך תיבה נגללת (Combo Box) המציגה בחלון שם אחד מתוך אפשרויות הבחירה. ניתן לקבוע מראש מה יהיה השם המוצג כברירת המחדל. רשימה זו מאפשרת בחירת שם אחד בלבד מתוך סך כל האפשרויות.
תחביר:
o        שורה פותחת הכוללת את התג Select ותכונה מצורפת (name=) הנותנת לתיבה שם.
o        שורה נפרדת לכל אחת מאפשרויות הבחירה. השורה מתחילה בתג Option אליו מוסיפים את התכונה Value הנותנת ערך לבחירה. ערך זה בצרוף עם שם ה Select, הוא שישלח אל השרת.
o        השם המופיע בתיבה לכל בחירה, נכתב כטקסט רגיל מחוץ לתג. אפשרות בחירה שאינה מלווה בטקסט שם, משאירה את האפשרות לבחירת אופציה ריקה.
o        קביעת ברירת מחדל נעשית ע"י צרוף התכונה Selected לתג.
התיבה שבדוגמא, נוצרת ע"י התחביר הבא:

<SELECT NAME="FRUITS">
<option value="apple">Red Apple
<option value="Peach">Pink Peach
<option value="Pear" selected>Sweet Pear
</select>

בדוגמא זו, נוצרת תיבת גלילה בעלת 3 ערכים. השם הניתן ל Value נשלח אל תכנת השרת, בעוד שהשם המופיע בפועל על המסך, הוא הטקסט הכתוב מחוץ לתג. כך, בעוד שעל המסך, מופיע השם Red Apple, הרי שאל השרת, ישלח הערך apple. ברירת המחדל של תיבה זו, היא: Sweet Pear.
·         תיבה פתוחה:
אפשרות זו מציגה על המסך תיבה פתוחה המכילה רשימת אפשרויות ממנה ניתן לבחור אפשרות אחת בלבד. בניית התיבה מתאפשרת ע"י הוספת התכונה Size ומתן ערך המגדיר את מס' האפשרויות שיופיעו בו זמנית על המסך. אם הרשימה כוללת מס' גדול יותר של אפשרויות בחירה, יופיע פס גלילה אוטומטי בצדה הימני של התיבה. בדוגמא שלהלן, תופיע על המסך תיבה בת 3 שורות אך עם 4 אפשויות. בחירת הערך הריק, לא תשלח מאומה אל השרת, מאחר ולאפשרות שנבחרה (הריקה), אין ערך ל Value.

<SELECT NAME="FRUITS" SIZE=”3”>
<option value="apple">Red Apple
<option value="Peach">Pink Peach
<option value="Pear" selected>Sweet Pear
<option value="Apricot">Nice Apricot
</select>

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

Input

תג ליצירת תיבות סימון, בחירה או שורת טקסט רגילה. תג זה מאפשר מגוון רב של תיבות איסוף אינפורמציה. אל תג זה מתווספת תכונת Type המגדירה את הסוג:
·          Input Type=Text - תיבת טקסט.
·          Input Type=Password - תיבת טקסט המציגה כוכביות במקום הערך שנרשם בפועל.
·          Input Type=Checkbox - תיבת סימון
·          Input Type=Radio - תיבת (עיגול) בחירה מתוך רשימה
·          Input Type=Submit - כפתור שליחת תוכן הטופס אל השרת
·          Input Type=Reset - כפתור ניקוי הטופס והחזרתו למצב ברירת המחדל.
·          Input Type=Button – כפתור ללא הגדרת תפקיד. כפתור זה עובד בשילוב עם סקריפטים השתולים בקובץ. (ניתן להגדיר כפתור זה גם כתג עצמאי ראה <Button>).

תג Input מציג על המסך שורת טקסט.
תחביר:
·         Type: תכונה הכרחית המגדירה את סוג התיבה. ערך תכונה זו עבור תיבת טקסט הוא  Type=Text.
·         Name: מגדיר את שם התיבה לצורך אבחנת השרת בין התיבות השונות
·         Value: הערך המופיע בתיבה. השארת הערך ריק,"" Value=  תציג תיבה ריקה על המסך. ערך או טקסט, יופיע על המסך כברירת מחדל.
·         Size:  גודל התיבה. הגדרת תיבה ללא תכונה זו, תיצור תיבה בגודל של ברירת מחדל.
<input type=”text” name="Text_Line_1" value="">
<input type=”text” name="Text_Line_2" value="Default Text">
·         תיבת סיסמא (Password)
כמוה כתיבת טקסט אלא שהערך הנכתב מופיע על המסך בצורת כוכביות. תיבה זו נוצרת ע"י מתן הערך Type=Password.
·         תיבת סימון (Checkbox)
תיבה לסימון אפשרויות שונות. תיבה זו מאפשרת סימון אפשרות אחת או יותר מתוך הרשימה כולה. מתן שם לתיבה נעשה ע"י הוספת טקסט מחוץ לתג.
תחביר:
·         Type: סוג התיבה הוא Checkbox.
·         Name: כל תיבת סימון מקבלת שם שונה.
·         Value: הערך הנתון לתכונה זו ישלח אל השרת אם התיבה תיבחר. אם לא, לא ישלח דבר בהקשר לתיבה זו.
·         Checked: הוספת התכונה אל התג, יוצרת בחירה ראשונית על המסך (ברירת מחדל).

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

<input type=”checkbox” name=”check1” value="a">Non Checked Box
<input type=”checkbox” name=”check2” value="a" checked>Pre Checked Box
·         תיבת בחירה (Radio)
תיבה לסימון אפשרות אחת בלבד מתוך כמה.
תחביר:
·         Name: כל תיבות הבחירה מקבלות שם זהה. מתן שם זהה מאפשר למערכת להתייחס אל כל תיבות הבחירה כאל מקור אחד, ממנו תיבחר תיבה אחת בלבד.
·         Type: סוג התיבה הוא Radio.
·         Value: לכל תיבה יש לתת ערך שונה. בחירת התיבה תשלח את הערך אל השרת.
·         Checked: הוספת התכונה אל התג, יוצרת בחירה ראשונית על המסך (ברירת מחדל).
<input type=”radio” name=”radio1” value="1">Non Checked radio
<input type=”radio” name=”radio1” value="2" checked>Checked radio
<input type=”radio” name=”radio1” value="3">Non Checked radio
בדוגמא זו מופיעים 3 תיבות רדיו. תיבה בחירה מס' 2 מסומנת כברירת מחדל.
·         לחיצי בקרה (כפתורים)
קיימים ארבעה סוגי לחיצים לבקרת הטופס. אחד, הראשי, לשליחת כל המידע שנאסף בטופס, אחד מחיקת כל המידע מפקדי הטופס, אחד נועד להיות לעזר לתיבת טקסט לצורך שליחת קבצים (כפתור "עיון" או Browse), והאחרון כפתור המיועד לעבודה מחוץ לטופס עצמו.
תחביר:
·         Type - ארבעה סוגים:
1.   Submit - לשליחת המידע אל השרת על פי ההנחיות שבתג <form> שבפתיח הטופס.
2.   File - כפתור מיוחד שליחת קבצים. הפקודה יוצרת כפתור ולידו תיבת טקסט. זהו שילוב המיועד לעיון (Browse) למטרות שליחת קובץ. לחיצה על הכפתור תפתח חלון לעיון בקבצים. בחירת הקובץ, תכניס את שמו אל התיבה. שליחת הטופס כולו תשלח את הקובץ על היעד. זוהי שיטה מקובלת ליצירת כפתור להעלאת קבצים (Upload). הפקודה מחייבת שימוש בתכונת Name עבור תיבת הטקסט.
3.   Reset - עבור לחיץ ניקוי כל תיבות הטופס מבחירה קודמת.
4.   Button - ליצירת כפתור ללא פקודה מיוחדת. כפתור זה מיועד להפעלת סקריפטים של ג'אווה, DHTML וכו'.
·         Value: הטקסט שיופיע על פני הלחיץ.
<input type=”reset” value="נקה">
<input type=”submit” value=שלח>
<input type=”button” value=הפעל>

שילוב כפתור Submit בתוך טופס עצמאי יכול לשמש כקישור אל קובץ אחר במקום שיטת הקישור המסורתית:
<form method=”get” action="examples\marquee.htm" target="_blank">
<input type=”submit” value=קובץ דוגמא>
</form>
דוגמא לשילוב כפתור file:
 <input type=”file” name=”upload”>






ניתן להשתמש ב- Button גם כתג עצמאי, עבור כפתור הפעלה המנותק מהטופס. תחביר התג שונה כמובן מהתחביר בתוך תג input.
תג<Button> יוצר כפתור על המסך, אליו מוסיפים תכונת ארוע (למשל OnClick) להפעלת תכונות או סקריפט.
דוגמא לכפתור הפעלה והתחביר:
<BUTTON ONCLICK="FUNCTION( )" >שם הכפתור</BUTTON>

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