"Enter"a basıp içeriğe geçin

Transmission Control Protocol (TCP)

Last updated on 16 Ocak 2024

Transmission Control Protocol (TCP) nedir?

İletim Kontrol Protokolü (TCP), uygulamalar arasında güvenilir ve istikrarlı veri iletimi sağlayan bir ağ protokolüdür. OSI modeline göre 4. katmanda yer almaktadır.

TCP Protokolünün Özellikleri

  • İki uygulama arasındaki veri aktarımını sağlar.
  • Çoklu bağlantılara izin verir.
  • Bağlantı kurulmadan önce veri aktarımı yapılmaz.
  • Gönderilen veriler için öncelik ve güvenlik tanımlamaları yapılabilir.
  • Hata kontrolü yapar.
  • Akış kontrolü sağlar.

TCP Bağlantısının Kurulması (Üç Yönlü El Sıkışma)

Verilerin TCP protokolü üzerinden aktarılabilmesi için TCP bağlantısının kurulması gerekmektedir. TCP bağlantısının kurulması, hem gönderenin hem de alıcının veri aktarımına hazır olduğunu gösterir.

Veri aktarımı öncesinde kurulan TCP bağlantısına “Üç Yönlü El Sıkışma” adı verilmektedir. Üç Yönlü El Sıkışma aşağıdaki adımlardan oluşur:

TCP bağlantısını kurmak isteyen gönderen taraf, “SYN” bayrağına ayarlanmış TCP segmentini alıcı tarafa gönderir.
Bu segmenti aldıktan sonra alıcı taraf, göndericiye “SYN” ve “ACK” bayraklarına ayarlanmış bir TCP segmenti iletir.
Son aşama olarak bu segmentin gönderen kısmı “ACK” bayrağına ayarlanmış TCP segmentini alıcıya geri gönderir ve bağlantı kurulur.
Aşağıdaki resimde gönderen ile alıcı arasında TCP bağlantısının nasıl kurulduğu gösterilmektedir:

Not: SYN ve ACK Bayrakları, TCP protokol Başlığı içindeki 1 bitlik alanlardır.

TCP Veri Akışı ve İletim Güvenilirliği

TCP protokolünde gönderilen segmentler sekiz bitlik veri formundadır. TCP protokolü gönderilen ve alınan her biti işaretleyerek izler. İşaretleyerek gönderdiği her veri için alıcıdan yanıt bekler. Alıcıdan gelen yanıtın ardından bir sonraki veri gönderilir ve aynı şekilde gönderilen bir sonraki veri için de alıcıdan yanıt beklenir. Bu işaretleme sistemi ile TCP protokolü iletim güvenilirliğini sağlayarak verileri eksiksiz ve sıralı bir şekilde iletir.

TCP protokolü, bağlantı kurulurken rastgele bir sayı belirler. Bu numaraya “Başlangıç Sıra Numarası (ISN)” denir. Bu numara, TCP bağlantısındaki ilk veri aktarımı için kullanılır. Daha sonra bu numaraya gönderilen bayt sayısı eklenerek yeni numaralar oluşturulur. Yeni ortaya çıkan bu sayıların her birine “Sıra Numarası” denir. TCP protokolü bu sayılara göre segmentin alıcı tarafından alınıp alınmadığını bilir. Örneğin aşağıdaki görselde “ISN=0” olarak ayarlanmıştır. Segmentin “1024” byte büyüklüğünde gönderilmesinin ardından alıcıdan gelen ACK numarası ile göndericiye segment onayı iletildi ve sıra numarası değeri güncellendi. ACK numarası 1024 olan segment alıcıdan gelmediği takdirde veri aktarımı devam etmeyecek ve daha önce gönderilen TCP segmenti tekrar gönderilecek ve ACK numarası 1024 olan segmentin gelmesi beklenecektir.

TCP protokolü güvenilir iletim sağlayan bir ağ protokolüdür. Bir önceki başlıkta anlatılan üç yönlü el sıkışma, TCP protokolünde iletim güvenilirliğini sağlayan mekanizmalardan biridir. TCP protokolünün iletim güvenilirliğini sağlayan ana mekanizma, her TCP segmentinin gönderilip gönderilmediğini doğrulayan bir yapıya dayanmaktadır. Bu sistematik segment gönderimi sayesinde herhangi bir nedenle gönderilemeyen TCP segmenti varsa o segment tekrar gönderilerek alıcı tarafa teslim edilir. Örneğin, aşağıdaki resimde bir iletim hatası durumunda TCP protokolünün nasıl davrandığı gösterilmektedir:

TCP Bağlantılarını Sonlandırma

TCP bağlantılarının sonlandırılması 4 adımda gerçekleşir:

TCP bağlantısını sonlandırmak isteyen taraf, hedef cihaza “FIN” bayrağı ayarlanmış TCP segmentini gönderir.

Hedef cihaz, TCP segmentini aldıktan sonra “FIN” bayrağının ayarlandığını görür ve yanıt olarak TCP segmentini “ACK” bayrağı ayarlanmış olarak gönderir.

Hedef cihaz, bağlantıyı sonlandırmak isteyen cihaza “FIN” bayrağı ayarlanmış TCP segmentini gönderir.

Son adım olarak bağlantıyı sonlandırmak isteyen cihaz, gelen TCP segmentine yanıt olarak ayarlanan “ACK” bayrağıyla TCP segmentini gönderir ve TCP bağlantısı sonlandırılır.

Not: FIN ve ACK bayrakları, TCP protokol başlığındaki 1 bitlik alanlardır. TCP bağlantıları “RST” bayrağıyla da sonlandırılabilir. RST bayrağı kullanılarak sonlandırılan TCP bağlantısı, anında ve tek taraflı bir bağlantı sonlandırmasıdır. Yani bağlantıyı sıfırlamak için “RST” bayrağı kullanılır.

