"Enter"a basıp içeriğe geçin

TCP/IP

TCP/IP modeli

OSI modelinin aksine bir referans değildir, tam olarak paketlerin yapısını ve bölümlerini gösterir. OSI modelinde 7 katman varken, TCP/IP modelinde 4 veya daha az katman bulunur. Zaten gerçek paketler de böyledir. Wireshark ile gördüğümüz yapılar bu modele göre oluşur.

 

OSI modelindeki 5-6 ve 7. katmanlar yerine Uygulama katmanı denen tek bir katman vardır.
Paketlerde bulunan HTTP, FTTP, Telnet, DHCP, PING, DNS gibi bölümler bu katmana aittir.

OSI’deki 4. katman olan transport aynen geçerlidir. Mesajlardaki TCP yada UDP kısımları bu katmana aittirler. Bu katmanda veri segmentler halindedir.

OSI’deki 3. katman Network de aynen geçerlidir. Mesajlardaki IPv4, IPv6, ICMP gibi bölümler bu katmana aittirler. Veri paketler halindedir. Router bu katmanla ilgilenir.

OSI’deki 2 ve1. katmanlar Network erişim katmanı olarak tek parçadır. Mesajın ethernet, ARP, 802. gibi parçaları burada bulunur. Switch bu katmanla ilgilenir.

 

Wireshark porgramını kullanarak bu mesajları ve içindeki bölümleri inceleyebiliriz. En çok kullanan protokol mesajlarından bazılarına bakalım…

HTTP mesajı

En üstteki Frame bölümünü saymazsak http mesajı 4 bölümden oluşuyor. Bu bölümlerin her biri, TCP/Ip modelindeki bir katmandır.

Ethernet II yazan kısım Network erişim katmanına ait olan ethernet bölümüdür.

Transmission Control Protocol bölümü olduğuna göre HTTP protokolü mesajları TCP sayesinde taşınıyor demektir. Ayrıca HTTP mesajları 80. port üzerinden taşınır.

Internet Protocol version 4 kısmı, network protokolü olarak IPv4 kullandığını gösterir.

Son olarak en altta da Hypertext Transfer Procol kısmı var. Bu kısım da Uygulama katmanını oluşturur.

Görüldüğü gibi bir HTTP mesajına baktığımızda OSI modelindeki gibi 7 değil, TCP/IP modelindeki gibi 4 kısım vardır. Ancak her bir kısmın içeriğine baktığımızda OSI modelindeki referans alınan işlevler için kısımlar olduğunu söyleyebiliriz. Bu bölümlerden bazılarının içeriğini yazının ilerleyen yerlerinde inceleyeceğiz.

 

ICMP (ping) mesajı

Ping atarak oluşturduğumuz ICMP mesajı 3 bölümden oluşuyor. Ethernet II olduğuna göre Network erişim katmanında Ethernet II protokolü kullanılıyor. Aynı şekilde IPv4 kısmı da önceki gibi. Ancak Transport bölümü bu mesajda yok. Yani TCP veya UDP protokollerinin ikisine de ihtiyaç duyulmamış. En altta da Uygulama katmanı bölümü olarak Internet Control Message Protocol yani ICMP kullanılmış. Wireshark programında soldaki oka tıklayacak bölümün içeriğine bakabiliriz.

Gördüğümüz gibi herhangi bir şifreleme olmadığından mesajla ilgili her türlü bilgiyi görebiliyoruz. ICMP bölümünün alt bölümü olan Data bölümünde mesaj içeriğini de görebiliriz.  Siz de kendi bilgisayarınızda wireshark programını çalıştırıp konsoldan ping atarak bu mesajların içeriğini inceleyebilirsiniz.

DNS mesajı

DNS mesajına baktığımızda Ethernet ve IPv4 bölümleri aynı. Ancak DNS’de TCP yerine User Datagram Protocol var. Yani DNS mesajları Taşıma katmanında TCP değil UDP kullanır. Ve 53. port üzerinden taşındığını görebiliriz.

Domain Name System bölümünde responce yazıyor. Bu durumda bunun bir DNS responce mesajı olduğunu anlayabiliriz. İçeriğine baktığımızda taşıdığı domain de görülebilir.

 

Telnet mesajı

