OSI Model nima va u bizga nega kerak?

Tarmoq muhandisligi yoki backend haqida gap ketganda miyamizga birinchi bo'lib keladiga lekin imtihonda yoki interview'da hammamizni qiynaydigan bir tushuncha bor: OSI Model.

Ko'pchilik buni oliygohda imtihon topshirish uchun 7 ta qatlamini (layer) yodlagan-u, lekin amaliyotda nima ekanini his qilmagan bo'lishi mumkin. Keling, bugun bu daxshatli 7 qavatli binoning sahna ortiga o'tamiz va u o'zi bizga nega kerakligini tushunib olamiz.


Tarixga bir nazar

O'tgan asrning 70-80-yillarini tasavvur qiling. Kompyuterlar endi rivojlanyapti. IBM o'zining kompyuterlari bir-biri bilan gaplashishi uchun alohida tarmoq tizimini yaratdi. DEC degan boshqa kompaniya esa butunlay boshqa protokol o'ylab topdi.

Natija nima bo'ldi? IBM kompyuteri DEC kompyuterini tushunmas edi. Xuddi bittasi faqat o'zbekcha, ikkinchisi faqat xitoycha gapiradigan va o'rtada tarjimon yo'q holatga o'xshardi. Agar siz tarmoq qurmoqchi bo'lsangiz, hamma qurilmalarni faqat bitta brenddan sotib olishga majbur edingiz. Monopoliya va tartibsizlik!

Mana shu muammoni yechish uchun 1984-yilda ISO (International Organization for Standardization) tashkiloti hamma amal qilishi shart bo'lgan universal standartni OSI (Open Systems Interconnection) modelini e'lon qildi.


OSI Model o'zi nima va u nega kerak?

OSI Model bu kompyuterlar tarmoq orqali qanday ma'lumot almashishini tushuntiruvchi konseptual arxitektura (qo'llanma). U real hayotda ishlaydigan kod yoki dastur emas, u shunchaki qoidalar to'plamidir.

Uning asosiy maqsadi murakkab tarmoq jarayonini 7 ta kichik va boshqariladigan qatlamga (layers) bo'lib yuborish.

Nega aynan qatlamlarga bo'lingan? (Back-end muhandisi uchun misol)

Siz Microservices arxitekturasida loyiha qilyapsiz deylik. Nega Controller, Service va Repository qatlamlarini (layers) ajratasiz? Chunki:

  1. Bir qatlam ikkinchisining ichki ishi bilan qiziqmaydi (Separation of Concerns).
  2. Tizimni abstraction qilish oson bo'ladi. Service qatlamidagi kod o'zgarsa, Controller buni sezmaydi.

OSI modelida ham aynan shu logika. Masalan, siz brauzerda HTTP so'rov yuborganingizda (Application Layer), sizning routeringiz kabel orqali qanday tok o'tayotgani (Physical Layer) bilan qiziqmaydi. Har bir qatlam faqat o'zidan bitta tepadagi va bitta pastdagi qatlam bilan gaplashadi.


OSI Modeli - 7 qavatli bino

Keling, ma'lumot eng tepadan (sizdan) eng pastga (kabelga) qanday tushib olamiz.

7. Application Layer (Ilova qatlami)

Bu siz (foydalanuvchi) bevosita ko'rib turgan qatlam. Siz yozayotgan Java/Go dasturingiz, brauzeringiz yoki Telegram ilovangiz shu yerda ishlaydi. Bu yerda biz bilgan mashhur protokollar yashaydi: HTTP, FTP, SMTP, DNS.

  • Vazifasi: Ilovaga tarmoq xizmatlarini ko'rsatish.

6. Presentation Layer (Taqdimot qatlami)

Ma'lumotlar tarmoqqa ketishidan oldin umumiy tilga keltiriladi. Masalan siz yuborgan JSON obyekti baytlarga o'giriladi ma'lumotlar shifrlanadi (Encryption/SSL/TLS) yoki siqiladi (Compression).

  • Vazifasi: Ma'lumotni qabul qiluvchi tushunadigan formatga o'tkazish

5. Session Layer (Seans qatlami)

Ikki kompyuter o'rtasidagi connection'ni ochadi boshqaradi va yopadi. Masalan siz katta fayl yuklayotganingizda aloqa uzilib qolsa, faylni boshidan emas, aynan uzilgan joyidan davom ettirishni shu qatlam nazorat qiladi.

  • Vazifasi: Aloqa seansini boshqarish.