TCP Bağlantıları

TCP bağlantıları, cihazda TCP tabanlı iletim ileten uygulamalar tarafından sıklıkla kullanılır. Uygulamaların TCP protokolüne bağlanabilmesi için protokolle ilgili bazı bilgiler kullanılır. Her TCP bağlantısı “Kaynak IP Adresi-Kaynak Port Numarası”, “Hedef IP Adresi-Hedef Port Numarası” bilgilerinden oluşur.

Port Nedir?

Bağlantı noktaları, uygulamaların birbirleriyle iletişim kurmak için kullandıkları iletişim noktalarıdır. Bir sunucuda aynı anda birçok hizmet bulunabilir. Port numaraları gelen istekleri net bir şekilde ortaya koyar ve hangi servislere ait olduklarını bize bildirir. Port aslında “0-65535” arasında değer alabilen bir sayıdır. Bazı bağlantı noktası numaraları bazı protokoller tarafından varsayılan olarak kullanılır. Port numaraları ve IP adresleri soket adresini oluşturur. Örneğin “192.168.5.100:8080”(IP_Address:Port_Number) ifadesi “:” ile ayrılmış iki ayrı bilgi içerir.

IP adresi
Port numarası

Varsayılan TCP Bağlantı Noktaları

Aşağıda en iyi bilinen protokoller için varsayılan bağlantı noktalarının örnekleri verilmiştir:

FTP : 21
SSH : 22
Telnet : 23
SMTP : 25
DNS : 53
HTTP : 80
POP3 : 110
SMB : 445

TCP Protokolü Başlığı

TCP protokolünün başlığında protokole özgü birçok veri alanı vardır. Bu veri alanları TCP protokolünün gerektirdiği tüm bilgileri içerir. Aşağıdaki resimde TCP protokolünün başlığı ve alanları gösterilmektedir:

Her alan aşağıdaki başlıklarda kısaca açıklanmıştır:

Source Port Number

“Source Port Number” göndericinin port numarasının yer aldığı alandır. “16 bit” uzunluğundadır.

Destination Port Number

“Destination Port Number” alıcının port numarasının yer aldığı alandır. “16 bit” uzunluğundadır.

Sequence Number

“Sıra Numarası” alanı TCP segmentlerinin iletimlerini takip etmek için kullanılan numaradır. TCP segmentinde “SYN” bayrağı ayarlanmışsa bu sayı “Başlangıç Sıra Numarası” değeridir. “32 bit” uzunluğundadır.

Acknowledgement Number

“Onay Numarası” alanı gönderilen segmentlerin iletiminin hangi bayta kadar yapıldığını belirten bir değerdir. “32 bit” uzunluğundadır.

Header Length (HLEN)

“Başlık Uzunluğu” TCP başlık uzunluğunun değerini tutan alandır. “4 bit” uzunluğundadır.

Reserved

Gelecekte kullanılmak üzere ayrılmış alandır. “3 bit” uzunluğundadır.

Control Flags

“Kontrol Bayrakları”, bayrakların değerlerinin tutulduğu alandır. Her bayrak “1 bit” uzunluğundadır. Bayrak ayarlamak, ikili olarak “1” değerini alması anlamına gelir. Toplamda bu alan “9”dur. bit” uzunluğunda.

SYN: TCP bağlantılarını başlatmak için kullanılan bayraktır.
ACK: Paketlerin iletildiğini gösteren onay bayrağıdır. Ayrıca bağlantı kurulumunun onaylanması gerektiğini de belirtir.
FIN: TCP bağlantısını kontrollü bir şekilde sonlandırmak için kullanılan bayraktır.
RST: TCP bağlantısını tek taraflı ve aniden sonlandırmak için kullanılan bayraktır. Bağlantıyı sıfırlamak için kullanılır.
PSH: Verinin hedef uygulamaya gönderildiği paketlerde ayarlanan bayraktır.
URG: Acil ve öncelikli veri olduğunu bildirmek için kullanılan bayraktır.

Windows Size

“Pencere Boyutu” alanı alıcının tampon kapasitesinin maksimum veri boyutunun tanımlandığı yerdir. “16 bit” uzunluğundadır.

Checksum

“Sağlama toplamı” iletim sırasında TCP segmentinin bütünlüğünün bozulmadan olup olmadığını kontrol eden alandır. Onaltılık değere sahiptir ve “16 bit” uzunluğundadır.

Urgent Pointer

“Acil İşaretçi” alanı acil baytların hangi veriye kadar olduğunu belirten bir değerdir. Acil baytların hangi veriye kadar olduğunu gösterir. Bu alanın kullanılabilmesi için “URG” bayrağının ayarlanması gerekmektedir. “16 bit” uzunluğundadır.

Options

“Seçenekler” çeşitli TCP protokolü ek özelliklerinin kullanılması için oluşturulan alandır. Kullanma zorunluluğu yoktur. Sabit bir uzunluğu yoktur.

Wireshark ile TCP Protokolü İncelemesi

Ağ paketlerinin detaylı olarak incelenmesine olanak sağlayan grafiksel kullanıcı arayüzüne (GUI) sahip bazı araçlar bulunmaktadır. Bu araçlardan biri de “Wireshark” aracıdır.

Wireshark aracını aşağıdaki adresten indirebilirsiniz:

Wireshark: https://www.wireshark.org/download.html

Yukarıda anlatılan TCP protokolünün her alanını Wireshark aracılığıyla görelim:

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir