TCP/IP internet va ko'pgina kompyuter tarmoqlarining poydevori bo'lgan protokollar to'plamidir. U ishonchli ma'lumot yetkazib berish uchun mas'ul bo'lgan TCP protokolini va paketlarni tugunlar o'rtasida marshrutlashni ta'minlaydigan IPni birlashtiradi. IETF RFC 1180 (2024) ma'lumotlariga ko'ra, TCP/IP to'plami mobil va veb ilovalarni ham o'z ichiga olgan holda, jahon tarmoq trafigining 80% dan ortig'ini qayta ishlaydi. Protokollar to'plami ma'lumotlarning tarmoqdagi qurilmalar o'rtasida qanday paketlanishi, manzillanishi va uzatilishini belgilaydi.
Asosiy fikrlar
TCP/IP (Transmission Control Protocol / Internet Protocol) — 1970-yillarda ARPANET uchun ishlab chiqilgan va global internet tarmog'i uchun de-fakto standartga aylangan protokollar to'plamidir. U ma'lumotlarning paketlarga bo'linishi, manzillanishi, uzatilishi va qabul qiluvchi tomonda yig'ilishi qoidalarini belgilaydi.
TCP/IP arxitekturasi ko'p qatlamli prinsip asosida qurilgan bo'lib, har bir qatlam muayyan funksiyalarni abstraksiyalaydi. Amaliy qatlam ilova ma'lumotlari bilan ishlaydi, transport qatlami ishonchlilikni ta'minlaydi, tarmoq qatlami marshrutlashni, kanal qatlami esa fizik muhitda uzatishni amalga oshiradi. Modullik qo'shni qatlamlarni o'zgartirmasdan qatlam ichida protokollarni almashtirishga imkon beradi.
Mobil ishlanmada TCP/IP tarmoq so'rovlarini bajaradigan har bir ilova tomonidan qo'llaniladi. URLSession, OkHttp, AFNetworking va Alamofire kutubxonalari ushbu to'plam ustida ishlaydi, dasturchidan paketlarni qadoqlash va marshrutlash tafsilotlarini yashiradi. Biroq, TCP/IPni tushunish samaradorlikni optimallashtirish uchun zarur: URLSessionConfiguration orqali TCP parametrlarini sozlash vaqt chegaralarini boshqarish, HTTP Persistent Connectionsni saqlash va korporativ muhitlar uchun proksi sozlash imkonini beradi.
TCP/IPni tushunish tarmoq muammolarini diagnostika qilish uchun zarur: agar ilova serverga ulana olmasa, muammo to'plamning istalgan qatlamida bo'lishi mumkin — fizik kanaldan tortib amaliy protokolgacha. tcpdump, Wireshark va Charles Proxy kabi vositalar har bir qatlamda trafikni tahlil qilish va tor joylarni topish imkonini beradi. Mobil dasturchilar uchun Xcode Network Debug Dashboard, Android Studio esa real vaqtda TCP ulanishlarini tahlil qilish uchun Network Inspector taqdim etadi.
TCP/IP modeli to'rt qatlamni o'z ichiga oladi, ularning har biri ma'lumot uzatishda qat'iy belgilangan funksiyalarni bajaradi. Ushbu ierarxiyani tushunish tarmoq muammolarini diagnostika qilish va ilovalarni optimallashtirish uchun zarurdir.
Amaliy qatlamda ilovalar bevosita ishlaydigan protokollar faoliyat ko'rsatadi: HTTP, HTTPS, FTP, SMTP, DNS, WebSocket. Bu qatlam ma'lumotlarni ilova uchun tushunarli formatda shakllantiradi va transport qatlamiga uzatadi. Mobil ilova dasturchilari tarmoq kutubxonalari orqali aynan shu qatlamda ishlaydilar.
Transport qatlami turli qurilmalardagi ilovalar o'rtasida ma'lumot uzatilishini ta'minlaydi. Asosiy protokollar: TCP (tasdiqlash bilan ishonchli uzatish) va UDP (kafolatsiz tez uzatish). TCP ma'lumotlarga jo'natuvchi va qabul qiluvchi portini qo'shadi, paketlar tartibini boshqaradi va tarmoq tiqilinchini nazorat qiladi.
Tarmoq qatlami IP protokoli bilan amalga oshiriladi, u manzillashni (IPv4, IPv6) va paket marshrutlashni belgilaydi. Har bir paket jo'natuvchi va qabul qiluvchining IP manzilini o'z ichiga oladi, marshrutizatorlar esa marshrutlash jadvallari asosida keyingi tugun haqida qaror qabul qiladi. IPv4 32-bitli manzillardan (taxminan 4,3 milliard), IPv6 esa 128-bitli manzillardan foydalanadi, bu manzil tanqisligi muammosini hal qiladi.
Kanal qatlami fizik uzatish muhiti bilan ishlaydi: Ethernet, Wi-Fi, Bluetooth. Bu qatlam paketlarni signallarga aylantiradi va aksincha, MAC manzillari orqali uzatish muhitiga kirishni boshqaradi va ramka nazorat summasi (FCS) orqali fizik qatlam xatolarini aniqlaydi.
Kanal qatlamida mahalliy tarmoqdagi qurilmalarning IP manzillarini MAC manzillariga aylantiruvchi ARP (Address Resolution Protocol) va VPN ulanishlarida hamda mobil ma'lumot uzatish tarmoqlarida qo'llaniladigan PPP (Point-to-Point Protocol) kabi protokollar ishlaydi.
| Qatlam | Protokollar | Funksiya |
|---|---|---|
| Amaliy | HTTP, HTTPS, DNS, FTP, WebSocket | Ilova ma'lumotlarini shakllantirish |
| Transport | TCP, UDP | Ilovalar o'rtasida uzatish, xato nazorati |
| Tarmoq | IP, ICMP, ARP | Paket marshrutlash va manzillash |
| Kanal | Ethernet, Wi-Fi, PPP | Fizik muhitda uzatish |
TCP (Transmission Control Protocol) — transport qatlamining asosiy protokollaridan biri. U ilovalar o'rtasida bayt oqimining ishonchli, tartibli va xatolarga nisbatan tekshirilgan yetkazilishini ta'minlaydi. Ma'lumot uzatishdan oldin TCP uch bosqichli qo'l siqish (three-way handshake) orqali ulanish o'rnatadi.
Uch bosqichli qo'l siqish mijozning SYN paketini jo'natishi bilan boshlanadi. Server SYN-ACK paketi bilan javob berib, qabul qilishni tasdiqlaydi. Mijoz ACK paketi bilan qo'l siqishni yakunlaydi, shundan so'ng ma'lumot uzatish boshlanadi. Bu jarayon ikkala tomonning almashinuvga tayyorligini va tartib raqamlari bo'yicha sinxronlashganligini kafolatlaydi.
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('example.com', 80))
sock.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
response = sock.recv(4096)
print(response.decode())
sock.close()
Misolda connect chaqirilganda avtomatik ravishda uch bosqichli qo'l siqishni bajaradigan SOCK_STREAM tipidagi TCP soket yaratiladi. send metodi HTTP so'rovini jo'natadi, recv javobni qabul qiladi. Tugatilgandan so'ng, close ulanishni to'g'ri yopish uchun FIN paketini jo'natadi.
Python tilida bir nechta mijozlarni oqimlar orqali qabul qiladigan TCP server misolini ko'rib chiqaylik. Har bir ulanish alohida oqimda qayta ishlanadi, bu asosiy siklni bloklamasdan bir vaqtning o'zida ko'plab mijozlarga xizmat ko'rsatish imkonini beradi.
import socket
import threading
def handle_client(conn, addr):
print(f'Mijoz ulandi: {addr}')
with conn:
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data.upper())
print(f'Mijoz {addr} uzildi')
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 9090))
server.listen(5)
print('TCP server 9090 portida ishga tushirildi')
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
TCP server har bir ulanishni alohida oqimda qayta ishlaydi, cheksiz siklda accept chaqiradi. handle_client funksiyasi ma'lumotlarni qabul qiladi, ularni katta harflarga aylantiradi va sendall orqali qaytaradi. recv sikli tugaganda (mijoz ulanishni yopganda), oqim tugaydi va soket avtomatik yopiladi. Mobil ilovalarda soketlar bilan bunday past darajadagi ish bevosita qo'llanilmaydi — mobil HTTP kutubxonalari ulanishlarni oqim hovuzlari orqali boshqaradi va TCP ulanishlarini avtomatik qayta ishlatadi.
TCP va UDP o'rtasida tanlov qilish tarmoq o'zaro aloqasini loyihalashdagi asosiy qarorlardan biridir. TCP qo'shimcha kechikishlar evaziga yetkazib berish, tartib va ma'lumotlar yaxlitligini kafolatlaydi. UDP minimal kechikish va kanalda kamroq yuklanish uchun ishonchlilikni qurbon qiladi.
| Xususiyat | TCP | UDP |
|---|---|---|
| Ulanish | O'rnatadi (handshake) | O'rnatmaydi |
| Ishonchlilik | Yetkazib berishni kafolatlaydi | Kafolatlamaydi |
| Paketlar tartibi | Tartibga soladi | Tartibga solmaydi |
| Tezlik | Past | Yuqori |
| Qo'llanilishi | Veb, email, fayllar | Streaming, o'yinlar, DNS |
Mobil ilovalar uchun protokol tanlovi stsenariyga bog'liq: REST-API va ma'lumot yuklash TCP talab qiladi, video qo'ng'iroqlar va onlayn o'yinlar esa UDP tezligidan foyda oladi. Ba'zi ilovalar ikkala protokolni birlashtiradi — boshqarish uchun TCP va media oqimi uchun UDP. UDP ustida ishlaydigan va HTTP/3 da qo'llaniladigan zamonaviy QUIC protokoli ikkala yondashuvning afzalliklarini birlashtiradi va iOS va Androidda URLSession orqali avtomatik qo'llab-quvvatlanadi.
Xatolarni qayta ishlash va vaqt chegarasi bilan Python tilidagi TCP mijoz misolini ko'rib chiqaylik. Bu yondashuv mobil ilovalarda serverga ishonchli ulanish uchun qo'llaniladi.
import socket
import sys
def tcp_client(host, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect((host, port))
print(f'{host}:{port} ga ulandi')
return sock
except socket.error as err:
print(f'Ulanish xatosi: {err}')
sys.exit(1)
sock = tcp_client('api.example.com', 443)
sock.close()
tcp_client funksiyasi host va portni qabul qiladi, 10 soniya vaqt chegarasi bilan soket yaratadi va ulanishga harakat qiladi. Ulanish xatosi bo'lganda — masalan, serverning mavjud emasligi yoki firewall bloklashi — muammo tavsifi bilan istisno tashlanadi. Mobil ilovalarda ulanish vaqt chegarasi juda muhim: juda qisqa bo'lsa sekin tarmoqlarda soxta xatolarga, juda uzun bo'lsa interfeysning muzlashiga olib keladi. Mobil tarmoqlar uchun tavsiya etiladigan qiymat URLSession konfiguratsiyasida timeoutIntervalForRequest uchun 10–15 soniya va timeoutIntervalForResource uchun 30–60 soniya.
Tez-tez beriladigan savollar
IP marshrutlash uchun javobgardir — paketni jo'natuvchidan qabul qiluvchiga oraliq tugunlar orqali yetkazish. TCP ma'lumotlarning ishonchli yig'ilishini ta'minlaydi: tartibni nazorat qiladi, yaxlitlikni tekshiradi va yo'qolgan paketlarni qayta jo'natishni so'raydi. Birgalikda ular TCP/IP to'plamini tashkil qiladi.
TCP/IP sobit portdan foydalanmaydi — port ilova tomonidan tayinlanadi. Standart portlar: 80 (HTTP), 443 (HTTPS), 22 (SSH), 25 (SMTP). 443-port mobil ilovalarda xavfsiz veb-trafik uchun asosiy portdir.
TCP ulanishi — uch bosqichli qo'l siqish (SYN, SYN-ACK, ACK) orqali o'rnatilgan ikki ilova o'rtasidagi mantiqiy kanal. Ulanish jo'natuvchi va qabul qiluvchining (IP manzili, port) juftligi bilan identifikatsiyalanadi. Qo'l siqish ikkala tomonning ma'lumot almashishga tayyorligini kafolatlaydi.
Ha, TCP/IP internetga chiqishsiz mahalliy tarmoqlarda (LAN) ishlaydi. Qurilmalar Wi-Fi Direct, Bluetooth PAN yoki Ethernet orqali ulanadi va mahalliy IP manzillari orqali ma'lumot almashadi. Mahalliy TCP/IP IoT qurilmalari va peer-to-peer ilovalarida qo'llaniladi.
TCP qo'shimcha mexanizmlar tufayli sekinroq: uzatishdan oldin uch bosqichli qo'l siqish, har bir paketni tasdiqlash, yo'qolgan segmentlarni qayta jo'natish, tiqilinch nazorati. UDP bu tekshiruvlarsiz datagrammalarni jo'natadi, bu mumkin bo'lgan yo'qotishlar evaziga kechikishni kamaytiradi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.