Wireshark Lab: TCP and UDP Supplement to Computer Networking: A Top-Down Approach, 6th ed., J.F. Kurose and K.W. Ross “Tell me and I forget. Show me and I remember. Involve me and I understand.” Chinese proverb © 2005-21012, J.F Kurose and K.W. Ross, All Rights Reserved Bu laboratuvarda TCP ve UDP protokollerini detaylı olarak inceleyeceğiz. Ayrıca PC’nizden uzaktaki bir sunucuya 150KB büyüklüğündeki bir dosya transfer anında gönderilen ve alınan TCP segmentlerinin izini (trace) inceleyeceğiz. Güvenilir data transferi sağlamak için TCP’nin dizi ve doğrulama numaraları (sequence and acknowledgement numbers) üzerinde çalışacağız. Kısaca TCP bağlantı kurulumuna bakacağız ve bilgisayarınız ile sunucu arasındaki TCP bağlantısının performansını (birim zamanda transfer edilen data miktarını/çıktıyı ve data paketinin gönderilip ona onay mesajının gelmesi sürecinde geçen zamanı [throughput and round-trip time]) araştıracağız. 1. Bilgisayarınızdan uzak bir sunucuya birçok data bloğunun transferi (bulk transfer) esnasında TCP paketlerinin yakalanması TCP’yi incelemeye başlamadan önce, PC’nizden uzaktaki bir sunucuya bir dosyanın TCP transferinin izini (trace) elde etmek için Wireshark programını kullanmaya ihtiyacımız olacaktır. Bunun için bilgisayarınızda tutulan bir dosyanın (Alice Harikalar Diyarında’nın ASCII tekstini içeren) ismini girmenizi isteyen bir web sayfasına erişim sağlamanız, daha sonra bu dosyayı http POST metodu kullanarak bir web sunucuya transfer iletmeniz gerekmektedir. GET metodundan ziyade POST metodu kullanıyoruz, çünkü büyük miktarda bir veriyi bilgisayarınızdan başka bir bilgisayar/sunucuya transfer etmek istiyoruz. Bilgisayarınızdan gönderilen ve alınan TCP segment’lerinin izini elde etmek için tabi ki Wireshark programının bu süre zarfında çalışıyor vaziyette olması lazım. Aşağıdakileri sırası ile gerçekleyiniz: Web browser’ı çalıştırıp http://gaia.cs.umass.edu/wireshark-labs/alice.txt sayfasına giriniz ve Alice Harikalar Diyarında’nın ASCII kopyasını alıp bilgisayarınızda bir yere kaydediniz. Sonra http://gaia.cs.umass.edu/wireshark-labs/TCP-wireshark-file1.html sayfasına giriniz. Aşağıdaki gibi bir ekranla karşılaşacaksınız: Daha önce kaydetmiş olduğunuz Alice Harikalar Diyarında’nın tekst dosyasının (alice.txt) yolunu “browse” butonunu kullanarak gösteriniz. Hemen “Upload alice.txt file” butonuna basmayınız. Şimdi Wireshark’ı başlatıp paket yakalama işine başlayın (Capture->Start). Sonra “Wireshark Packet Capture Options” penceresinden OK ye basınız. (burada herhangi bir seçeneği seçmeye gerek yok) Tekrar tarayıcıya dönerek “Upload alice.txt file” butonuna basarak alice.txt dosyasının “gaia.cs.umass.edu” sunucusuna yüklenmesini sağlayınız. Dosya yüklendikten sonra tarayıcı pencerenizde tebrikler mesajı göreceksiniz. Wireshark paket yakalamayı durdurun. Wireshark ekranınız aşağıdaki gibi görünecektir. 2. Yakalanan ize (trace’e) ilk bakış Detaylı olarak TCP bağlantısının davranışını incelemeden önce izi üst seviye bir inceleyelim. Öncelikle yakalanan paketleri “tcp” yazarak filtreleyelim. (küçük harflerle ve tırnak işareti olmaksızın) Görmeniz gereken şey bilgisayarınızla “gaia.cs.umass.edu” sunucusu arasındaki TCP ve HTTP mesajlar topluluğu. Ilk olarak SYN mesajı içeren üç-yollu bir el sıkışma (kontrol mesajlarının değişimi) göreceksiniz. HTTP POST mesajı göreceksiniz. Sonra kullandığınız Wireshark versiyonuna bağlı olarak bilgisayarınızdan “gaia.cs.umass.edu” sunucusuna gönderilen “HTTP Continuation” mesajlarını göreceksiniz. “HTTP Continuation” mesajları, bir HTTP mesajını taşımak için birden fazla TCP segmentinin kullanıldığını gösteriyor. (Daha önce HTTP Wireshark labında yapılanları hatırlayın.) Wireshark’ın sonraki versiyonlarında Wireshark ekranının Info sütununda “[TCP segment of a reassembled PDU PDU-Protocol Data Unit-]” göreceksiniz. Bu, üst katmandaki bir protokole (örneğin burada HTTP) ait mesajların datasını içeren TCP segmentini gösterir. “gaia.cs.umass.edu” sunucundan bilgisayarınıza dönen TCP ACK segment’lerini de göreceksiniz. Aşağıdaki soruları cevaplayınız. Soruları cevaplandırırken trace içindeki paketlerin ekran görüntülerini de ekleyiniz. 1. gaia.cs.umass.edu sunucuna data transfer etmek için kullanılan istemcinin IP adresi ve TCP port numarası nedir? 2. gaia.cs.umass.edu sunucunun IP adresi ve TCP port numarası nedir? Bu laboratuvarda HTTP’den ziyade TCP ile ilgilenileceğinden yakalanan HTTP paketlerini göstermemek için Analyze->Enabled Protocols menüsünden HTTP kutusundaki check işaretini kaldırıp OK’ye basalım. Şimdi Wireshark penceresi aşağıdaki gibi olacaktır: Şimdi bilgisayarınızla gaia.cs.umass.edu segment’lerini inceleyelim. sunucusu arasında gönderilen TCP 3. TCP Temelleri TCP segment’leri ile ilgili aşağıdaki soruları cevaplandırınız: 3. Bilgisayarınızla gaia.cs.umass.edu sunucusu arasında TCP bağlantısını başlatmak için kullanılan TCP SYN segment’inin dizi numarası nedir? Bir TCP segment’i içindeki hangi şey bu segmentin SYN segment’i olduğuna işaret eder? 4. SYN segment’ine gaia.cs.umass.edu sunucusunun göndermiş olduğu SYNACK segment’inin dizi numarası nedir? SYNACK segment’i içindeki Acknowledgement alanındaki değer nedir? Bir TCP segment’i içindeki hangi şey bu segmentin SYNACK segment’i olduğuna işaret eder? 5. HTTP POST komutunu içeren TCP segment’inin dizi numarası nedir? Bunu bulabilmek için Wireshark penceresinin en altındaki paket içerik alanına bakılması gerekir. (HTTP ile ilgili sorulduğu için tekrar Analyze->Enabled Protocols menüsünden HTTP kutusu aktif hale getirilmeli) 6. TCP bağlantısındaki HTTP POST komutunu içeren TCP segment’i ilk segment olarak düşünün. TCP bağlantısındaki ilk altı segment’in (HTTP POST’u içeren segment de dahil) dizi numaraları nedir? Her segment ne zaman gönderildi? Her segment’e ACK ne zaman geldi? Her segmentin gönderilmesi ve ACK gelmesi arasındaki zaman farkını (RTT) hesaplayın. Her ACK’tan sonra EstimatedRTT değeri nedir? Aşağıdaki gibi bir tablo oluşturun. Gönderilme zamanı ACK alınma zamanı RTT (saniye) Segment 1 Segment 2 Segment 3 Segment 4 Segment 5 Segment 6 Daha sonra her ACK’tan sonra EstimatedRTT’yi hesaplayın. İlk segment için EstimatedRTT değeri ölçülen RTT değerine eşittir. Diğerleri için aşağıdaki denklemi kullanarakhesaplayınız. EstimatedRTT = α * EstimatedRTT + (1 - α) SampleRTT (α için tavsiye edilen aralık 0.8-0.9) 7. İlk altı TCP segment’ninuzunluğune kadardır? 8. Tüm trace dosyası için düşünüldüğünde alıcıda ilan edilen minimum buffer büyüklüğü (alıcı pencere büyüklüğü) nedir? 9. Bir ACK’te alıcı tipik olarak ne kadar data onaylar? (Ardışıl iki ACK’ın onaylanmış sıra numaraları arasındaki fark iki ACK arasındaki sunucudan alınan datayı gösterir) Aşağıdaki tabloyu ilk 5 ACK için doldurunuz. Alıcının aldığı diğer her segment’i de onayladığı bazı durumları (ACK numarası vererek) belirler misiniz? (Bunu cevaplarken MSS-maximum segment size’ı düşünün. Diğer segmenti de onaylıyor ise onaylanmış data 2 katına çıkmış demektir. ) Onaylanmış sıra numarası Onaylanmış data ACK 1 ACK 2 ACK 3 ACK 4 ACK 5 ACK 5 …. 10. TCP bağlantısı için birim zamanda transfer edilen data miktarını (throughput) belirleyiniz? Nasıl hesapladığınızı açıklayınız. Wireshark Lab: UDP (User Datagram Protocol) Bu kısımda UDP taşıma protokolüne hızlı bir göz atacağız. Bu bölüme kadar artık bir Wireshark uzmanı oldunuz. Yapılacak olanlar önceki laboratuvarlarda olduğu gibi adımlar detaylı verilmeyecek. UDP Temelleri Wireshark’ta paket yakalamayı başlatın sonra bilgisayarınızda birkaç UDP paketi göndermeye almaya sebep olacak bir şeyler yapın. Örneğin bazı sitelere tarayıcınız yardımı ile girmeniz yeterli; çünkü UDP, DNS (domain name server) tarafından tarayıcıya yazdığınız adreslerin bulunduğu makinelerin IP adreslerini bulmak için kullanılır. Paket yakalamayı durdurduktan sonra bilgisayarınızdan gönderilen veya alınan UDP paketlerini incelemek için “udp” yazarak filtreleme yapın. UDP paketlerinden birini seçerek içeriğini detaylı olarak inceleyin. Aşağıdaki soruları cevaplayınız: 1. UDP paketlerinden birini seçin. UDP başlığı (header) içinde ne kadar alan olduğunu adları ile beraber söyleyin. 2. Her bir UDP başlık alanının uzunluğunu (bytes) bulunuz. 3. UDP başlığındaki uzunluk alanı neyin uzunluğunu gösteriyor? Cevabınızı kanıtlayınız. 4. UDP payload’unda (taşıma kapasitesi) maksimum ne kadar byte veri olabilir? İkinci soru ile bunu ilişkilendiriniz. 5. Mümkün olabilecek en büyük port numarası nedir? 6. İki tane UDP paketi belirleyin. Biri bilgisayarınızın gönderdiği, diğeri ilk pakete cevap olan. Bu iki UDP paketi arasındaki ilişkiyi inceleyin. 7. (Ekstra Puan) Boyutu küçük bir UDP paketi belirleyip elinizle bu paketin check’um'ını hesaplayın. Programda görülen değerle karşılaştırın.
© Copyright 2024 Paperzz