TCP/IP: nedir, protokol yığını ve veri iletimi

Yazar: IT Sectr Yayınlanma: 2026-03-06 Okuma süresi: 8 dk

TCP/IP, İnternet'in ve çoğu bilgisayar ağının temelini oluşturan bir protokol yığınıdır. Güvenilir veri teslimatından sorumlu TCP protokolü ile düğümler arasında paket yönlendirmesini sağlayan IP'yi birleştirir. IETF RFC 1180 (2024)'e göre, TCP/IP yığını mobil ve web uygulamaları dahil olmak üzere küresel ağ trafiğinin %80'inden fazlasını işler. Protokol yığını verilerin bir ağdaki cihazlar arasında nasıl paketlendiğini, adreslendiğini ve iletildiğini tanımlar.

Anahtar noktalar

  • TCP/IP — ağlarda veri iletimi için TCP (taşıma) ve IP (yönlendirme) birleştiren bir protokol yığını
  • Dört katman modeli: uygulama, taşıma, ağ ve bağlantı — her biri kendi görevini çözer
  • TCP onaylar ve yeniden iletimler yoluyla teslimat, paket sıralaması ve hata kontrolü sağlar
  • IP yönlendirme sağlar — ara düğümler üzerinden göndericiden alıcıya paket yolunun seçimi
  • Anlamak TCP/IP, ağ uygulamaları geliştirmek, bağlantıları hata ayıklamak ve performansı optimize etmek için gereklidir

TCP/IP nedir?

TCP/IP (Transmission Control Protocol / Internet Protocol), 1970'lerde ARPANET için geliştirilmiş ve küresel İnternet için fiili standart haline gelmiş bir protokol yığınıdır. Verilerin paketlere nasıl bölündüğünü, adreslendiğini, iletildiğini ve alıcı tarafında yeniden birleştirildiğini tanımlar.

TCP/IP mimarisi, her katmanın belirli işlevleri soyutladığı çok katmanlı bir prensip üzerine inşa edilmiştir. Uygulama katmanı uygulama verileriyle çalışır, taşıma katmanı güvenilirliği sağlar, ağ katmanı yönlendirmeyi yönetir ve bağlantı katmanı fiziksel iletimi yönetir. Modülerlik komşu katmanları etkilemeden bir katman içindeki protokollerin değiştirilmesine olanak tanır.

Mobil geliştirmede, TCP/IP ağ istekleri yapan her uygulama tarafından kullanılır. URLSession, OkHttp, AFNetworking ve Alamofire gibi kütüphaneler bu yığın üzerinde çalışır ve paket paketleme ve yönlendirme ayrıntılarını geliştiriciden gizler. Ancak, performans optimizasyonu için TCP/IP'yi anlamak gerekir: URLSessionConfiguration aracılığıyla TCP parametrelerini yapılandırmak, zaman aşımlarını yönetmeye, HTTP Kalıcı Bağlantılarını sürdürmeye ve kurumsal ortamlar için proxy ayarlamaya olanak tanır.

Ağ sorunlarını teşhis etmek için TCP/IP'yi anlamak önemlidir: bir uygulama sunucuya bağlanamıyorsa, sorun yığının herhangi bir katmanında olabilir — fiziksel kanaldan uygulama protokolüne kadar. tcpdump, Wireshark ve Charles Proxy gibi araçlar, her katmandaki trafiği analiz etmeye ve darboğazları bulmaya olanak tanır. Mobil geliştiriciler için Xcode, Network Debug Dashboard sağlar ve Android Studio, gerçek zamanlı olarak TCP bağlantılarını analiz etmek için Network Inspector sunar.

TCP/IP modeli katmanları

TCP/IP modeli, her biri veri iletimi sırasında kesin olarak tanımlanmış işlevleri yerine getiren dört katman içerir. Bu hiyerarşiyi anlamak, ağ sorunlarını teşhis etmek ve uygulamaları optimize etmek için gereklidir.

Uygulama katmanı

Uygulama katmanında, uygulamaların doğrudan etkileşime girdiği protokoller çalışır: HTTP, HTTPS, FTP, SMTP, DNS, WebSocket. Bu katman, verileri uygulamanın anlayabileceği bir şekilde biçimlendirir ve taşıma katmanına iletir. Mobil uygulama geliştiricileri, ağ kütüphaneleri aracılığıyla bu katmanda çalışır.

Taşıma katmanı

Taşıma katmanı, farklı cihazlardaki uygulamalar arasında veri iletimini sağlar. Ana protokoller TCP (onaylı güvenilir iletim) ve UDP'dir (garantisiz hızlı iletim). TCP verilere gönderici ve alıcı portlarını ekler, paket sıralamasını yönetir ve ağ tıkanıklığını kontrol eder.

