TCP, iki uç arasında güvenli bir şekilde veri transferi gerçekleştirmek için kullanılan bir protokoldür. Veri transferine başlamadan önce iki uç arasında oturum açılır akabinde veri transferi gerçekleştirilir. Ayrıca gönderilen her segment (veri parçası) için segmentin sorunsuzca hedefe ulaşıp ulaşmadığını öğrenmek için onay (ACK) beklemektedir. Bu yazıda ise TCP protokol başlığı içerisinde yer alan bayraklar (flags) hakkında bilgi verilecektir. Öncelikle her bir bayrağın ne anlama geldiği açıklanacaktır akabinde ise TCP üzerinden nasıl oturup açıldığı örneklenecektir.
Toplam 6 adet tcp flag’i bulunmaktadır: ACK,SYN,FIN,RST,URG,PSH
ACK: Verinin karşı tarafa sorunsuzca ulaştığını belirtir.
SYN: TCP bağlantısının kurulacağını belirtir. Özetle three-way-handshake’ in başlatılmasını sağlar diyebiliriz.
FIN: TCP oturumunun sonlandırılmasını sağlar.
RST: Bağlantılarda hatalar meydana geldiğinde, alıcı ve göndericinin bağlantıyı kesmesini sağlar. TCP oturumunu sağlıklı bir şekilde sonlandırmak için FIN bayrağı kullanılır.
URG: Gelen veri parçasının öncelikli olarak işleme alınmasını sağlar.
PSH: Veri parçaları içerisinde öncelik belirlemek için kullanılır.
Bir TCP oturumunun nasıl gerçekleştirildiğini daha iyi anlamak için telnet oturunumunun nasıl gerçekleştirildiğini inceleyeceğiz. Bir PC’ den bir routera telnet ile hedef port (destination port) olarak 23’den bağlandığınızı düşünün.
1. Adım: N1 (Node 1)’ de bulunan bir kullanıcı R1’ e (Router 1) telnet oturumu başlatmaktadır. Oturumun başlatılması için N1, SYN bayrağını (flag) gönderir. Hedef port numarası ise 23’ tür. N1, segment’ e (TCP OSI’ nin 4. Katmanında çalışan bir protokol olduğu için artık segmentlerden söz ediyoruz.) random olarak ürettiği sıra numarasını (sequence number) yerşleştirir. Sıra numaramızın 15433412 olduğunu varsayalım. Özetle;
TCP Bayrakları:
U A P R S F
0 0 0 0 0 0 ,Ack (A) 0 olacak ayarlanmıştır.
Destination Port: 23
Başlangıç sıra numarası:15433412 şeklindedir.
2. Adım: N1’ den gelen SYN bayrağını R1 kendi sequence number’ ı (Örneğin, 3555458765) ile cevaplar ve gelen segmenti N1’in sequence number değerini bir artırarak alındılar. (ACK). ACK, PC’ nin bir sonra göndereceği segmentin sıra numarası olacaktır. Yani 15433413 olacaktır. Burada R1, N1’ e 15433413 sıra numaralı paketi bekliyorum demiş oluyor. Özetlersek;
TCP Bayrakları:
U A P R S F
0 1 0 0 0 0
Source Port: 23
ACK: 15433413
Kendi sıra numarası:3555458765
Şeklindedir.
3. Adım: N1, R1’ nin cevabının kendisine ulaştığını bildirmek için ACK paketi gönderir. İlk üç aşama three-way-handshake olarak bilinir.
TCP Bayrakları:
U A P R S F
0 1 0 0 0 0
ACK: 3555458766
Kendi sıra numarası: 15433413
Three-way-handshake’in daha iyi anlaşılabilmesi için her bir adımda gönderilen segmentler aşağıdaki gibi şematize edilmiştir.
4. Adım: İlk 3 adımda TCP oturumu başlatılmıştır. Bu aşamada ise veri transferi yapılmaktadır. N1 ve R1’ e göre windows size’ ı ayarlanır. Bu işlem sliding window olarak da adlandırılır. İletim sırasında gönderilen paketlerin sayısı farklı olabilir. Örneğin windows size’in 3 olduğunu düşünelim. (Konunun daha net anlaşılması için aşağıdaki şekil üzerinden örnekleme yapılmıştır.) Receiver, sender tarafından gönderilen ilk üç paketi(1-3) alıyor. Geriye ise ACK numarası olarak dört gönderiyor. Yani bu şu anlama geliyor. Daha önce göndermiş olduğun ilk paketi aldım şuan dört numaralı paketi beklemekteyim. Daha sonra sender tekrar 3 paket (4-6)gönderiyor. Receiver, sender’ a ACK 7 gönderiyor. Receiver yedi numaralı paketi beklemektedir. Window size değeri veri transferi sırasında değişebilir. Band genişliğindeki değişme buna neden olabilir.
5. Adım: N1 veri transferini tamamladıktan sonra Telnet oturumu FIN bayrağı gönderilerek sonlandırılır. TCP segmentinde yer alan FIN bayrağı 1 olarak işaretlenir.
TCP Bayrakları:
U A P R S F
0 0 0 0 0 1
6. Adım: R1, N1’ den gelen bu isteği kabul eder ve ACK ile bu isteğe cevap verir.
7. Adım: Bu aşamada oturum hala açıktır ve R1 veri gönderebilir ama R1 gönderecek herhangi bir veriye sahip değildir ve genellikle FIN bayrağı 1 olarak ayarlanmış segment gönderir. Buna TCP half close’ da denebilir.
TCP Bayrakları:
U A P R S F
0 1 1 0 0 1
8. Adım: N1, R1’ den gelen FIN isteğini ACK ile cevaplar ve telnet oturumu sonlandırılmış olur.
NOT: TCP oturumu başlatmak için 3 veya 4 segment gerekirken, sonlandırmak için 4 segment gerekmektedir.


Leave a Reply