Mövzumuza keçməzdən öncə, gəlin bu sözü hissələrə ayırıb ilk öncə mənasını başa düşək.
Necə deyərlər, ilk öncə sökək, sonra yığmağa başlayaq və beləcə dərin izahımıza keçək.
Hyper Text (Hiper Mətn)
HTTP sözündəki "Text" (mətn) sözünün mənasını hamımız bilirik. Amma niyə "Hyper Text" olaraq yazılıb? Niyə sadəcə "Text Transfer Protocol" olaraq yazılmayıb?
Gəlin ilk öncə bu "Hyper" (Hiper) sözünün dərinliyinə enək ki, kimsə sizdən bu birləşmənin tam anlamını soruşsa, izahlı şəkildə cavab verə biləsiniz.
Hazırsınızsa, başlayaq!
"Hyper" (Hiper) sözünün mənası "Hüdudların xaricində" deməkdir. Yunanca "yuxarıda", "kənarda" və ya "hüdudları aşan" mənasını verir.
İnformasiya texnologiyalarında isə bu, bir növ (hiper-keçid vasitəsilə) sıçramaq anlamını daşıyır.
Yəni "Hyper Text" dedikdə, sadəcə sətir-sətir oxunan statik yazıdan deyil, içindəki "gizli qapılar" (linklər) vasitəsilə bizi anında başqa məlumatlara sıçradan, dinamik və çoxşaxəli bir yazı sistemindən bəhs olunur. Yəni, sadəcə bir mətn deyil bu. Əgər "Text" olaraq yazılsaydı, bu məntiqlə uyğun gəlməyəcəkdi.
Loru dildə desək; Təsəvvür edin ki, əlinizdə bir qəzet var. Qəzetdə bir xəbər oxuyursunuz və orada "Bakı" sözü keçir. Siz o "Bakı" sözünün üstünə nə qədər barmağınızla bassanız da, heç nə baş verməyəcək. Çünki o, sadəcə "Text" dir (Mətndir), hüdudları o kağızın kənarı ilə bitir.
Baxın, "Hyper" (Hiper) elə budur . Sizi olduğunuz səhifənin hüdudlarından kənara çıxaran, başqa yerlərə "sıçradan" sehrli bir gücdür. Əgər sadəcə "Text" (Mətn) olaraq yazılsaydı, bu, qanadları olmayan quş və ya təkərləri olmayan avtomobil kimi bir şey olardı. Yəni statik deyil, hərəkətsiz deyil, dinamik, hərəkətli bir məna qazandırır bu söz.
Baxın "Hyper" (Hiper) mətnə qanad taxan, təkər əlavə edən və ağlınıza gələ biləcək yüzlərlə buna bənzər misal çəkə bilərəm ki artıq burda o fantaziyasını işlətmək sizə düşür.
Əsas olan budur ki sizə hər bir detal aydın olsun ki sonda biz bütün bu sözlərin nə ifadə etdiyini rahatlıqla başa düşək.
Artıq aydın oldumu niyə məhz "Hyper Text" olaraq yazılıb?
Aydın oldusa keçək "Transfer" sözünə.
Gündəlik həyatımızda "Transfer" sözü ilə tez-tez qarşılaşırıq. Məsələn, hərdən eşidirik ki, filan futbol komandasındakı oyunçu başqa komandaya transfer olundu, yəni ötürüldü, daşındı.
"Transfer" dedikdə tam olaraq başa düşəcəyimiz məna bir şeyin bir yerdən başqa yerə ötürülməsi, daşınmasıdır düzdürmü?
İlk öncə ağlımıza "loqistika" və ya "karqo" gəlir bu sözü eşidən zaman.
Bir şeylər bir yerdən başqa bir yerə ötürülür. İndi gəlin bu ötürülmənin necə baş verdiyinə baxaq texnologiyada.
Niyə bütün bunları bu şəkildə izah edirəm? Çünki mövzu yekunlaşanda bütün bu məlumatları zehninizdə ayrı-ayrı pazl (puzzle) parçaları kimi birləşdirib tam mənzərəni başa düşməyinizi istəyirəm. Mövzudan çox uzaqlaşmaq istəmirəm, lakin məsələn, mənim bir ingilis dili müəlliməm var idi. Dərslərində hər zaman yaddaş texnikasından (mnemonika) istifadə edirdi.
Bu xüsusiyyətini çox sevirdim, lakin sevmədiyim başqa bir xüsusiyyəti də var idi. Sevdiyim yanı bu idi ki: məsələn, "eat" (yemək) sözünün mənasının yadımızda qalması üçün "eat" deyəndə bizə mətbəxdəki soyuducunu göstərib izah edirdi. Biz "eat" nədir deyə düşünəndə beynimizdə dərhal soyuducu ilə bir əlaqə qururduq.
Sanki öyrəndiyimiz bütün yeməklə bağlı olan yeni sözlər o soyuducunun içərisində idi və zehnimizdə o soyuducunun qapısını açan kimi bu əlaqə vasitəsilə sözləri xatırlayacaqdıq. Sonra "meat" (ət) sözünü izah edir və beləcə bir qruplaşdırma yaradırdı. Sevmədiyim yanı isə o idi ki, uşaqların hamısına eyni texnika ilə öyrədirdi.
Məsələn, mən bu yanaşmanı sevirdim, bu şəkildə rahat öyrənirdim. Lakin çətinlik çəkən digər uşaqlar üçün fərqli bir öyrətmə üsulu, məsələni yenidən və dərindən analiz edib fərqli yolla izah etmək kimi bir yanaşması yox idi.
"Başa düşmədiyini 100 dəfə soruş, 100 dəfə izah edəcəm" desə də, 100 dəfə eyni şəkildə başa salırdı hər kəsə və bu, sanki eyni musiqini geriyə çevirib başdan dinləmək kimi idi. Nəticədə kimsə anlamayanda "bu uşağın dərrakəsi yoxdur, qrupdan geri qalır" deyilib uzaqlaşdırılırdı.
İndi bütün bu məqaləni yazarkən mənim əsas istəyim budur ki, mövzunu yalnız məlumatı olan insanların başa düşəcəyi dildə deyil, heç məlumatı olmayanları da nəzərə alaraq o cür yaddaş texnikaları ilə və hər kəsə çatan fərqli yanaşmalarla izah edim ki hər kəs çox rahat şəkildə başa düşsün.
İndi isə qaldığımız yerdən yəni "Transfer" sözündən davam edək. Gəlin loru dildə ilk öncə izahımıza keçək, sonra isə texnoloji dildə bütün detallarına enək.
Təsəvvür edin ki restorandasınız və menyuya baxıb bir pizza sifariş verirsiniz. Aşpaz mətbəxdə (serverdə) o yeməyi hazırlayır və ofisiant vasitəsilə sizin masanıza (brauzerinizə) transfer edir.
Amma hər şey bu qədər bəsit şəkildə davam etmir. Yəni siz sifariş verdiniz aşpaz hazırladı və pizza masanıza gəldi və siz o pizzanı yeməyə başlayırsınız xeyr, görünüşdə, an etibarı ilə bəli bu qaydada davam edir lakin bizə işin texniki yanları lazımdır. Yəni arxa planda o görünməyənlər.
Gəlin biz o fonda baş verənlərə baxaq.
Transfer başlamazdan əvvəl brauzer və server arasında virtual bir "boru" çəkilir. Buna texnologiyada TCP Handshake (əl sıxışma) deyilir. Brauzer serverə "Sənə məlumat göndərə bilərəm?" deyir, server "Bəli" deyir və transfer üçün yol açılır.
İndi sual verə bilərsiniz ki server "Bəli" söyləməsə nə baş verir? Baxın bu sualın cavabı aşağıdaki linkdədir.
Əgər oxumamısınızsa bu linkdən bütün cavabları ala bilərsiniz.
Texnologiyada bu belə baş verir. Biz, sifarişimizi verdiyimiz an Sifariş (Request) gedir, Cavab (Response) gəlir. Daimi olaraq yəni bir sorğu hər zaman olur.
Biz bir şeyləri sifariş verib cavab gözləyirik. Sanki o ofisiant necəki mətbəxə baxıb aşpazdan yeməyin mövcud olub olmadığını, bizə nə qədər zamana kimi hazır olacağını söyləməsi kimidir.
Sifarişi alan ofisiant, sifarişi analiz etməyə başlayır ilk öncə. O artıq sizdən sifarişi götürüb, çünki mətbəxdən aşpaz deyib axı ki "Bəli" mən sifarişi qəbul edə bilərəm . Əgər "yox" desəydi zatən bütün bu dialoqlar başlamazdı.
Server, yəni aşpazımız sifarişi aldığı an (Request Parsing) -Təhlil Sorğusu başladır ilk öncə.
Bütün detalları incələyir və bu zaman iki şey edir:
1- (Database/File System) Aşpazımız yaxınlaşır soyuducunun qapağını açır və baxır: "Görəsən bu pizzanın inqrediyentləri (məlumatlar) varmı?". Əgər axtarılan fayl (məsələn, bir şəkil, video və ya yazı) serverin yaddaşında varsa, onu götürür və keçir ikinci hissəyə yəni, hazırlığa başlayır.
2- (The Response) Yemək hazır olanda aşpaz onu ofisiantın padnosuna qoyur. Amma bir də üstünə kiçik bir qeyd yapışdırır. Texnologiyada biz buna Status Code deyirik:
"Buyurun, hər şey qaydasındadır" (200 OK): Yemək hazırdır, buyur apar.
Aşpaz "200 OK" qeydini yapışdırıb padnosu ofisianta təqdim edir. Amma bir saniyə, burada çox vacib bir məqam var. Əgər sizin sifarişiniz sadəcə bir pizza deyilsə? Təsəvvür edin ki, nəhəng bir ziyafət süfrəsi sifariş vermisiniz. Ofisiant o qədər yeməyi eyni anda, bir padnosda gətirə bilərmi? Əlbəttə, xeyr. Padnos aşar, yeməklər dağılar. Baxın texnologiyada o "Transfer" dediyimiz möcüzə burada yenidən dövrəyə girir:
Ofisiant sizin böyük sifarişinizi kiçik boşqablara (paketlərə) bölür. Hər boşqabın üzərinə "Sifariş 1, hissə 1', "Sifariş 1, hissə 2" deyə etiket vurur və sifarişinizi çatdırmaq üçün yola çıxır.
Əgər hər şey qaydasındadırsa, birinci ssenari işə düşəcək:
1. "Buyurun, hər şey qaydasındadır" (200 OK): Bu, ən çox sevdiyimiz mesajdır. Yemək hazırdır, aşpaz hər şeyi tam istədiyiniz kimi hazırlayıb və ofisiant artıq masamızdadır.
Texniki dildə bu, sorğunuzun uğurla yerinə yetirildiyi və məlumatın sizə ötürüldüyü anlamına gəlir.
Yox, əgər bir şeylər tərs gedərsə, aşağıdaki 2 və ya 3 nömrəli bəndlərdəki kodlar işə düşəcək.
2. "Bağışlayın, menyuda var, amma mətbəxdə tapa bilmirik" (404 Not Found)
Təsəvvür edin ki, ofisiant mətbəxə gedir, amma aşpaz deyir ki: "Biz artıq o şorbanı bişirmirik və ya resepti itirmişik". Ofisiant geri qayıdıb sizə "Təəssüf ki, axtardığınız şey burada yoxdur" deyir. İnternetdə bu, daxil olduğunuz keçidin (linkin) artıq mövcud olmadığı və ya səhv yazıldığı haldır.
3."Mətbəxdə yanğın çıxdı!" (500 Internal Server Error)
Server tərəfdə nəsə ciddi bir texniki problem yarandı.
Bura kimi hər şey aydın oldusa indi isə keçək "Protocol" hissəsinə.
Gəlin indi təsəvvür edək ki bizim əyləşdiyimiz o masaya ofisiant yaxınlaşır lakin, bizim anlamadığımız bir dildə danışır. Misal üçün Çin dilində danışır, siz isə Azərbaycan dilində sifariş verirsiniz və bildiyiniz dil elə Azərbaycan dilidir.
Bu zaman nə baş verəcək? Siz bir şeyləri izah edəcəksiniz, ofisiant isə anlamayacaq və bu sifariş baş tutmayacaq. Baxın elə bu zaman burda "Protocol"-işə düşür. Amma bu o demək deyil ki sadəcə "Protokol" bir dildir xeyr, bu həmdə davranış və ünsiyyət standartıdır.
Hansı dildə danışacağıq? Sifariş hansı ardıcıllıqla veriləcək? Ofisiant yeməyi hansı masaya gətirməlidir? Bunları brauzerimiz anladıqdan sonra və o öncədə qeyd etdiyimiz - Sifariş (Request) gedir, Cavab (Response) -dən sonra belə bir qaydalar toplusu işə düşür.
Baxın, əgər "Transfer" o yeməyin daşınmasıdırsa, "Protokol" o yeməyin necə sifariş edilməsi və necə təqdim edilməsi haqqındakı qəti qaydalar toplusudur.
Protokol haqqında daha geniş məlumat oxumaq üçün aşağıdaki linkə keçid edə bilərsiniz:
İndi isə gəlin bir anlıq təsəvvür edək ki bu "Protokol" yoxdur. Nə baş verəcəkdi? Siz masanın üstünə çıxıb "Mənə pizza gətir!" deyə qışqıra bilərdiniz. Ofisiant isə cavabında mətbəxə daxil olub sizə yeməyi uzaqdan ata bilərdi. Tam bir xaos yaşanardı bəli.
Məhz bu "Protokol" sayəsində dünyanın hər hansı nöqtəsindəki server, sizin cibinizdəki telefonun, kompüterlərin bir sözlə internətə daxil olduğunuz cihazların nə istədiyini saniyələr içində anlayır.
Çünki hər ikisi eyni "Etiket Qaydalarına" mütləq şəkildə tabedir.
Baxın, biz "Hyper Text"i tanıdıq, "Transfer"in (daşınmanın) necə baş verdiyini gördük və "Protokol"un (qaydaların) niyə vacib olduğunu anladıq. İndi bütün bu hissələri birləşdirsək, ortaya belə bir mənzərə çıxacaq:
HTTP, məlumatların müəyyən qaydalar çərçivəsində bir nöqtədən digərinə daşınması sistemidir.
Bayaqdan danışırıq ki, ofisiant yeməyi (Məlumatı) mətbəxdən götürüb masaya gətirir. Yəni biz brauzerimizdən daxil olub serverdən məlumatlar alırıq. Amma gəlin bir anlıq təsəvvür edək: kimsə yolda pizzanızdan bir dilim oğurlayır və ya içinə istəmədiyiniz bir ədviyyat atır. Bu baş verə bilərmi?
Əlbəttə! Amma nə zaman. Baxın ilk öncə "HTTP" yaradılarkən internet belə nəhəng bir yer deyildi.
"HTTP"-nin "HTTPS" olmayan zamanlarından danışacağıq indi. Bunlar eyni anda yaradılmayıb? Xeyr. Bunun üçün başlıqda xüsusi olaraq "S"-i qeyd etmədim və sona saxladım.
Bəs bu "S"-nə bildirir?
"S" (Secure - Təhlükəsiz) Bəli məhz bu "S" təhlükəsizlikdən bəhs edir. Bəs necə oldu ki adamların heç birinin ağlına bu "S"- yəni "HTTPS" gəlmədi? Baxın bütün məsələ elə bu təhlükəsizliyin pozulmasından sonra ortaya çıxdı. Bu necə baş verdi?
Bayaq qeyd etdiyim o "açıq padnos" (HTTP) məsələsi internet böyüdükcə böyük bir problemə çevrildi. Təsəvvür edin ki, siz ofisianta (brauzerə) gizlicə bank kartınızın şifrəsini pıçıldayırsınız.
Mənim şifrəm 12345-dir. Amma o, bunu bütün zalın eşidəcəyi bir səslə mətbəxə qışqıraraq deyir.
Bu şəxsin şifrəsi 12345-dir!
Hər kəs eşitdi, elə deyilmi?
Məhz bu rəzalətin qarşısını almaq üçün köməyimizə "HTTPS" (yəni o sondakı "S" hərfi) çatır.
Bəs texnoloji dildə bu necə baş verir?
Gəlin təsəvvür edək ki, biz yeməyimizi yedik və indi hesabı ödəmək zamanıdır. Biz ofisianta (brauzerə) deyirik ki: hesabı ödəmək istəyirəm. Ofisiant bizim hesabımızı gedir serverdən götürüb masaya gətirir, amma bu zaman bir şeylər baş verir.
İndiki vəziyyəti izah edirəm yəni "HTTPS"-lə sorğu gedib gələn zaman nələr baş verir.
Ofisiant yəni brazuerimiz yeməyi, (məlumatı) açıq gətirmir. Mətbəxdə o yemək xüsusi bir seyfə qoyulur və kilidlənir.
Bu seyfin iki açarı var: biri sizdə, biri serverdə. Yolda kimsə (haker) o seyfi oğurlasa belə, içini aça bilməyəcək. Çünki açar onda yoxdur. Gördüyü tək şey bağlı bir dəmir qutudur.
Brauzerinizdə gördüyünüz o balaca qıfıl işarəsi məhz həmin seyfin "kilidli" olduğunu göstərir.
Buna mütləq diqqət edin: Bəzən sayta girəndə o qıfıl işarəsi qırmızı olur və ya üzərindən xətt çəkilir. Bu o deməkdir ki, ofisiantın gətirdiyi seyf saxtadır və ya kilidi sınıqdır. Yəni o "S" (Təhlükəsizlik) zəmanəti artıq qüvvədə deyil. Belə halda kart məlumatlarınızı daxil etmək, pizzanızın başqası tərəfindən "yeyilməsinə" razı olmaq deməkdir.
Gəlin indi, söz verdiyimiz kimi o pazl parçalarını tam birləşdirək və mənzərəyə bütöv baxaq:
H (Hyper) T (Text) Bizim hər tərəfə "gizli qapılar" açan dinamik yeməyimizdir. (Məlumat)
T (Transfer) Ofisiantın o yeməyi mətbəxdən (serverdən) masamıza (brauzerə) daşımasıdır.
P (Protocol) Restorandakı qəti sifariş və davranış qaydalarıdır.
S (Secure) Ofisiantın əlindəki o qırılmaz, şifrəli polad seyfdir.
İndi isə sizdən kiçik bir xahişim var. Bu məqaləni oxuyub bitirdikdən dərhal sonra, hazırda daxil olduğunuz saytın yuxarı hissəsinə ünvan sətrinə baxın. Oradakı o kiçik bağlı qıfıl işarəsini görürsünüzmü? O, kiçik görsənən lakin çox böyük işləri görən bağlı qıfıl əslində sizin internetdə sizi "siğortalayan" ən vacib işarədir.
HTTPS və onun altındakı o nəhəng mexanizm məhz sizin məlumatlarınızı qorumaq üçün saniyənin mində biri sürətində bu əməliyyatları yerinə yetirir.
Növbəti dəfə internetdən hər hansı bir məhsul sifariş verəndə, o polad seyfin bağlı olduğuna mütləq diqqət edin!
Növbəti məqalələrdə görüşənədək!
