26 Şubat 2013 Salı

Three Way Handshake (Üçlü El Sıkışma)

Ağ üzerinde iki bilgisayar arasında TCP bağlantısının sağlanmasında ilk aşamaya Üçlü El Sıkışma (Tree Way Handshake) denilmektedir. Şimdi bu bağlantının sağlanmasını genel hatları ile anlatalım:

  1. Bağlantıyı başlatacak İstemci bilgisayar TCP segmenti başlığı içerisinde SYN (Synchronize) bitini "1" set eder. Paketleri kontrol etmek amacıyla bir sıra numarası üretilir. Bu sıra numarasına SEQ.Num. (Sequence Number) denilmektedir. Örneğimizde ilk sıra numarası 3517'dir. Bu ilk sıra numarası işletim sistemlerine göre farklılık gösterir.

  2. İstemciden gönderilen paketi alan Sunucu bağlantı isteğini onaylamak için TCP segmenti başlığı içerisinde SYN+ACK (Acknowledgement) bitlerini "1" set eder. Sunucu aldığı paketteki sıra numarasını bir artırır 3517+1=3518 bu numara İstemci bilgisayarın bir sonraki göndereceği paket numarasıdır. Bu numara değeri ACK.Num. (Acknowledgment Number) alanına yazar. Sunucu da kendi paketlerini kontrol amaçlı bir sıra numarası üretir. Örneğimizde Sunucunun ürettiği ilk sıra numarası da 7349'dur. Bu sıra numarasını SEQ.Num. alanına yazar ve paketi tekrar İstemciye yollar.

  3. Bağlantı sağlamanın son aşaması olarak İstemci bilgisayarından Sunucu bilgisayarına bir paket daha iletilir. Bu pakette TCP segmenti başlığı içerisinde ACK biti "1" set edilir. ACK.Num. alanına Sunucu bilgisayarın gönderdiği ACK.Num. değeri 7349 bir artırılarak 7349+1=7350 yazılır. SEQ.Num. değeri İstemci bilgisayarın sıradaki paket numarasıdır. Yani İstemci bilgisayarının ilk gönderdiği sıra numarası Sunucu bilgisayarı tarafından bir artırılmış ve İstemci'ye yeniden  gönderilmiş olan 3518 numarası yazılır ve paket Sunucu bilgisayarına gönderilir.


3Way-Handshake
Toplamda 3 paket ile TCP bağlantısı sağlanmış olur.

Bağlantı sağlandıktan sonra artık paketler tek tek gönderilmez. Bundan sonraki paketler örneğin iletilecek dosyanın büyüklüğü, ağ hızı vb. etkenler göz önünde bulundurularak işletim sistemine göre belirli bir algoritma ile iletişim devam eder.

Daha açıklayıcı olması için bu 3 adımı Wireshark ile gösterelim. Yukarıdaki anlatımdan tek farkı SEQ.Num. ve ACK.Num. değerleridir.

1. Adım:

3Way-Handshake01

 

2.Adım:3Way-Handshake02

 

3.Adım:

3Way-Handshake03

 

NOT: Önemli bir hatırlatma yapmakta fayda vardır. Wireshark programı paketlerin kolay incelenmesini sağlamak amacı ile SEQ.Num. değerini varsayılan ayarlarında sıfır "0" olarak başlatır. Bu ayarı devre dışı bırakıp SEQ.Num. değerinin orjinal numarasını görmek için ayarlama yapmak gerekir. Bu ayar için Wireshark > Edit > Preferences... > Protokols > TCP seçilir ve sağ pencereden Relative sequence numbers: kutusunda bulunan işaret kaldırılır.

Hiç yorum yok:

Yorum Gönder