Sitemap

PING

8 min readSep 21, 2024

--

Ping, ağ iletişiminde önemli bir araçtır ve bilgisayarlar arasında bağlantıyı kontrol etmek, ağ sorunlarını teşhis etmek için kullanılır. Ancak, bu aracın varlığını ve neden ihtiyaç duyulduğunu anlamak için ağ protokollerinin tarihine ve gelişimine biraz daha yakından bakmak gerekir.
Ping’in Tarihçesi ve Neden İhtiyaç Duyuldu?

1. Ağların İlk Dönemi:

  • 1960'lar ve 1970'lerde, ağ teknolojileri yeni yeni gelişmekteydi. Bilgisayarlar, fiziksel olarak birbirine bağlı olsalar bile, iletişimin güvenilir bir şekilde gerçekleşip gerçekleşmediğini anlamanın kolay bir yolu yoktu. Ağdaki cihazların birbirine ulaşabilirliği hakkında bilgi edinmek için bir mekanizmaya ihtiyaç vardı.

2. TCP/IP ve ICMP Protokollerinin Gelişimi:

  • 1970'lerin sonu ve 1980'lerin başında, TCP/IP protokolü geliştirilirken, ağ üzerinden mesajların nasıl güvenli ve doğru bir şekilde iletileceği üzerine yoğunlaşıldı. Bu süreçte, ağda meydana gelebilecek hataların ve bağlantı sorunlarının bildirilmesi için bir protokol gerekti. İşte bu noktada ICMP (Internet Control Message Protocol) ortaya çıktı. ICMP, TCP/IP protokol ailesinin bir parçası olarak, ağ sorunlarını bildirmek ve teşhis etmek amacıyla geliştirildi.

3. Ping’in İcadı:

  • Ping, 1983 yılında Mike Muuss tarafından geliştirildi. Muuss, UNIX sistemlerindeki bir ağ sorununu teşhis etmek için bir araç arıyordu, fakat bu ihtiyacını karşılayacak bir araç bulamayınca kendi çözümünü geliştirdi. Ping, bir sonar sisteminin çalışmasına benzer şekilde, bir paketi gönderip yanıtın geri gelme süresini ölçerek hedef cihazın ağda olup olmadığını ve yanıt verme süresini kontrol etmek amacıyla geliştirildi.
  • “Ping” ismi de buradan gelir; bir denizaltının sonar sistemine gönderdiği sinyalin (ping) hedefe ulaşıp geri dönmesini andırır.

4. Neden Ping’e İhtiyaç Duyuldu?

  • Ağ Sorunlarını Teşhis Etme: Bilgisayar ağlarının büyümesiyle birlikte, kullanıcılar ve sistem yöneticileri, bir cihazın ağda ulaşılabilir olup olmadığını ve ağın ne kadar hızlı yanıt verdiğini kontrol etmek istediler. Ping, bu ihtiyaca doğrudan cevap veriyordu.
  • Ağ Performansını İzleme: Bir ağdaki gecikme sürelerini (latency) ölçmek, ağın performansını değerlendirmek için hayati önem taşır. Ping, basit bir komutla bu gecikme sürelerini ölçmeyi mümkün kıldı.
  • Ağdaki Cihazların Durumunu Kontrol Etme: Özellikle büyük ağlarda, cihazların ağda olup olmadığını düzenli olarak kontrol etmek zor olabilir. Ping, bir cihazın online olup olmadığını hızlıca öğrenmek için kullanışlıdır.

Ping Nasıl Çalışır?

Ping, ICMP protokolünün bir parçası olan Echo Request ve Echo Reply mesajlarını kullanır. Ping komutu, hedef cihaza bir ICMP Echo Request paketi gönderir ve cihazdan bir ICMP Echo Reply yanıtı almayı bekler. Bu yanıt alındığında, komut şu bilgileri sağlar:

  • Hedef cihaza ulaşılıp ulaşılamadığı.
  • Hedef cihazın yanıt süresi (gecikme süresi).
  • Veri paketinin kaç kayıp yaşadığı.