Uzak makineye erişmede kullandığımız Telnet mesajını evde gözlemleyemediğim için Cisco Packet Tracer programını kullandım. Packet Tracer programının simulation özelliği sayesinde de mesajların içeriğine bakabiliriz. Ben de Packet Tracer üzerinden bir Telnet mesajı oluşturarak içeriğine baktım.

Telnet mesajının içine baktığımızda Ethernet II kısmı var. Telnet mesajları TCP protokolüyle taşınıyor ve 23. portu kullanıyor. Ip versiyounu Ipv4. En altta da uygulama bölümü yani TELNET var.

TFTP mesajı

Dosya transferinde kullanılan TFTP mesajı oluşturmak için de Packet Tracer kullandım

Yine Ethernet ve IPv4 kullanılmış.

Taşıma protokolü olarak UDP tercih edilmiş. Bölüm içeriklerine baktığımızda UDP’nin TCP’ye göre çok daha az yer kapladığını görebiliriz.

IPv4 bölümünü daha detaylı inceleyelim:

IPv4

Aşağıda bir ICMP mesajının tüm içeriğini görüyoruz.

 

Version bilgisine bakarak IPv4 olduğunu anlarız. Header lenght ve total lenght bilgilerine bakarak boyutu hakkında bilgi edinebiliriz.

DSF paketin önceliğini belirtir.

Büyük mesajlar tek seferde yollanamayacağı için parçalar halinde gönderilir. Hedef cihazda birleştirilirken doğru birleştirmek için her parçaya bir flag numarası eklenir. Böylece birleştirirken hata oluşmaz. Daha sonra identification bilgisine göre birleşir ICMP mesajı küçük olduğundan tek seferde yollanabilmiş.  Terminalde ping atarken -l parametresini ekleyerek yollanacak deneme paketinin boyutunu ayarlayabiliriz. -l 2000 dediğimizde boyut tek seferde yollanabilenden büyük olduğu için parçalara ayrılıp flag eklenir. Aynı paketin ayrılmış iki parçasının identification değerleri aynı, flag değerleri farklı olur.

TTL, time to live demektir. Farklı cihazlar için TTL değeri farklıdır. Paket hedefe ulaşana kadar geçtiği her cihaz için TTL değeri 1 azalır. Böylece kaynak-hedef arasında yolda kaç cihaz geçildiği hesaplanabilir. Eğer bir paket yanlış yere yönlendirilmişse ağda kaybolabilir ve belki de hedefe hiç ulaşamayabilir.  Veya ağda döngüler oluşabilir. Bu  tarz paketlerin ağdan silinmesi için TTL kullanılır.  Kaybolan veya döngüye giren paketler çok fazla cihazdan geçer. Her cihazdan geçildiğinde TTL 1 azaldığına göre, en sonunda 0 olur ve paket imha edilir.

Mesajın tamamına baktığımızda aslında her bölümün bir sonraki bölümü tanımladığını görürüz. Ethernet bölümündeki type bilgisine bakarak sonraki bölümün IPv4 olduğunu anlarız. Aynı şekilde IPv4 bölümündeki protocol kısmına bakarak da sonraki bölümün ICMP olduğunu söyleyebiliriz.

Mesajların iç içe geçmiş matruşkalara benzetilme sebebi de budur. Her matruşka (bölüm) altındaki matruşkanın (bölümün) ne olduğunu söyler.

IPv4 bölümünün devamında da hedef ve kaynağa ait adres bilgileri bulunur.

 

ARP mesajı

ARP mesajının içinde sadece Ethernet ve ARP bölümleri bulunuyor. Zaten kullanım amacı sebebiyle taşıma ve Network katmanlarına ihtiyaç duymaz.

 

Ethernet II mesajlarının içeriği

En başta Destination ve Source MAC adresleri bulunur.

Bunun altında Type bilgisi bulunur. Yani hangi türde mesaj yollandığını gösterir.
IPv4, IPv6 veya ARP tiplerinde Ethernet II mesajı olabilir.

Type altında Frame check sequence (FCS) bilgisi bulunur. Paketin bozuk olup olmadığını anlamak için bu bilgiye bakılır. (wireshark varsayılanda göstermez.)

 

TCP (Transmission Control Protocol)

