TCP Nedir?
TCP, IP veya İnternet Protokolünün üzerine kurulmuştur. IP paketleri bir başlık (header) ve bir yükten (payload) oluşur. Başlık, kaynak IP adresi, hedef IP adresi ve yükte kullanılan protokol (ICMP, UDP veya TCP gibi) gibi bilgileri içerir.
TCP, bayraklar kullanarak iki eş arasında bir bağlantı kurar. Bu bağlantı kavramı, veri akışını her iki uçta da kesintisiz bir akış olarak sunmak için gereklidir. İletişim sona erdiğinde, TCP paketlerinin başlıklarındaki bayraklar kullanılarak bağlantı kapatılabilir. TCP, bozuk, kayıp veya yinelenen paketleri işlemez
TCP 3-Way Handshake
İstemci tarafından bir TCP bağlantısı başlatılır ve üç yönlü bir el sıkışmadan geçer:
(TCP bayrağı SYN “senkronize et” anlamına gelir ve ACK “onay” anlamına gelir.)

İstemci, sunucuya SYN bayrağı ayarlanmış bir TCP paketi gönderir.
Sunucu paketi alır, belleğinde bir TBC (İletim Kontrol Bloğu) oluşturur ve hem SYN hem de ACK bayrakları ayarlanmış bir TCP paketiyle yanıt verir.
İstemci, ACK bayrağı ayarlanmış bir TCP paketiyle yanıt verir.
Bundan sonra bağlantı gerçekleşir ve her iki taraf da veri gönderebilir.
İkinci adımda, istemcinin üçüncü adımda gönderdiği paketi işleyebilmek için sunucunun devam eden bağlantı hakkında bazı bilgileri saklaması gerektiğine dikkat etmek gerekir. Buna “İletim Kontrol Bloğu” denir ve sunucuyu bir DoS saldırısına (hizmet reddi) karşı savunmasız hale getirir.
Bu tür saldırılara SYN flood denilmektedir.
Sunucu, bağlantının durumunu bellekte saklamak yerine, SYN + ACK paketini, bağlantı hakkında ihtiyaç duyduğu bilgileri temsil eden özel hazırlanmış bir sıra numarası “N” ile gönderir. İstemci daha sonra “N + 1” sıra numarasını kullanarak ACK paketiyle yanıt verecek ve sunucu bu sıra numarasını kullanarak bağlantı durumunu yeniden oluşturabilecektir.
Sıra numarasına eklenmiş durum bilgilerine “SYN çerezi” de denir, çünkü istemcinin yanıtı HTTP çerezlerine benzer şekilde bu çerezi kapsar.
TCP Bayrakları (TCP Flags)
Protokol başlığında, TCP, bağlantıları ve trafik akışlarını yönetmek için bayraklar kullanır.
| Kısaltma | İsim | Anlamı |
|---|---|---|
| SYN | Synchronization | TCP bağlantısı oluşturmak için kullanılır |
| ACK | Acknowledgment | Veri veya senkronizasyon paketlerinin alındığını onaylamak için kullanılır |
| PSH | Push | Ağ yığınlarına ara belleğe almayı atlama talimatı |
| URG | Urgent | Normal verilerden önce ağ yığınları tarafından işlenmesi gereken bant dışı verileri gösterir |
| FIN | Finish | TCP bağlantısını sonlandırır |
| RST | Reset | Bağlantıyı hemen sonlandırır ve aktarılan tüm verileri bırakır |
TCP, bozuk, çoğaltılmış veya kaybolan paketleri işlemek için gerekli olduğundan, paketleri algılaması ve yeniden sipariş etmesi ve paketleri yeniden iletmesi gerekir. Bu veri akışı TCP başlıklarındaki bayraklar kullanılarak tekrar yönetilir.
TCP Segment Nedir?
TCP / IP kullanarak paket gönderirken, her IP paketinin veri kısmı bir TCP segmenti olarak biçimlendirilir.
Her TCP segmenti bir başlık ve veri içerir. TCP üstbilgisi, UDP üstbilgisinden çok daha fazla alan içerir ve seçenekler alanının boyutuna bağlı olarak değişebilir.
TCP üstbilgisi, UDP üstbilgisiyle bazı alanları paylaşır: kaynak bağlantı noktası numarası, hedef bağlantı noktası numarası ve checksum.
TCP Header Format
Her TCP başlığı, toplam 20 bayt (160 bit) boyutunda 10 zorunlu alana sahiptir. İsteğe bağlı olarak 40 bayta kadar ek bir veri alanı içerebilir.