Ağ ve bağlantı katmanları

Ağ katmanı, adreslemeyi (IPv4, IPv6) ve paket yönlendirmeyi tanımlayan IP protokolü tarafından uygulanır. Her paket, gönderici ve alıcı IP adreslerini içerir ve yol boyunca yönlendiriciler, yönlendirme tablolarına göre bir sonraki düğüm hakkında kararlar alır. IPv4, 32 bit adresler (yaklaşık 4,3 milyar) kullanırken, IPv6 128 bit adresler kullanır ve adres tükenme sorununu çözer.

Bağlantı katmanı, fiziksel iletim ortamıyla çalışır: Ethernet, Wi-Fi, Bluetooth. Bu katman, paketleri sinyallere dönüştürür ve geri dönüştürür, MAC adresleri aracılığıyla iletim ortamına erişimi yönetir ve çerçeve kontrol dizilerini (FCS) kullanarak fiziksel katman hatalarını tespit eder.

Bağlantı katmanında, yerel ağdaki cihazların IP adreslerini MAC adreslerine dönüştüren ARP (Adres Çözümleme Protokolü) ve VPN bağlantılarında ve mobil veri ağlarında kullanılan PPP (Noktadan Noktaya Protokol) gibi protokoller çalışır.

KatmanProtokollerFonksiyon
UygulamaHTTP, HTTPS, DNS, FTP, WebSocketUygulama verilerini biçimlendirme
TaşımaTCP, UDPUygulamalar arası iletim, hata kontrolü
IP, ICMP, ARPPaket yönlendirme ve adresleme
BağlantıEthernet, Wi-Fi, PPPFiziksel ortam üzerinden iletim

TCP protokolü nasıl çalışır

TCP (Transmission Control Protocol), taşıma katmanının ana protokollerinden biridir. Uygulamalar arasında bir bayt akışının güvenilir, sıralı ve hata denetimli teslimatını sağlar. Verileri iletmeden önce TCP, üç yönlü el sıkışma yoluyla bir bağlantı kurar.

Üç yönlü el sıkışma (three-way handshake), istemcinin bir SYN paketi göndermesiyle başlar. Sunucu, alımı onaylayan bir SYN-ACK paketiyle yanıt verir. İstemci, ACK paketiyle el sıkışmayı tamamlar ve ardından veri iletimi başlar. Bu süreç, her iki tarafın da değişime hazır olduğunu ve sıra numaralarında senkronize olduğunu garanti eder.

python
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()

Örnekte, connect çağrıldığında otomatik olarak üç yönlü el sıkışma gerçekleştiren SOCK_STREAM türünde bir TCP soketi oluşturulur. send yöntemi bir HTTP isteği iletir ve recv yanıtı alır. Tamamlandıktan sonra close, bağlantıyı düzgün bir şekilde kapatmak için bir FIN paketi gönderir.

İstemci işleme ile TCP sunucusu

İş parçacıkları aracılığıyla birden çok istemciyi kabul eden Python'da bir TCP sunucusu örneğini inceleyelim. Her bağlantı ayrı bir iş parçacığında işlenir ve ana döngüyü engellemeden aynı anda birden çok istemciye hizmet verilmesini sağlar.

python
import socket
import threading

def handle_client(conn, addr):
    print(f'İstemci bağlandı: {addr}')
    with conn:
        while True:
            data = conn.recv(1024)
            if not data:
                break
            conn.sendall(data.upper())
    print(f'İstemci {addr} bağlantısı kesildi')

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 9090))
server.listen(5)
print('TCP sunucusu 9090 portunda başlatıldı')

while True:
    conn, addr = server.accept()
    thread = threading.Thread(target=handle_client, args=(conn, addr))
    thread.start()

TCP sunucusu her bağlantıyı ayrı bir iş parçacığında işler ve sonsuz bir döngüde accept çağrısı yapar. handle_client işlevi verileri alır, büyük harfe dönüştürür ve sendall aracılığıyla geri gönderir. recv döngüsü sona erdiğinde (istemci bağlantıyı kapattığında), iş parçacığı sona erer ve soket otomatik olarak kapanır. Mobil uygulamalarda, bu tür düşük seviyeli soket çalışması doğrudan kullanılmaz — mobil HTTP kütüphaneleri, bağlantıları iş parçacığı havuzları aracılığıyla yönetir ve TCP bağlantılarını otomatik olarak yeniden kullanır.

TCP ve UDP arasındaki farklar

TCP ve UDP arasındaki seçim, ağ iletişimi tasarlarken en önemli kararlardan biridir. TCP ek gecikme pahasına teslimat, sıra ve veri bütünlüğünü garanti eder. UDP minimum gecikme ve daha düşük kanal yükü için güvenilirlikten ödün verir.

ÖzellikTCPUDP
BağlantıKurar (el sıkışma)Kurmaz
GüvenilirlikTeslimatı garanti ederGaranti etmez
Paket sırasıSıralarSıralamaz
HızDaha düşükDaha yüksek
KullanımWeb, e-posta, dosyalarAkış, oyunlar, DNS

Mobil uygulamalar için protokol seçimi senaryoya bağlıdır: REST API'leri ve veri yükleme TCP gerektirirken, görüntülü görüşmeler ve çevrimiçi oyunlar UDP hızından yararlanır. Bazı uygulamalar her iki protokolü birleştirir — kontrol için TCP ve medya akışı için UDP. UDP üzerinde çalışan ve HTTP/3'te kullanılan modern QUIC protokolü, her iki yaklaşımın avantajlarını birleştirir ve iOS ve Android'de URLSession aracılığıyla otomatik olarak desteklenir.

TCP/IP kod örnekleri

Hata işleme ve zaman aşımı ile Python'da bir TCP istemcisi örneğini inceleyelim. Bu yaklaşım, mobil uygulamalarda güvenilir sunucu bağlantısı için kullanılır.

python
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} adresine bağlandı')
        return sock
    except socket.error as err:
        print(f'Bağlantı hatası: {err}')
        sys.exit(1)

sock = tcp_client('api.example.com', 443)
sock.close()

tcp_client işlevi bir ana bilgisayar ve port alır, 10 saniyelik zaman aşımıyla bir soket oluşturur ve bağlantı kurmayı dener. Bağlantı hatası durumunda — örneğin, sunucu kullanılamıyor veya güvenlik duvarı engelliyor — sorun açıklamasıyla bir istisna fırlatılır. Mobil uygulamalarda, bağlantı zaman aşımı kritiktir: çok kısa, yavaş ağlarda yanlış hatalara yol açar; çok uzun, arayüz donmasına yol açar. Mobil ağlar için önerilen değer, URLSession yapılandırmasında timeoutIntervalForRequest için 10–15 saniye ve timeoutIntervalForResource için 30–60 saniyedir.

Sıkça sorulan sorular

TCP ve IP arasındaki fark nedir?

IP yönlendirmeden sorumludur — ara düğümler üzerinden göndericiden alıcıya bir paket teslim etmek. TCP, güvenilir veri birleştirmeyi sağlar: sıralamayı kontrol eder, bütünlüğü doğrular ve kayıp paketlerin yeniden iletilmesini ister. Birlikte TCP/IP yığınını oluştururlar.

TCP/IP varsayılan olarak hangi portu kullanır?

TCP/IP sabit bir port kullanmaz — port uygulama tarafından atanır. Standart portlar: 80 (HTTP), 443 (HTTPS), 22 (SSH), 25 (SMTP). Port 443, mobil uygulamalarda güvenli web trafiği için ana porttur.

TCP bağlantısı nedir?

TCP bağlantısı, üç yönlü el sıkışma (SYN, SYN-ACK, ACK) yoluyla kurulan iki uygulama arasındaki mantıksal bir kanaldır. Bağlantı, gönderici ve alıcının (IP adresi, port) çiftiyle tanımlanır. El sıkışma her iki tarafın da veri alışverişine hazır olduğunu garanti eder.

TCP/IP mobil uygulamalarda İnternet olmadan kullanılabilir mi?

Evet, TCP/IP İnternet erişimi olmadan yerel ağlarda (LAN) çalışır. Cihazlar Wi-Fi Direct, Bluetooth PAN veya Ethernet aracılığıyla bağlanır ve yerel IP adreslerini kullanarak veri alışverişi yapar. Yerel TCP/IP IoT cihazlarında ve eşler arası uygulamalarda kullanılır.

TCP neden UDP'den yavaştır?

TCP ek mekanizmalar nedeniyle daha yavaştır: iletimden önce üç yönlü el sıkışma, her paketin onaylanması, kayıp segmentlerin yeniden iletilmesi ve tıkanıklık kontrolü. UDP bu kontroller olmadan verigramlar gönderir ve olası kayıplar pahasına gecikmeyi azaltır.

Özet

  • TCP/IP — İnternet ve yerel ağlar üzerinde veri iletimini sağlayan temel bir protokol yığını
  • Dört katman (uygulama, taşıma, ağ, bağlantı) iletimin farklı yönlerini soyutlar
  • TCP hata kontrolü ve onaylarla güvenilir teslimat sağlar
  • IP ağdaki paket yönlendirme ve düğüm adreslemeden sorumludur
  • TCP veya UDP seçimi gereksinimlere bağlıdır: güvenilirlik ve hız
  • Ağ istekleri yapan her mobil uygulama TCP/IP yığınını kullanır

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun