NEX YAZILIM

NECMETTİN ASLAN KİŞİSEL YAZILIM GELİŞTİRME DÜŞÜNCE KEŞİF PAYLAŞIM VS GÜNLÜĞÜ

C, 11.03.2010 - 15:03
C# İle Network Programlama (2) - Network Paketlerini Analiz Etmek

 

(IP Programlamanın Temelleri - Bölüm 1, Makale 2)

 

Bir önceki başlık olan 1. dökümanda (http://www.nxyazilim.com/lookme.php?No=8) IP kavramı üzerinde biraz durduktan sonra her network programcısı için elzem olan "network paketlerini analiz etmek" konusuna giriş yapmış, gerekli olan programları (WinPcap, Windump ve Analyzer) temin edip kurma konularına değinmiştim. Daha sonra sabrımızı sınamak için pek de yakışıklı olmayan Windump ile paket analizini anlatmıştım. Bu dersin başında iyi bir network programcısı olmak için sabırlı olmanız gerektiğini tekrar hatırlatıyorum. Bundan sonraki başlıklarda temel konuları işlemeye devam edeceğim. Paket analizinden sonra C# ile ilgili temel bilgilere ve C# ile network programlama konusunda bilmeniz gerekenlere değindikten sonra uygulamaya başlayacağım ki yazdığınız kodların arkaplanda tam olarak neler yaptıklarını bilesiniz.

 

Network yapılandırılması, çeşitleri, kablolama standartları ve diğer network donanımı, network nasıl çalışır ile ilgili bilgileri internette fazlasıyla bulabilirsiniz. Konuyu dağıtmamak için bunlara kısaca bir değinip geçelim.

 

1960 'lı yılların sonlarında Hawaii Üniversitesi ALOHA adını verdiği bir geniş ağ kurdu. Üniversitenin amacı kampüsün değişik noktalarına yayılmış olan bilgisayarları birbirine bağlamaktı. Bu network modelinin günümüze kadar gelen en önemli özelliği CSMA/CD olarak adlandırılan tekniktir. CSMA/CD nin açılmış hali carrier detect,multiple access with collusion detect (taşıyıcı sinyalin algılanması, çoklu erişimce çarpışmanın tespiti). Taşıyıcı sinyalin algılanması -carrier sence- ağ kartının kablodan bilgi transfer etmeden önce belirli bir süre hattı dinlediği anlamına da gelir. Çoklu erişim, aynı kabloya birden fazla bilgisayarın bağlanabileceğini belirtir. Çarpışmanın tespiti ise hattaki verilerin çarpışmasını engellemek için alınmış bir güvenlik önlemidir. Bu eski ağ tasarımı bu günkü ethernet in temelidir.1972 yılında XEROX firması deneysel amaçlı ilk ethernet kartını üretti ve 1975 yılında ilk ethernet ürününü piyasaya sürdü. Bu ürünün orijinal versiyonu 2.95 Mbps hızında 1km kablo ile 100 den fazla bilgisayarı birbirine bağlamak üzere tasarlanmıştı. XEROX ethernet kartı çok başarılı oldu. Intel, Xerox ve Digital 10 Mbps ethernet konusunda yeni bir standart getirdiler. Oluşturulan bu standart bugün kabul gören IEEE 802.3 standartı ile büyük benzerlikler göstermektedir. Ethernet networkler değişik kablolar ile bağlanabilir. Ethernet yerel iletişim ağı altında sistemleri birbirine bağlayan bir tür kablolama ve sinyalleşme biçimidir. Bilgisayar haberleşmesinin temelinde OSI modeli geçerlidir. OSI modellemesinde ilk iki katmanda (1. katman -fiziksel- ve 2.inci katman -data link-) belirlenen Ethernet, ilk kez, 1970'lerin sonlarında, Xerox tarafından geliştirilmiştir. 1980'lerde Xerox firmasının DEC ve Intel firmalarıyla ortaklaşa yaptığı çalışmalar sonucunda, Ethernet Versiyon I. için `Blue Book Standard' (Standart Mavi Kitap) adı altında, bu versiyonun kullandığı standartları açıklayan bir kitap ortaya çıkarılmıştır.

www.nexyazilim.com/blog

Networkta verilerin nasıl iletildiği ve paket dediğimiz şeyin ne olduğu ile ilgili kısa bir bilgi verdikten sonra Analyzer ı kullanmaya başlayacağız. Paket, network (veya INTERnational NETwork olan internet:) üzerinde iletilen verilerin üzerine adres vs bilgilerin yazıldıktıktan sonra ağa çıkmak için hazır hale gelmesini ifade eder. Network üzerinde iletilen tüm veriler (bytelar) işletim sistemi (Windows, Linux vs) nin kullandığı veri iletim standardı (IP, ICMP, IPX vs) ve kullandığı protokol (TCP, UDP SNMP vs.) yazılımı tarafından paketlenerek yola çıkmak üzere ethernet kartına gönderilir. Ethernet kartı da kendi yazılımı ile paketleri ağa (kabloya) iletir. Paket ağa iletildikten sonra ya ağdaki router (yönlendirici - switch hub vs.)  paketleri gitmesi gereken cihaza yönlendirir veya ağdaki cihazlar sürekli tüm paketleri kontrol ederek kendi adreslerine yönlendirilmiş paketleri alırlar. Her network paketi bilginin iletimine yardımcı olacak çeşitli verileri içeren katmanlar (sıralanmış byte lar) içerir.

 

IP paketlerinin katman hiyerarşisini aşağıdaki şekilde şematize edebiliriz:

 

paket

 

Katmanları Analyzer yardımıyla inceleyelim:

 

Analyzer programı yardımıyla ağdaki tüm trafiği izleyebilirsiniz. Hangi ip numaralı makine nereye bilgi yollamış ne zaman almış, iletilen bilgi hangi protokol tarafından paketlernmiş, ileten cihazların MAC (Media Access Card) adresleri (üretilen her ağ aygıtının kendi MAC adresi olduğunu biliyorsunuz) nelerdir vs.. Programı kurup çalıştırdıktan sonra aşağıdaki gibi bir ekran göreceksiniz :

 

analyzer

 

En baştaki 'start capture' butonu ile yeni bir ağ trafiği izleme oturumu başlatmak istediğinizde ise aşağıdaki seçenek ekranı gelir:

 

analyzer2

 

 

Burada 'Change Source' ile ağ trafiğini izlemek istediğiniz network arayüzünü (ethernet kartınızı vs) seçebilirsiniz. Ya da birazdan anlatacağım yöntemlerle izlemek istediğiniz paketleri filtreleyebilirsiniz.

 

www.nexyazilim.com/blog

 

 

ETHERNET KATMANI

 

Network paketindeki ilk katmandır. Ağınızda üç çeşit ethernet protokolü paketi görebilirsiniz. Ethernet 802.2, Ethernet 802.3 ve Ethernet 2.0. Bunlardan 802.2 ve 802.3, IEEE (The Institute of Electrical and Electronics Engineers - LAN standartlarını belirleyen kurum) tarafından ethernet katmanı ağ trafiği için tanımlanmış standart protokoller (frame type - çerçeve tipi) dir. Ethernet sürüm 2.0 ise standart bir protokol olmamakla birlikte ethernet kullanılan protokollerden biridir. Bugün en yaygın paket standardı 802.3 tür.

 

Analyzer de seçenekleri gördüğünüz ekranda Finish butonunu tıklayarak bir ağ trafiği izleme oturumu başlatın. Trafik izlenirken bir browser yardımıyla www.google.com.tr adresine girin, aşağıdakine benzer bir ekran göreceksiniz. Bu aşamada stop butonu ile yakalamayı durdurun. Şimdi yakalanmış paketlerin listesini görüyorsunuz. Bunları biraz kurcalayın, inceleyin.

 

Aşağıda kendi bilgisayarımda aynı işlemi yaptığımda aldığım sonucu görüyorsunuz. Ethernet 802.3 başlığı altında ethernet katmanı ile ilgili bilgiler mevcut.

 

analyzer3

 

 

Her network paketi aşağıdaki bilgileri (sırasıyla) içerir.

-          6 byte lık bir alıcı cihaz MAC adresi bilgisi

-          6 byte lık bir gönderici cihaz MAC adresi bilgisi

-          2 byte lık bir protokol bilgisi

-          46 byte tan 1500 byte a kadar uzun olabilecek iletilen veri bilgisi

-          4 byte lık bir doğrulama kodu

 

Bu durumda içinde hiç iletilecek veri olmayan bir paket 6 + 6 + 2 + 4 = 18 byte lık bir paket olarak karşımıza çıkmaktadır. IP protokolünde networkta iletebileceğiniz minimum paket büyüklüğü ise 64 byte tır. Bu sınırlama (64 byte tan düşük uzunluktaki paketlerin paket olarak kabul edilmemesi) verilerin kaybolmasını engelleyen bir standarttır. Eğer gönderilecek veri 64 byte tan küçükse protokol tarafından pakete dolgu karakterleri eklenmektedir. 'Checksum' denilen doğrulama kodunu da bir formül olarak düşünebilirsiniz. Gönderici tarafta gönderilen veriler baz alınarak uygulanan belli bir formülle bulunan checksum değeri alıcı tarafta da yine aynı verilere aynı formül uygulandığında aynı çıkmalıdır, aksi taktirde paket iletilirken dış etkenler (elektrik, manyetik vs) kaynaklı bir hata oluştuğu varsayılır. Bu durumda kullandığınız protokol/yazılım ile veriler tekrar istenir (veya kötü bir yazılımda istenmez :)

www.nexyazilim.com/blog

Şimdi ethernet başlığının içerdiği Ethernet (MAC) adresi ve protokol bilgilerine yakından bir bakalım.

 

Ethernet (MAC) Adresi Bilgisi

 

Ağ cihazlarının MAC adresleri üreticiler tarafından atanır (cihaz üzerindeki çiplere kaydedilir) ve değiştirilemez. (Yazılım yoluyla sahte MAC adresi iletilebiliyordur :) Ethernet ağındaki her cihazın kendine özel bir MAC adresi olmak zorundadır. Bir MAC adresi 2 parçadan oluşur:

 

-          Üreticiyi gösteren ilk 3 byte

-          Cihaz seri numarasını gösteren son 3 byte

 

Her 3 byte, 2 üssü 24 = 16.777.215 değişik rakam alabileceğinden MAC adres atamada üreticiler açısından bir problem yaşanmayacaktır. The Internet Assigned Numbers Authority (IANA) adlı kuruluş MAC adreslerini organize ederek çakışmaların oluşmasını engellemektedir. www.iana.org sitesinde 'Internet Request For Comments (RFC)' dökümanlarında bu numaraların firmalara göre listesini bulabilirsiniz.

 

Aşağıda en çok kullanılan üreticilerin ilk 3 byte larını hex olarak görmektesiniz. (Network trafiği izleme araçları MAC adreslerini hex olarak verirler.)

 

MAC İlk 3 Byte                                                           Üretici

00000C                                                                         Cisco

00005E                                                                          IANA

0000AA                                                                        Xerox machines

0000C0                                                                         Western Digital

0000E2                                                                          Acer Counterpoint

0020AF                                                                         3COM

008064                                                                          Wyse Technology / Link Technologies

0080C2                                                                         IEEE 802.1 Committee

00AA00                                                                        Intel

02608C                                                                         3Com IBM PC; Imagen; Valid; Cisco

080002                                                                          3Com (formerly Bridge)

080009                                                                          Hewlett-Packard

08000B                                                                         Unisys

080011                                                                          Tektronix, Inc.

080020                                                                          Sun machines

080046                                                                          Sony

08005A                                                                         IBM

080069                                                                          Silicon Graphics

 

3 byte lık bir üretici tanımından sonra gelen 3 byte lık ürün seri numarasıyla birlikte 6 byte lık Ethernet (MAC) adresini elde etmiş oluyoruz. MAC adresleri aşağıdaki şekillerde gösterilir:

- Tek bir değer gibi : 0020AFFCCEC3

- İki nokta üstüstteler kullanılarak : 00:20:AF:FC:CE:C3

- Tireler kullanılarak : 00-20-AF-FC-CE-C3

- 3 Bytlık parçalara bölünerek : 0020AF-FCCEC3

 

Her cihazın özel adresine ilave olarak ethernet adresleme sistemi broadcast (yayınlama) ve multicast (çoklu hedefe gönderim) adreslerini de destekler. Broadcast adreslerde hedef adresin tüm bitleri SET edilir (1 olur). Bu durumda FFFFFFFFFFFF hex adresi elde edilir. Bu durumda ağda bulunan cihazlar Ethernet Broadcast adresine yönlendirilmiş tüm paketlere bakarlar. Bu adresleme ağdaki tüm paketleri sorgulayan protokoller için kullanışlıdır, ARP (Address Resolution Protocol, yani Adres Çözümleme Protokolü)gibi örneğin ağdaki bir terminalin belli bir IP adresini araması durumunda. (detaylara ileride gireceğiz) Multicast adresler ise ethernet adreslerin özel bir çeşididir. Sadece belli cihazlar paketleri sorgularken bu adresleri ararlar. Cihaz üzerindeki yazılım multicast adresleri algılayacak şekilde hazırlanmış olmalıdır.

 

www.nexyazilim.com/blog

 

Ethernet Protokol Tipi Bilgisi

 

Protokol bilgisi IP paketimizdeki ethernet başlığı altında bulunan bir diğer önemli bilgidir. Ethernet 2.0 paketi ile Ethernet 802.2 - 802.3 paketleri arasındaki fark protokol tipi bilgisinde ortaya çıkar. 802.2 ve 802.3 paketleri paketin aynı yerinde 2 byte lık paket büyüklüğünü gösteren bilgiyi tutarlar. Ethernet 2.0 da ise aynı yerdeki bu 2 byte lık bilgi bize paketin çözümlemesinde kullanılacak protokolün ne olduğunu verir.

 

Ethernet üretici numaralarını atayan IANA protokol bilgisi numaralarını da atamıştır. Aşağıda en çok kullanılanların listesini görebilirsiniz.

 

Değer (Hex)                                                                  Protokol

0800                                                                              IP

0806                                                                              ARP

0BAD                                                                           Banyan VINES

8005                                                                              HP Probe

8035                                                                              Reverse ARP

809B                                                                             AppleTalk

80D5                                                                             IBM SNA

8137                                                                              Novell

8138                                                                              Novell

814C                                                                             Raw SNMP

86DD                                                                            IPv6

876B                                                                             TCP/IP sıkıştırma

 

IP programlama konulu bu dökümanımızın ilerleyen kısımlarında yapacağımız IP paket analizlerinde 0800 hex değerini sıklıkla göreceksiniz.

 

Network standartları ve Ethernet katmanı ile ilgili bunca bilgiden sonra IP Katmanı na bir sonraki dökümanda değineceğim

 

www.nexyazilim.com/blog

 

YORUMLA
İsim - email
Başlık
Yorumunuz
YORUMLAR
Henüz yorum yapılmamış, ilk yapan sen ol!
CEO Müşteri İlişkileri
Ezgi MP3 Player
Haber Portalı
DYB İÇOM
C#
PHP
Network
PDA
Assembly
Hardware
XP & Vista
e - Kitap
Baloncuk
RSS (Canlı Başlıklar)
Ara
ÖTEKİLER
Ahmet Kaymaz
CE Turk
İç Mihrak