💻Protokol (Kompüter)
Protokol nədir
Protokol, gözlənilən davranışları müəyyən edən bir kod formatında olan davranış qaydalarının bir məcmusudur. Yəni kompüter sistemlərinin, proqramlarının necə davranmalı olduğu qaydalar dəstidir. Praktiki olaraq baxsaq, bizə daha aydın olacaq.
HTTP protocol
Hyper Text Transfer Protocol - internet üzərindən veb səhifələrin və digər resursların (şəkil, video və s.) ötürülməsini təmin edən protokoldur. Veb brauzerlər ilə serverlər arasında ünsiyyəti təmin edərkən istifadə olunur.
Xüsusiyyətləri
Stateless - hər bir request-in müstəqildir. Yəni, hər bir HTTP request-i göndərildikdə, server, əvvəlki request-lərlə bağlı məlumat saxlamır, hər bir requesti-i ayrıca emal edir. Əvvəlki və sonrakı request-lərlə bağlantılı deyil.
Application-level - OSI modelinin, ən üst qatı sayılan application qatında çalışır. Bu qat, birbaşa istifadəçi tətbiqləri ilə ünsiyyətdədir. Yəni Application qatı, istifadəçilərin kompüter tətbiqləri ilə (veb brauzer, e-poçt client və s.) birbaşa çalışmağını təmin edir.
Request/response - Client-in sorğu göndərdiyi və serverin bu sorğuya cavab verdiyi bu çalışma modelinə sahibdir.
Extensible Semantics - Genişləndirilə bilən bir protokoldur. Yəni, yeni özəlliklər və əmrlər əlavə edilə bilər. Bu, HTTP-nin gələcəkdə də fərqli ehtiyaclara cavab verməsini təmin edir.
Self-descriptive Messages - HTTP request/response-ları daşıdıqlar data haqqında məlumat ehtiva edir. Məsələn, bir HTTP response-unda bir veb səhifənin HTML məzmunu varsa, response-un header-ində bu məzmunun nə olduğunu açıqlayan məlumatlar yer alır. Beləliklə, həm client, həm də server hansı növ data ilə çalışdığını bilir.
Flexible Interaction - Veb səhifələr, fayllar, API kimi bir çox fərqli istifadə sahəsinə xidmət edir.
Nümunə
Brauzerin developer alətlərində, ya da Burp Suite və ya Fiddler kimi proqram təminatlarında HTTP request-i görmüş ola bilərsiniz. Məsələn, brauzerdə x.com saytına getmək istədikdə, sorğunu Burp Suite ilə tutsaq, aşağıdakı kimi request və response ala bilərik.

Burada ki, request, brauzer tərəfindən (HTTP client) veb serverə göndərilən sorğudur. Veb server, bu mesajı anlayır və response bölməsində gördüyünüz cavabı qaytarır. Bu, iki tərəfin bir-biri ilə ünsiyyət qurması üçün aralarında yaratdığı "formal razılaşma"dır.
Mesaj formatı
HTTP/1.1 mesajının tərkibi: start-line, ardınca CRLF və "Internet Message Format"a oxşar formatda oktet sequence-i, sıfır və ya daha çox header xanası üçün sətirlər və header bölməsinin sonunu bildirən boş bir sətir və ixtiyari bir mesaj gövdəsi.
HTTP-message = start-line CRLF
*( field-line CRLF )
CRLF
[ message-body ]
Bir mesaj, client-dən serverə göndərilən bir request, ya da serverdən client-ə göndərilən bir response ola bilər. "Start-line"da iki mesaj növü ola bilər: request-lər üçün request-line və ya response-lar üçün status-line.
start-line = request-line / status-line
Teorik olaraq, client-lər request ala, server isə response ala bilər. Ancaq bu, fərqli "start-line"a görə ayrılır. Praktiki olaraq, serverlərə request-ləri gözləmə, client-lərə isə response-ları gözləmə tətbiq edilir.
HTTP, MIME-yə (Multipurpose Internet Mail Extensions - Çoxməqsədli İnternet Poçt Uzantıları) bənzər bəzi protokol elementlərini istifadə edir.
Request-line
Requet-line, metod tokeni ilə başlayır, ardınca SP (single space - tək boşluq), sonra request-target, SP və sonda protokol versiyası ilə bitir.
request-line = method SP request-target SP HTTP-version

Şəkildən göründüyü kimi sorğumuzda GET metoddur, "/" isə sorğunu əsas domenə göndərdiyimiz üçün yazılıb. Sonda isə HTTP/2 versiyasını istifadə etdiyini görürük.
Burada metod, hədəf resursda həyata keçiriləcək request-i bildirir. Request metodu böyük-kiçik hərfə qarşı həssasdır. Request-target isə request-in tətbiq ediləcəyi hədəf resursu göstərir.
Status-line
Status-line, response mesajının ilk sətri, protokol versiyası, SP, status kodu, SP və status kodunu açıqlayan sözdən ibarətdir.
status-line = HTTP-version SP status-code SP [ reason-phrase ]

Şəkildən göründüyü kimi ilk olaraq, protokol versiyası, yəni HTTP/2 yazılıb. Boşluqdan sonra "200" status kodu, boşluq, ardınca kodun status koduna uyğun "OK" ifadəsi yazılıb.
Last updated