Söz Dizimi
ping6 [-CDdfHmnNoqtvwW] [-a addrtype] [-b bufsiz] [-B boundif] [-c count]
[-G sweepmaxsize[,sweepminsize[,sweepincrsize]]] [-g gateway] [-G sweep] [-h hoplimit]
[-I interface] [-i wait] [-k trafficclass] [-K netservicetype] [-l preload] [-P policy]
[-p pattern] [-S sourceaddr] [-s packetsize] [-z tclass] [--apple-connect] [--apple-time]
[--apple-print-id] [--apple-print-req] [hops ...] host
Açıklama
ping6 yardımcı programı, bir ana bilgisayardan veya geçitten ICMP6_ECHO_REPLY almak için ICMPv6 protokolünün zorunlu ICMP6_ECHO_REQUEST veri paketini kullanır. ICMP6_ECHO_REQUEST veri paketleri (``ping'ler''), bir IPv6 üstbilgisine ve RFC2463'te belgelendiği şekilde biçimlendirilmiş bir ICMPv6 üstbilgisine sahiptir. Seçenekler aşağıdaki gibidir:
-a addrtype Echo-request yerine ICMPv6 Düğüm Bilgisi Düğüm Adresleri (Node Information Node Addresses) sorgusu üretir. addrtype aşağıdaki karakterlerden oluşan bir dize olmalıdır. a yanıtlayıcının tüm arayüzlerinden tekli gönderim (unicast) adreslerini talep eder. Bu karakter belirtilmezse, yalnızca yanıtlayıcının adresine sahip olan arayüze ait adresler talep edilir. c yanıtlayıcının IPv4 uyumlu ve IPv4 eşlemeli adreslerini talep eder. g yanıtlayıcının genel kapsamlı (global-scope) adreslerini talep eder. s yanıtlayıcının siteye özgü yerel (site-local) adreslerini talep eder. l yanıtlayıcının bağlantı yerel (link-local) adreslerini talep eder. A yanıtlayıcının herhangi bir gönderim (anycast) adreslerini talep eder. Bu karakter olmadan, yanıtlayıcı yalnızca tekli gönderim (unicast) adreslerini döndürür. Bu karakterle birlikte, yanıtlayıcı yalnızca herhangi bir gönderim (anycast) adreslerini döndürür. Spesifikasyonun, yanıtlayıcının herhangi bir gönderim (anycast) adreslerinin nasıl alınacağını belirtmediğini unutmayın. Bu deneysel bir seçenektir.
-b bufsiz Soket ara bellek boyutunu ayarlar.
-B boundif Gönderim için soketi belirtilen arayüze (boundif) bağlar. Bu seçenek bir Apple eklentisidir.
-C: Soketin hücresel ağ arayüzünü kullanmasını engeller.
-c count Belirtilen sayıda (count) ECHO_RESPONSE paketi gönderildikten (ve alındıktan) sonra durur. Bu seçenek ping taramaları (ping sweeps) ile birlikte belirtilirse, her tarama belirtilen sayıda paketten oluşur.
-D: IPv6 parçalamasını (fragmentation) devre dışı bırakır.-d: Kullanılan sokette SO_DEBUG seçeneğini etkinleştirir.-f: Sel pingi (Flood ping). Paketleri geri geldikleri hızda veya saniyede yüz kez (hangisi daha fazlaysa) çıkarır. Gönderilen her ECHO_REQUEST için bir nokta “.” yazdırılırken, alınan her ECHO_REPLY için bir geri alma (backspace) karakteri yazdırılır. Bu, kaç paketin kaybolduğunun hızlı bir şekilde görüntülenmesini sağlar. Bu seçeneği yalnızca süper kullanıcı (super-user) kullanabilir. Bu, bir ağ üzerinde çok ağır bir yük oluşturabilir ve dikkatli kullanılmalıdır.
-G sweepmaxsize[,sweepminsize[,sweepincrsize]] sweepmaxsize, taramalı pingler gönderirken yükün (payload) maksimum boyutunu belirtir ve taramalar için zorunludur. sweepminsize, taramalı pingler gönderirken başlanacak yükün boyutunu belirtir -- varsayılan değer 0'dır. sweepincrsize, taramalı pingler gönderirken her taramadan sonra yükün boyutunun kaç bayt artırılacağını belirtir -- varsayılan değer 1'dir. Bu seçenek bir Apple eklentisidir.
-g gateway Hedefe giden bir sonraki geçiş noktası (hop) olarak gateway geçidinin kullanılacağını belirtir. Geçit, gönderen düğümün bir komşusu olmalıdır.
-H: IPv6 adreslerinin ters çözümlemesini (reverse-lookup) denemeyi belirtir. ping6 yardımcı programı, bu seçenek belirtilmediği sürece ters çözümleme yapmayı denemez.
-h hoplimit IPv6 hop limitini ayarlar.
-I interface Paketleri verilen arayüz adresiyle kaynaklandırır. Bu bayrak, ping hedefi bir çoklu gönderim (multicast) adresi veya bağlantı yerel/siteye özgü yerel (link-local/site-local) tekli gönderim (unicast) adresi olduğunda geçerlidir.
-i wait Her paketin gönderimi arasında wait saniye kadar bekler. Varsayılan değer, her paket arasında bir saniye beklemektir. Bekleme süresi kesirli olabilir, ancak yalnızca süper kullanıcı (super-user) 0.002 saniyeden daha küçük değerler belirtebilir. Bu seçenek -f seçeneği ile uyumsuzdur.
-k trafficclass ICMPv6 paketlerini göndermek için kullanılacak trafik sınıfını belirtir. Desteklenen trafik sınıfları BK_SYS, BK, BE, RD, OAM, AV, RV, VI, VO ve CTL'dir. Varsayılan olarak ping6, kontrol trafik sınıfını (CTL) kullanır. Bu seçenek bir Apple eklentisidir.
-K netservicetype ICMPv6 paketlerini göndermek için kullanılacak ağ servis türünü belirtir. Desteklenen ağ servis türleri BK_SYS, BK, BE, RV, AV, RD, OAM, VI, SIG ve VO'dur. Bunun varsayılan trafik sınıfını geçersiz kıldığını unutmayın (her ikisini de kullanmak için -K seçeneğinden sonra hala -k belirtilebilir). Bu seçenek bir Apple eklentisidir.
-l preload Eğer preload belirtilirse, ping6 normal davranış moduna geçmeden önce olabildiğince hızlı bir şekilde o sayıda paketi gönderir. Bu seçeneği yalnızca süper kullanıcı (super-user) kullanabilir.
-m: Varsayılan olarak ping6, çekirdeğin paketleri minimum IPv6 MTU değerine sığacak şekilde parçalamasını ister. -m seçeneği bu davranışı şu iki düzeyde bastıracaktır: Seçenek bir kez belirtildiğinde, bu davranış tekli gönderim (unicast) paketleri için devre dışı bırakılır. Seçenek birden fazla kez belirtildiğinde ise hem tekli gönderim hem de çoklu gönderim (multicast) paketleri için devre dışı bırakılır.-n: Yalnızca sayısal çıktı verir. Yanıttaki adreslerden sembolik adları çözümlemek için hiçbir girişimde bulunulmaz.-N: Düğüm bilgisi çoklu gönderim grubunu (ff02::2:xxxx:xxxx) araştırır. host, hedefin dize türündeki ana bilgisayar adı olmalıdır (sayısal bir IPv6 adresi olmamalıdır). Düğüm bilgisi çoklu gönderim grubu, verilen ana bilgisayar adına göre hesaplanacak ve nihai hedef olarak kullanılacaktır. Düğüm bilgisi çoklu gönderim grubu bir bağlantı yerel (link-local) çoklu gönderim grubu olduğundan, çıkış arayüzünün -I seçeneği ile belirtilmesi gerekir.-o: Bir yanıt paketi aldıktan sonra başarıyla çıkış yapar.
-p pattern Gönderdiğiniz paketi doldurmak için 16 adede kadar "dolgu" (pad) baytı belirtebilirsiniz. Bu, ağdaki veriye bağlı sorunları teşhis etmek için yararlıdır. Örneğin, “-p ff”, gönderilen paketin tamamen birlerden oluşacak şekilde doldurulmasına neden olur.
-P policy policy, araştırma için kullanılacak IPsec politikasını belirtir.
-q: Sessiz çıktı. Başlangıçta ve tamamlandığında özet satırları dışında hiçbir şey görüntülenmez.-r: Sesli. Herhangi bir paket alındığında çıktıya bir zil (bell - ASCII 0x07) karakteri dahil eder.-R: Sesli. Bir sonraki paket iletilmeden önce hiçbir paket alınmadığında bir zil (bell - ASCII 0x07) karakteri çıkarır. İletimler arasındaki aralıktan daha uzun olan gidiş-dönüş sürelerini karşılamak amacıyla, daha sonraki eksik paketler yalnızca alınmayan paketlerin maksimum sayısı arttığında zil sesine neden olur.
-S sourceaddr İstek paketlerinin kaynak adresini belirtir. Kaynak adres, gönderen düğümün tekli gönderim (unicast) adreslerinden biri olmalı ve sayısal olmalıdır.
-s packetsize Gönderilecek veri baytlarının sayısını belirtir. Varsayılan değer 56'dır; bu değer, 8 baytlık ICMP üstbilgi verisiyle birleştiğinde 64 ICMP veri baytına karşılık gelir. Soket ara bellek boyutunu genişletmek için -b seçeneğini de belirtmeniz gerekebilir.
-t: Echo-request yerine ICMPv6 Düğüm Bilgisi desteklenen sorgu türleri (supported query types) sorgusu üretir. -t belirtildiğinde -s seçeneğinin bir etkisi yoktur.-v: Ayrıntılı çıktı. Alınan ECHO_RESPONSE dışındaki ICMP paketleri listelenir.-w: Echo-request yerine ICMPv6 Düğüm Bilgisi DNS Adı (DNS Name) sorgusu üretir. -w belirtildiğinde -s seçeneğinin bir etkisi yoktur.-W: -w ile aynıdır, ancak 03 taslağına dayanan eski paket biçimini kullanır. Bu seçenek geriye dönük uyumluluk için mevcuttur. -w belirtildiğinde -s seçeneğinin bir etkisi yoktur.
-z tclass Belirtilen trafik sınıfını kullanır.
--apple-connect Soketi hedef adrese bağlar. Bu seçenek bir Apple eklentisidir.
--apple-time Bir paketin alındığı zamanı yazdırır. Bu seçenek bir Apple eklentisidir.
--apple-print-id Yankı (echo) kimliğini (ID) yazdırır. Bu seçenek bir Apple eklentisidir.
--apple-print-req Yankı (echo) isteğini yazdırır. Bu seçenek bir Apple eklentisidir.
hops Tür 0 yönlendirme üstbilgisine (routing header) yerleştirilecek olan ara düğümlerin IPv6 adresleri.
host Nihai hedef düğümün IPv6 adresi.
Hata yalıtımı için ping6 kullanırken, yerel ağ arayüzünün çalışır durumda olduğunu doğrulamak için öncelikle yerel ana bilgisayarda çalıştırılmalıdır. Ardından, daha uzaktaki ana bilgisayarlar ve geçitler “ping”lenmelidir. Gidiş-dönüş süreleri ve paket kaybı istatistikleri hesaplanır. Yinelenen paketler alınırsa, bu paketlerin gidiş-dönüş süreleri istatistiklerin hesaplanmasında kullanılsa da paket kaybı hesaplamasına dahil edilmezler. Belirtilen sayıda paket gönderildiğinde (ve alındığında) veya program bir SIGINT ile sonlandırıldığında; gönderilen ve alınan paket sayısını, gidiş-dönüş sürelerinin minimum, ortalama, maksimum ve standart sapmasını gösteren kısa bir özet görüntülenir.
Eğer ping6 bir SIGINFO (stty(1) için status argümanına bakın) sinyali alırsa; gönderilen ve alınan mevcut paket sayısı ile gidiş-dönüş sürelerinin minimum, ortalama, maksimum ve standart sapması, standart tamamlama mesajıyla aynı biçimde standart çıktıya yazılacaktır.
Bu program ağ testi, ölçümü ve yönetimi için tasarlanmıştır. Ağa getirebileceği yük nedeniyle, normal operasyonlar sırasında veya otomatik betiklerden ping6 kullanılması önerilmez.
Yinelenen Ve Hasarlı Paketler
ping6 yardımcı programı yinelenen ve hasarlı paketleri rapor edecektir. Bir tekli gönderim (unicast) adresine ping atarken yinelenen paketler asla oluşmamalıdır ve bunların uygunsuz bağlantı düzeyi (link-level) yeniden iletimlerinden kaynaklandığı görünmektedir. Yinelenenler birçok durumda ortaya çıkabilir ve nadiren iyi bir işarettir, ancak düşük seviyede yinelenenlerin varlığı her zaman bir alarm nedeni olmayabilir. Bir yayın (broadcast) veya çoklu gönderim (multicast) adresine ping atarken yinelenen paketlerin gelmesi beklenir, çünkü bunlar aslında yinelenen paketler değil, aynı isteğe farklı ana bilgisayardan gelen yanıtlardır.
Hasarlı paketler açıkça ciddi bir alarm nedenidir ve genellikle ping6 paketinin yolu üzerindeki bir yerde (ağda veya ana bilgisayarlarda) bozuk bir donanıma işaret eder.
FARKLI VERİ ŞABLONLARINI DENEMEK Ağ (veya ağlar arası) katmanı, veri kısmında yer alan verilere bağlı olarak paketlere asla farklı davranmamalıdır. Ne yazık ki, veriye bağlı sorunların ağlara sızdığı ve uzun süreler boyunca tespit edilemediği bilinmektedir. Çoğu durumda, sorun çıkaracak özel şablon, tamamen birler veya tamamen sıfırlar gibi yeterli “geçişe” sahip olmayan veya neredeyse tamamen sıfırlar gibi sınırda olan bir şablondur. Komut satırında (örneğin) tamamen sıfırlardan oluşan bir veri şablonu belirtmek her zaman yeterli olmayabilir; çünkü ilgilenilen şablon veri bağı katmanindedir (data link level) ve yazdıklarınız ile denetleyicilerin ilettikleri arasındaki ilişki karmaşık olabilir.
Bu, veriye bağlı bir sorununuz varsa, bunu bulmak için muhtemelen çok fazla test yapmanız gerekeceği anlamına gelir. Şanslıysanız, ağınız üzerinden gönderilemeyen veya aktarılması benzer uzunluktaki diğer dosyalara göre çok daha uzun süren bir dosya bulabilirsiniz. Daha sonra bu dosyayı, ping6 programının -p seçeneğini kullanarak test edebileceğiniz yinelenen şablonlar açısından inceleyebilirsiniz.
Çıkış Durumu
ping6 yardımcı programı başarı durumunda (ana bilgisayar etkinse) 0, iletim başarılı olduysa ancak hiçbir yanıt alınmadıysa 2 ve argümanlar geçersizse veya başka bir hata oluştuysa sıfır dışı herhangi bir değer döndürür.
Örnekler
Normalde, ping6 tıpkı ping(8) gibi çalışır; aşağıdaki komut dst.foo.com adresine ICMPv6 yankı (echo) isteği gönderecektir.
ping6 -n dst.foo.com
Aşağıdaki komut, wi0 arayüzüne bağlı ağ bağlantısındaki tüm düğümlerin ana bilgisayar adlarını araştıracaktır.
ff02::1 adresi, bağlantı yerel tüm düğümler çoklu gönderim (link-local all-node multicast) adresi olarak adlandırılır ve paket ağ bağlantısındaki her düğüme ulaşacaktır.
ping6 -w ff02::1%wi0
Aşağıdaki komut, hedef düğüm olan dst.foo.com adresine atanan adresleri araştıracaktır.
ping6 -a agl dst.foo.com
Ayrıca Bakınız
netstat(1), icmp6(4), inet6(4), ip6(4), ifconfig(8), ping(8), traceroute(8), traceroute6(8)
A. Conta ve S. Deering, Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification, RFC2463, Aralık 1998.
Matt Crawford, IPv6 Node Information Queries, draft-ietf-ipngwg-icmp-name-lookups-09.txt, Mayıs 2002, çalışma aşamasındaki materyal.
Geçmiş
ping(8) yardımcı programı 4.3BSD'de ortaya çıkmıştır. IPv6 destekli ping6 yardımcı programı ilk olarak WIDE Hydrangea IPv6 protokol yığını kitinde yer almıştır.
KAME Project (http://www.kame.net/) yığınına dayalı IPv6 ve IPsec desteği, ilk olarak FreeBSD 4.0'a entegre edilmiştir.
Hatalar
ping6 yardımcı programı kasıtlı olarak ping(8)'den ayrı tutulmuştur.
ping6 ve ping(8) programlarını neden ayırdığımız konusunda pek çok tartışma yaşandı. Bazı kişiler hem IPv4 hem de IPv6 için ping komutunu tek bir çatı altında toplamanın daha pratik olacağını savundu.
Aşağıdakiler bu talebe bir yanıttır:
Geliştirici açısından: Temeldeki ham soketler (raw sockets) API'si IPv4 ve IPv6 arasında tamamen farklı olduğundan, iki tür kod tabanına sahip olmak zorunda kalırdık. Geliştirici açısından iki komutu tek bir komutta birleştirmenin aslında çok az faydası olurdu.
Operatör açısından: Uzaktan oturum açma araçları gibi sıradan ağ uygulamalarının aksine, ağ yönetim araçlarını kullanırken genellikle adres ailesinin farkındayızdır. Sadece ana bilgisayarın erişilebilirliğini bilmek istemeyiz, aynı zamanda IPv6 gibi belirli bir ağ protokolü üzerinden erişilebilirliğini de bilmek isteriz. Dolayısıyla, hem IPv4 hem de IPv6 için birleştirilmiş tek bir ping(8) komutumuz olsaydı bile, belirli bir adres ailesini belirtmek için genellikle bir -6 veya -4 seçeneği (veya benzeri bir şey) yazardık. Bu da esasen iki farklı komuta sahip olduğumuz anlamına gelir.