İki bilgisayar arasında bağlantı kururlurken kullanılan yöntemlerden biridir. Paketin hedefe güvenle ulaşıp ulaşmadığını kontrol eden bir mekanizmaya sahiptir. Paketlerin ulaşıp ulaşmadığı kontrol edildiği için güvenli bir veri aktarımı sağlar.

SSH,FTP,HTTP,HTTPS,TELNET gibi protokollerde TCP kullanılırdığını ve içlerinde tcp bölümü olduğunu  gördük.

TCP tek başına da bir mesaj olabilir. Bu işlemleri başlatmak ve bitirmek için ilk olarak Three Way Handshake mesajları yollanır ve kaynak ile hedef arasındaki bağlantının sorunsuz olduğu kontrol edilir.

 

Bağlantı başlarken:
Kaynak hedefe istek yollar (SYN)
Hedef isteği aldığını söyler ve kabul ettiğini söyler (SYN+ACK)
Kaynağımız hedefin isteğini aldığını söyler.

Bağlantı biterken:
Kaynak hedefe bitirmek istediğinş söyler (FIN)
Hedef, bitirme isteğini aldığını ve kabul ettiğini söyler (FIN+ACK)
Kaynak bitirme isteğinş aldığını söyler (ACK)

Aşağıda HTTP başlatmak için oluşturulan Three Way Handshake mesajlarından birinin içeriğini görüyoruz (80. port olmasından anladık).

 

Ayrıca her yollanan paketin gidip gitmediğini kontrol etmek için de paketlerin içinde TCP bölümü bulunur (Önceki paketlerde gördüğümüz gibi). Kaynaktan yollanan paket hedefe ulaştığında hedef bu paketi aldığına dair bir ack (onay) mesajı yollar.
Kaynağın bu ack mesajını beklemesi vakit kaybı olacağından ack mesajını beklemeden diğer paketi de yollar.

Yollanan her paket için bir sayaç başlar. Eğer sayaç dolana kadar o paketin gittiğine dair ACK mesajı gelmemişse o paket düzgün iletilmemiş kabul edilir ve tekrar yollanır (TCP Retransmission).

Hedef cihazın bir veri işleme limiti olduğundan, cihazın buffer’ının dolmaması için belli aralıklarla paket yollama işleminin ara verilmesi gerekir. Hedef cihaz ACK mesajı yollarken buffer’ında ne kadar alan kaldığını da söyler.
Bu değere Windows size denir. Eğer gelen Ack mesajında windows size 0 ise paket yollama işlemi durur.

Mesajların doğru sırada gittiğinden emin olmak için Sequence number ve ACK number kullanılır.
Sequence number o sırada gönderilen parçanın sırasıdır.
ACK number kaynak tarafından son onaylanan (ACk mesajı alınan) parçanın numarasıdır.
Sequence number ve ACK number sayesinde her paket numaralandırıldığı için paketler tekrar birleşirken doğru sıraya koyulabilirler.

Dst port, hangi uygulama için TCP kullandığımızı söyler. Mesela 23. port ise TCP kontrolü Telnet için yapılıyor demektir. HTTP için 80’dir
Source port rastgele seçilir.

Flag bölümünde başlatma ve bitirmede kullanılan SYN, ACK, ve FIN gibi mesajlar bulunur.

UDP

TCP çok güvenli olsa da, kontrol mekanizmaları yüzünden çok yavaştır. Bu yüzden hız gerektiren uygulamalarda TCP yerine UDP (User Datagram Protocol) tercih edilir.
Ancak paketin hedefe ulaştığı garanti edilemez. Ve sıra numarası eklenmediği için paketlerin sırası da hatalı olabilir.
UDP protokolünde TCP’deki gibi kontrol mekanizmaları yoktur. Bu yüzden ses, görüntü aktarımı gibi anlık veri aktarımı gerektiren yerlerde TCP yerine tercih edilebilir.
TFTP, DNS ve SNMP gibi protokoller UDP kullanır.
UDP sayesinde veri çok hızlı bir şekilde yollanır. Ayrıca daha az bant genişliği harcar.
TCP’nin aksine UDP’de sadece veri yollanacağı zaman bağlantı kurulur.

UDP bölümü mesajın en sonunda bulunur. Sadece hedef-kaynak portları, ve uzunluk gibi bilgiler bulunur.

 

 

 

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir