29 Aralık 2013 Pazar

Notlar: Üçlü El Sıkışma - Tree Way Handshak

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

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.


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.

Üçlü el sıkışma ile ilgili özet bir gösterim şu şekildedir:




Üçlü el sıkışmayı daha iyi anlamak için TCP başlığını incelemek gerekebilir. TCP başlığı ise şu şekildedir:



Örnek - 1:
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:



2.Adım:


3.Adım:



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.

Örnek -2:
Bir başka örnek olarak da aşağıdaki iletişim kullanılabilir:

"yahoo.com" adresine gidilirken elde edilen bu paketteki 10 adım şu şekilde özetlenebilir:
1. Paket: Varsayılan ağ geçidinin IP adresi (10.0.0.138) aranır. Bu amaçla ARP yayını (broadcast) gerçekleştirilir.
2. Paket: Yayına, ağ geçidinin MAC adresi ile cevap (ARP unicast) verilir. Aynı ağda MAC adresleri ile iletişim kurulduğundan MAC yollanmıştır. MAC'in bilgisayarın ARP tablosunda olmadığı varsayılmıştır.
3. Paket: Hedef adresin DNS A kaydı sorgulanır. IPv4 adresi öğrenilmek istenmiştir.
4. Paket: Hedef adresin DNS AAAA kaydı sorgulanır. IPv6 adresi öğrenilmek istenmiştir.
5. Paket: Hedef adresin DNS A kaydı cevabı verilir.
6. Paket: Hedef adresin DNS AAAA kaydı cevabı verilir.
7. Paket: Hedef IP adresinin 80. portuna SYN gönderilir.
8. Paket: Hedef IP adresinin 80. portundan SYN ve ACK paketleri alınır.
9. Paket: Hedef IP adresinin 80. portuna ACK gönderilir.
10. Paket: İlk HTTP GET talebi gönderilir.

Kaynak:
http://siberblog.org/index.php/three-way-handshake-uclu-el-sikisma/

Hiç yorum yok:

Yorum Gönder