Ping’in Önemi

  • Ağ Yönetimi: Ping, ağ yöneticileri tarafından yaygın olarak kullanılır. Hedef cihazın erişilebilirliğini kontrol etmek, ağ bağlantılarını test etmek ve sorunları teşhis etmek için vazgeçilmez bir araçtır.
  • Son Kullanıcılar: Bilgisayar kullanıcıları da ping komutunu, internete bağlanma sorunlarını gidermek veya belirli bir web sitesine erişimde problem yaşayıp yaşamadıklarını kontrol etmek için kullanabilirler.

Sonuç olarak, ping, ağların sağlıklı çalışıp çalışmadığını kontrol etmek için kullanılan temel araçlardan biridir. Ağ teknolojilerinin gelişimiyle birlikte ortaya çıkmış ve günümüzde de ağ yönetiminde hala vazgeçilmez bir rol oynamaktadır.

PING konusunu anlamak için öğrenilmesi gereken konular:

ICMP | Raw Socket | Internet Checksum | DNS

ICMP nedir, nasıl çalışır ?

ICMP Echo Request ve ICMP Echo Reply, ICMP (Internet Control Message Protocol) protokolü içinde kullanılan iki temel mesaj türüdür. Bu mesajlar, bir cihazın ağ üzerinden başka bir cihazın ulaşılabilir olup olmadığını kontrol etmek için kullanılır. Genellikle “ping” komutuyla ilişkilendirilirler.

ICMP Echo Request Nedir?

  • Tanım: ICMP Echo Request, bir cihazın başka bir cihaza “Seni görebiliyor muyum?” diye sormasını sağlayan bir mesajdır. Bu, ağ üzerindeki belirli bir IP adresine veya cihaza, o cihazın yanıt verip veremeyeceğini kontrol etmek için gönderilir.
  • Mesaj Türü: Echo Request mesajının ICMP türü 8'dir. Bu, mesajın bir "istek" olduğunu belirtir.
  • Kullanım Amacı: Bir ağ yöneticisi veya kullanıcı, bir hedef cihaza (örneğin bir sunucuya) ping komutunu çalıştırdığında, bu cihaz bir ICMP Echo Request mesajı alır.

ICMP Echo Reply Nedir?

  • Tanım: ICMP Echo Reply, bir cihazın kendisine gönderilen ICMP Echo Request mesajına yanıt verdiğini gösteren mesajdır. Bu mesaj, “Evet, buradayım” anlamına gelir.
  • Mesaj Türü: Echo Reply mesajının ICMP türü 0'dır. Bu, mesajın bir "yanıt" olduğunu belirtir.
  • Kullanım Amacı: Hedef cihaz, bir ICMP Echo Request aldığında, bu isteğe bir ICMP Echo Reply ile yanıt verir. Bu yanıt, paketi gönderen cihaza geri döner ve hedef cihazın ağa bağlı ve ulaşılabilir olduğunu gösterir.

Nasıl Çalışır?

1. Ping Komutu ve Echo Request:

  • Bir kullanıcı, ping komutunu çalıştırır ve belirli bir IP adresine veya alan adına ping atar.
  • Kullanıcının cihazı, hedef cihaza bir ICMP Echo Request paketi gönderir.

2. Echo Request Paketi:

  • Bu paket, ICMP protokolünü kullanarak ağ üzerinden hedef IP adresine yönlendirilir.
  • Echo Request, hedef cihaza ulaştığında, bu cihaz paketi alır ve bir Echo Reply mesajı hazırlamaya başlar.

3. Echo Reply Yanıtı:

  • Hedef cihaz, ICMP Echo Request’e yanıt olarak bir ICMP Echo Reply mesajı oluşturur ve bunu, isteği gönderen cihaza geri gönderir.
  • Bu yanıt mesajı, orijinal paketin geldiği kaynağa geri döner.

4. Yanıtın İşlenmesi:

  • Ping komutunu başlatan cihaz, gelen ICMP Echo Reply paketini alır ve bu yanıtı analiz eder.
  • Yanıt alındığında, hedef cihazın ağa bağlı ve erişilebilir olduğu anlaşılır. Ayrıca, paketin gidiş ve dönüş süresi (RTT — Round Trip Time) hesaplanarak ağın gecikme süresi ölçülür.

Neden Önemlidir?

  • Bağlantı Kontrolü: ICMP Echo Request ve Echo Reply, ağ bağlantılarının çalışıp çalışmadığını kontrol etmek için en yaygın kullanılan yöntemdir. Bu yöntemle, bir cihazın ağa bağlı olup olmadığını kolayca kontrol edebilirsiniz.
  • Ağ Sorunlarını Teşhis Etme: Bu mesajlar, ağdaki olası sorunları tespit etmede hayati rol oynar. Örneğin, bir cihazdan Echo Reply alınamıyorsa, bu cihazın ağa bağlı olmadığını veya bir bağlantı sorunu yaşandığını gösterebilir.
  • Ağ Performansını İzleme: Yanıt süresi (RTT), ağ performansını izlemek için önemli bir metriktir. Bu, ağ gecikmelerini ve olası performans sorunlarını belirlemek için kullanılabilir.

Sonuç olarak, ICMP Echo Request ve Echo Reply mesajları, ağ bağlantılarının durumunu kontrol etmek ve sorunları teşhis etmek için kritik öneme sahip basit ama etkili araçlardır. Ping komutu bu mesajlar üzerine inşa edilmiştir ve günümüzde ağ yönetiminde hala yaygın olarak kullanılmaktadır.

Raw socket nedir , nasıl çalışır ?

Raw socket, ağ programlamasında kullanılan bir tür sokettir ve ağ paketlerini doğrudan işlemek için kullanılır. Bu soket türü, geleneksel TCP veya UDP soketlerinin aksine, protokol başlıkları (IP başlıkları, TCP/UDP başlıkları vb.) dahil olmak üzere ağ paketlerinin tamamını işleyebilmenizi sağlar. Bu, ağ programcılarına ve güvenlik araştırmacılarına, daha düşük seviyede ağ iletişimi üzerinde tam kontrol sağlar.

Raw Socket Nedir?

  • Tanım: Raw socket, ağ paketlerini tam anlamıyla “ham” bir şekilde işlemek için kullanılan bir soket türüdür. Bu, uygulamaların IP başlıkları ve diğer protokol verilerini manuel olarak oluşturmasına ve işlemesine olanak tanır.
  • Kapsam: Raw socket kullanarak, TCP, UDP gibi belirli bir protokolü seçmek yerine doğrudan IP seviyesinde çalışırsınız. Bu, ICMP, IGMP veya özel protokoller gibi IP tabanlı herhangi bir protokolü işlemek için uygundur.

Raw Socket’in Özellikleri

  1. Tam Kontrol: Raw socket kullanarak, ağ katmanında gönderilen veya alınan paketlerin tamamı üzerinde tam kontrol sahibi olursunuz. Bu, kendi özel başlıklarınızı ve paket yapılarını oluşturmanıza olanak tanır.
  2. Protokol Başlıkları: TCP veya UDP gibi üst düzey protokollerde, başlıklar otomatik olarak ağ yığını tarafından oluşturulur. Ancak raw socket kullanırken, bu başlıkları kendiniz oluşturmanız gerekir. Bu, başlık bilgilerini incelemek veya manipüle etmek için kullanışlıdır.
  3. Güvenlik ve İzleme: Raw socket’ler genellikle güvenlik uygulamaları (örneğin, paket izleyicileri veya ağ saldırılarını tespit eden sistemler) ve ağ teşhis araçları (örneğin, ping veya traceroute) için kullanılır. Bu tür uygulamalar, ham ağ paketlerini dinlemek, analiz etmek veya manuel olarak oluşturmak için raw socket’lere ihtiyaç duyar.
  4. Platform Desteği: Raw socket’ler genellikle Unix benzeri işletim sistemlerinde (Linux, BSD, macOS) desteklenir. Windows gibi diğer işletim sistemlerinde de kullanılabilir, ancak kullanım kısıtlamaları olabilir.