4. Transport Layer (Transport qatlami) - Dasturchilar uchun eng muhimi!

Mana shu yerda ma'lumotlar kichik bo'laklarga Segmentlarga bo'linadi. Bu qatlamda mhim ikki protokol yashaydi:

  • TCP (Transmission Control Protocol): Ishonchli, ma'lumot yetib borganini tekshiradi, xatolarni tuzatadi (xuddi buyurtmani qo'lingizga topshiradigan kurer).
  • UDP (User Datagram Protocol): Tez, lekin ishonchsiz. Yetib bordimi-yo'qmi qiziq emas (xuddi jonli efir/video stream).

3. Network Layer (Tarmoq qatlami)

Segmentlar endi Paket (Packet) deb ataladi. Bu qatlam ma'lumot qaysi yo'l orqali eng qisqa va xavfsiz manzilga yetib borishini hal qiladi (Routing). Bu yerda IP manzillar (IPv4, IPv6) va Routerlar ishlaydi.

  • Vazifasi: Paketlarni IP orqali manzildan manzilga yetkazish.

Paketlar endi Freym (Frame) deb ataladi. Endi biz global tarmoqdan mahalliy tarmoqqa (LAN) tushdik. Bu qatlam qurilmaning jismoniy manzilini, ya'ni MAC manzilini ishlatadi. Switch (kommutator) qurilmalari shu yerda ishlaydi.

  • Vazifasi: Mahalliy tarmoqdagi ikki jismoniy qurilma o'rtasida ma'lumot uzatish.

1. Physical Layer (Fizik qatlam)

Va nihoyat, eng quyi qatlam. Bu yerda endi freymlar 0 va 1 (Bitlar) ko'rinishida kabellar, optik tolalar yoki Wi-Fi radioto'lqinlari orqali tok signali bo'lib oqib ketadi.

  • Vazifasi: Bitlarni jismoniy muhit orqali uzatish.

4. Real hayotiy o'xshatish (Metfora)

Agar buni ham yoddan chiqarib yuborishdan qo'rqsangiz, tasavvur qiling: Siz do'stingizga xat yuboryapsiz.

  1. Application: Siz xatni qog'ozga yozdingiz (Maktub matni).
  2. Presentation: Do'stingiz tushunishi uchun uni o'zbek tilida yozdingiz va begona ko'zlar ko'rmasligi uchun konvertga solib yelimlandingiz (Shifrlash).
  3. Session: Pochta bo'limiga borib, "Sizlar shu manzilga xat tashiysizlarmi?" deb aloqa o'rnatdingiz.
  4. Transport: Pochta xodimi xatingiz juda kattaligi uchun uni 3 ta kichik bo'lakka bo'lib, tartib raqami berdi (1, 2, 3-segmentlar).
  5. Network: Konvert ustiga shahar va ko'cha nomini (IP manzil) yozdingiz. Saralash markazi qaysi yo'ldan ketishni (Routing) belgiladi.
  6. Data Link: Xat mashinaga yuklandi va mashina aynan qaysi pochta binosiga (MAC manzil) borishi belgilandi.
  7. Physical: Mashina asfaltdan (Kabeldan) yurib ketdi.

Maqola oxirida sizga bir backend siri: Bugungi real internet OSI modeli asosida ishlamaydi!

wait... what

"Iya, nega unda boshimizni og'ritib o'rgatdingiz?" deysizmi? Real internet TCP/IP modeli (4 ta qatlamli model) asosida ishlaydi. OSI modeli juda mukammal va akademik bo'lgani uchun real hayotda u biroz o'zgartirilgan.

Lekin, dunyodagi barcha dasturchilar va tarmoq muhandislari muammolarni muhokama qilganda baribir OSI modelini ishlatishadi. Masalan, kimdir sizga "Bizda Layer 7 Load Balancer muammosi bor" desa, siz srazi gap HTTP/Application qatlamidagi yuklamani taqsimlash haqida ketayotganini tushunishingiz kerak. Yoki "Bu Layer 3 Switch" deyishsa, u IP manzillar bilan ishlay olishini bilasiz.

Shuning uchun OSI modelini shunchaki imtihon uchun yodlamang, uning arxitekturasini his qiling!


Ko'rishguncha!