- Source TCP port number (2 bytes or 16 bits): Kaynak TCP bağlantı noktası numarası gönderen aygıtı temsil eder.
- Destination TCP port number (2 bytes or 16 bits): Hedef TCP bağlantı noktası numarası, alıcı aygıtın iletişim uç noktasıdır.
- Sequence number (4 bytes or 32 bits): Mesaj gönderenler, bir grup mesajın sırasını işaretlemek için sıra numaralarını kullanır.
- Acknowledgment number (4 bytes or 32 bits): em gönderenler hem de alıcılar, son alınan veya gönderilmesi beklenen iletilerin sıra numaralarını iletmek için onay numaraları alanını kullanır.
- TCP data offset (4 bits): Veri ofseti alanı, bir TCP üstbilgisinin toplam boyutunu dört baytın katları olarak depolar. İsteğe bağlı TCP alanını kullanmayan bir üstbilginin veri uzaklığı 5’tir (20 baytı temsil eder), maksimum boyutlu isteğe bağlı alanı kullanan bir üstbilginin veri uzaklığı 15’tir (60 baytı temsil eder).
- Reserved data (3 bits): TCP başlıklarındaki ayrılmış veriler her zaman sıfır değerine sahiptir. Bu alan, toplam başlık boyutunu, bilgisayar veri işlemenin verimliliği için önemli olan dört baytın katı olarak hizalar.
- Control flags (up to 9 bits): TCP, belirli durumlarda veri akışını yönetmek için her biri Açık veya Kapalı’yı temsil eden ayrı bir bit olmak üzere altı standart ve üç genişletilmiş kontrol bayrağı kümesi kullanır.
- Window size (2 bytes or 16 bits): TCP gönderenleri, karşılığında bir onay gerektirmeden önce bir alıcıya ne kadar veri gönderdiklerini düzenlemek için pencere boyutu adı verilen bir sayı kullanır.
- TCP checksum (2 bytes or 16 bits): Bir TCP başlığının içindeki sağlama toplamı değeri, protokol gönderen tarafından, alıcının bozuk veya tahrif edilmiş mesajları algılamasına yardımcı olmak için matematiksel bir teknik olarak oluşturulur.
- Urgent pointer (2 bytes or 16 bits): Acil işaretçi anlamına gelen alan, genellikle sıfıra ayarlanır ve yok sayılır, ancak kontrol bayraklarından biriyle birlikte, bir iletinin bir alt kümesini öncelikli işlem gerektirecek şekilde işaretlemek için veri ofseti olarak kullanılabilir.
- TCP optional data (0 to 40 bytes): İsteğe bağlı TCP verilerinin kullanımı, özel bildirim ve pencere ölçekleme algoritmaları için destek içerir.
TCP ile UDP Farkı Nedir?
TCP
- Verilerin gönderilmesini garanti eder.
- Hata akışlarını kontrol eder.
- UDP’den yavaştır.
- 20 baytlık bir başlık, isteğe bağlı 40 baytlık bir işlev verisine izin verir.
- Güvenilir olması gereken uygulamalar için kullanılır.
- Genellikle TCP kullanılır.
UDP
- Verinin teslim edilmesini garanti edemez.
- Hata kontrolü sağlamaz.
- TCP’den hızlıdır.
- 8 Baytlık bir başlık yalnızca zorunlu işlev verilerine izin verir.
- Hızlı olması gerekli uygulamalar için kullanılır. (Oyun, video, VPN gibi)