Raw Socket Kullanımı

Raw socket oluşturmak ve kullanmak için aşağıdaki adımları izleyebilirsiniz:

  1. Socket Oluşturma:
  • Raw socket, socket() fonksiyonu kullanılarak oluşturulur. Aşağıdaki örnek, bir ICMP protokolü için raw socket oluşturur:

int sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

Get Enes Özmert’s stories in your inbox

Join Medium for free to get updates from this writer.

Burada:

  • AF_INET: IPv4 adres ailesini belirtir.
  • SOCK_RAW: Raw socket türünü belirtir.
  • IPPROTO_ICMP: ICMP protokolü ile çalışacağınızı belirtir.

Paket Gönderme:

  • Raw socket kullanarak, kendi başlıklarınızı oluşturduktan sonra sendto() fonksiyonu ile bir paket gönderebilirsiniz:

sendto(sockfd, packet, packet_len, 0, (struct sockaddr*)&dest_addr, sizeof(dest_addr));

Paket Alma:

  • Gelen paketleri dinlemek için recvfrom() fonksiyonunu kullanabilirsiniz:

recvfrom(sockfd, buffer, sizeof(buffer), 0, (struct sockaddr*)&src_addr, &addr_len);

Raw Socket Kullanımına Dair Güvenlik Notları

  • Yetkiler: Raw socket’ler, düşük seviyede ağ erişimi sağladıkları için güvenlik riski oluşturabilirler. Bu nedenle, raw socket kullanımı genellikle yönetici (root) ayrıcalıkları gerektirir.
  • Kötüye Kullanım: Raw socket’ler, saldırganlar tarafından ağ üzerindeki paketleri izlemek, değiştirmek veya sahte paketler oluşturmak amacıyla kullanılabilir. Bu nedenle, işletim sistemleri genellikle raw socket kullanımını sınırlar veya izler.

Özet

Raw socket, ağ paketlerini ham haliyle işlemek için kullanılan bir araçtır ve ağ programlamasında derinlemesine kontrol sağlar. Bu tür bir soketle çalışmak, ICMP paketleri gibi düşük seviyeli ağ protokollerini uygulamak veya ağ trafiğini analiz etmek için gereklidir. Ancak, güvenlik ve karmaşıklık nedeniyle raw socket’lerle çalışırken dikkatli olunmalıdır.

1. ICMP (Internet Control Message Protocol)

  • Protokol Numarası: 1
  • Kullanım Alanı: ICMP, ağ cihazları arasında hata mesajlarını iletmek ve ping gibi ağ teşhis araçları için kullanılır. ICMP Echo Request ve Echo Reply mesajları, raw socket’lerle ICMP protokolünü kullanarak oluşturulabilir ve işlenebilir.
  • Raw Socket Kullanımı: Ping, traceroute gibi araçlar ICMP protokolünü kullanır ve genellikle raw socket üzerinden çalışır.

2. IGMP (Internet Group Management Protocol)

  • Protokol Numarası: 2
  • Kullanım Alanı: IGMP, multicast gruplarını yönetmek için kullanılan bir protokoldür. Multicast veri akışlarının yönlendirilmesi ve grupların yönetimi için kullanılır.
  • Raw Socket Kullanımı: Multicast gruplarının kontrolü ve yönetimi için raw socket kullanılarak IGMP paketleri oluşturulabilir.

3. TCP (Transmission Control Protocol)

  • Protokol Numarası: 6
  • Kullanım Alanı: TCP, güvenilir, bağlantı tabanlı veri iletimi sağlar. Genellikle uygulamalar bu protokolü kullanırken, raw socket ile TCP başlıkları ve segmentleri üzerinde tam kontrol sağlanabilir.
  • Raw Socket Kullanımı: Saldırı simülasyonları (örneğin, SYN flood) veya özel TCP uygulamaları için TCP segmentlerini manuel olarak oluşturup göndermek amacıyla kullanılabilir.

4. UDP (User Datagram Protocol)

  • Protokol Numarası: 17
  • Kullanım Alanı: UDP, bağlantısız, hızlı ve hafif veri iletimi sağlar. Genellikle DNS sorguları, VoIP ve video akışları için kullanılır.
  • Raw Socket Kullanımı: Özelleştirilmiş UDP paketleri oluşturmak veya paket analizi yapmak için raw socket kullanılabilir.

5. GRE (Generic Routing Encapsulation)

  • Protokol Numarası: 47
  • Kullanım Alanı: GRE, çeşitli protokolleri tünellemek için kullanılan bir protokoldür. VPN uygulamalarında yaygın olarak kullanılır.
  • Raw Socket Kullanımı: GRE tünelleme protokollerini uygulamak veya analiz etmek için raw socket kullanılabilir.

6. ESP (Encapsulating Security Payload)

  • Protokol Numarası: 50
  • Kullanım Alanı: ESP, IPsec (Internet Protocol Security) ile veri paketlerini şifrelemek ve kimlik doğrulamak için kullanılır. Güvenli veri iletimi sağlar.
  • Raw Socket Kullanımı: Güvenli iletişim ve IPsec uygulamaları için ESP başlıkları ve paketleri raw socket ile işlenebilir.

7. AH (Authentication Header)

  • Protokol Numarası: 51
  • Kullanım Alanı: AH, IPsec protokolünün bir parçasıdır ve veri paketlerinin bütünlüğünü ve kaynağını doğrulamak için kullanılır.
  • Raw Socket Kullanımı: IPsec uygulamaları için AH başlıkları raw socket ile işlenebilir.

8. OSPF (Open Shortest Path First)

  • Protokol Numarası: 89
  • Kullanım Alanı: OSPF, IP ağlarında yönlendirme (routing) işlemleri için kullanılan bir protokoldür. Genellikle büyük kurumsal ağlarda kullanılır.
  • Raw Socket Kullanımı: Yönlendirme protokollerini analiz etmek veya simüle etmek için OSPF paketleri raw socket ile işlenebilir.

9. L2TP (Layer 2 Tunneling Protocol)

  • Protokol Numarası: 115
  • Kullanım Alanı: L2TP, VPN uygulamalarında kullanılan bir tünelleme protokolüdür. İkinci katman protokollerini tünellemek için kullanılır.
  • Raw Socket Kullanımı: L2TP tünelleme işlemlerini uygulamak veya analiz etmek için raw socket kullanılabilir.

10. Özel veya Deneysel Protokoller

  • Kullanım Alanı: Özelleştirilmiş veya deneysel ağ protokollerini test etmek ve uygulamak için raw socket’ler kullanılabilir. Kendi protokolünüzü tasarlayıp bu protokolü raw socket ile işleyebilirsiniz.

Raw Socket’in Kullanım Alanları

Raw socket’ler, yukarıda belirtilen protokoller ve daha fazlası ile çalışmak için kullanılabilir. Genellikle şu alanlarda kullanılırlar:

  • Ağ Güvenliği: Paket yakalama, izleme, saldırı simülasyonları, ağ güvenlik testleri.
  • Ağ Analizi: Protokol analizi, paket manipülasyonu, performans testi.
  • Özel Ağ Uygulamaları: Özel protokollerin uygulanması, ağ trafiğinin kontrolü ve yönlendirilmesi.

Raw socket’ler, geniş bir protokol yelpazesi ile çalışabilmenizi sağlar ve ağ programlama, güvenlik araştırmaları veya özel ağ uygulamaları geliştirme gibi alanlarda büyük esneklik sunar.

--

--