On the Wire: Network Capture Tools untuk Developer API

Lane LiaBraaten, tim Google Data API
Juni 2007

Pengantar

Mengembangkan aplikasi yang berinteraksi dengan layanan web menimbulkan serangkaian masalah unik. Sumber frustrasi yang umum adalah tidak mengetahui dengan tepat pesan yang dikirim ke server atau tanggapan yang diterima. Beberapa bug tersulit untuk dilacak disebabkan oleh diskoneksi antara apa yang kami kira kami kirim ke server, dan apa yang sebenarnya terjadi di jaringan.

Artikel ini memperkenalkan beberapa alat yang dapat membantu membuat data pada kabel lebih terlihat dan berguna. Biasanya disebut "packet sniffers", alat ini merekam semua paket jaringan yang bergerak melintasi antarmuka jaringan Anda. Memeriksa konten paket ini dan urutan pengiriman serta penerimaan paket tersebut dapat menjadi teknik proses debug yang berguna.

Contoh: Mengambil feed publik

Saya sedang menyiapkan tim bersepeda untuk amal, dan saya telah membuat kalender untuk acara seperti sesi info, penggalangan dana tim, dan wahana pelatihan. Saya telah membuat kalender ini terbuka untuk umum sehingga anggota tim dan penumpang lainnya dapat melihat kalender tersebut dan berpartisipasi dalam acara tersebut. Saya juga ingin mengirimkan newsletter dengan acara mendatang, jadi daripada menyalin informasi dari situs Google Kalender, saya dapat menggunakan API data Google Kalender untuk membuat kueri kalender ini dan mengambil acara.

Dokumentasi Google Calendar API memiliki informasi tentang cara menggunakan RESTful Google Data API untuk berinteraksi dengan kalender saya secara terprogram. (Catatan Editor: mulai v3, Google Kalender API tidak lagi menggunakan format Data Google.) Hal pertama yang harus dilakukan adalah mendapatkan URL feed acara kalender dengan mengklik tombol pada halaman setelan kalender:

http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic

Dengan menggunakan dokumentasi Google Kalender sebagai referensi, saya dapat mengambil dan menampilkan acara kalender seperti ini, dengan PUBLIC_FEED_URL menyimpan URL feed acara.

CalendarService myService = new CalendarService("exampleCo-fiddlerExample-1");
final String PUBLIC_FEED_URL = "http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic";
URL feedUrl = new URL(PUBLIC_FEED_URL);
CalendarEventFeed resultFeed = myService.getFeed(feedUrl, CalendarEventFeed.class);

System.out.println("All events on your calendar:");
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
  CalendarEventEntry entry = resultFeed.getEntries().get(i);
  System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println();

Ini akan menghasilkan daftar dasar acara di kalender saya:

All events on your calendar:
    MS150 Training ride
    Meeting with Nicole
    MS150 Information session

Cuplikan kode di atas menampilkan judul acara kalender, tetapi bagaimana dengan data lainnya yang kami terima dari server? Library klien Java tidak mempermudah output feed atau entri sebagai XML, dan meskipun demikian, XML bukanlah keseluruhan cerita. Bagaimana dengan header HTTP yang menyertai permintaan? Apakah kueri di-proxy atau dialihkan? Dengan operasi yang lebih kompleks, pertanyaan ini menjadi semakin penting, terutama saat terjadi kesalahan dan kita mendapatkan error. Software perusak paket dapat menjawab pertanyaan tersebut dengan mengungkapkan traffic jaringan.

tcpdump

tcpdump adalah alat command line yang berfungsi di platform mirip Unix, tetapi ada juga port Windows bernama WinDump. Seperti kebanyakan sniffers paket, tcpdump mengalihkan kartu jaringan Anda ke mode promiscuous, yang memerlukan hak istimewa superuser. Untuk menggunakan tcpdump, cukup tentukan antarmuka jaringan yang akan diproses, dan traffic jaringan akan dikirim ke stdout:

sudo tcpdump -i eth0

Jika menjalankan perintah ini, Anda akan dibombardir dengan semua jenis traffic jaringan, yang beberapa di antaranya tidak akan dikenali. Anda dapat meneruskan output ke file dan grep nanti, tetapi hal itu dapat menyebabkan beberapa file yang sangat besar. Sebagian besar software perekaman paket memiliki beberapa mekanisme pemfilteran bawaan, sehingga Anda hanya merekam hal yang diperlukan.

tcpdump mendukung pemfilteran berdasarkan berbagai karakteristik traffic jaringan. Misalnya, Anda dapat mengatur agar tcpdump hanya mencatat traffic ke atau dari server di port 80 (pesan HTTP) dengan memasukkan nama host server ke ekspresi berikut:

dst or src host <hostname> and port 80

Untuk setiap paket yang cocok dengan ekspresi filter, tcpdump akan menampilkan stempel waktu, sumber dan tujuan paket, dan beberapa tanda TCP. Informasi ini dapat bernilai karena menunjukkan urutan paket yang dikirim dan diterima.

Sering kali juga berguna untuk melihat isi paket. Tanda '-A' memberi tahu tcpdump untuk mencetak setiap paket dalam ASCII, dengan mengekspos header HTTP dan isi pesan. Flag '-s' digunakan untuk menentukan jumlah byte yang akan ditampilkan (dengan '-s 0' berarti tidak memotong isi pesan).

Dengan menggabungkan semuanya, kita mendapatkan perintah berikut:

sudo tcpdump -A -s 0 -i eth0 dst or src host <hostname> and port 80

Jika Anda menjalankan perintah ini, lalu menjalankan contoh .Java singkat di atas, Anda akan melihat semua komunikasi jaringan yang terlibat dalam operasi ini. Di antara traffic, Anda akan melihat permintaan GET HTTP:

22:22:30.870771 IP dellalicious.mshome.net.4520 > po-in-f99.google.com.80: P 1:360(359) ack 1 win 65535
E.....@....\...eH..c...P.=.....zP......GET /calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic HTTP/1.1
User-Agent: exampleCo-fiddlerExample-1 GCalendar-Java/1.0.6 GData-Java/1.0.10(gzip)
Accept-Encoding: gzip
Cache-Control: no-cache
Pragma: no-cache
Host: www.google.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive

Anda juga akan melihat pesan respons 200 OK yang berisi feed Data Google. Perhatikan bahwa feed dibagi menjadi empat paket:

22:22:31.148789 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 1:1431(1430) ack 360 win 6432
E...1 ..2.I.H..c...e.P.....z.=.:P..M...HTTP/1.1 200 OK
Content-Type: application/atom+xml; charset=UTF-8
Cache-Control: max-age=0, must-revalidate, private
Last-Modified: Mon, 11 Jun 2007 15:11:40 GMT
Transfer-Encoding: chunked
Date: Sun, 24 Jun 2007 02:22:10 GMT
Server: GFE/1.3

13da
<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom'
xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:gCal='http://sc
hemas.google.com/gCal/2005' xmlns:gd='http://schemas.google.com/g/2005'><id>http
://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.goo
gle.com/public/basic</id><updated>2007-06-11T15:11:40.000Z</updated><category sc
heme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2
005#event'></category><title type='text'>MS150 Training Schedule</title><subtitl
e type='text'>This calendar is public</subtitle><link rel='http://schemas.google
.com/g/2005#feed' type='application/atom+xml' href='http://www.google.com/calend
ar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic'></
link><link rel='self' type='application/atom+xml' href='http://www.google.com/ca
lendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic
?max-results=25'></link><author><name>Lane LiaBraaten</name><email>api.lliabraa@
gmail.com</email></author><generator version='1.0' uri='http://www.google.com/ca
lendar'>Google Calendar</generator><openSearch:totalRe


22:22:31.151501 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 1431:2861(1430) ack 360 win 6432
E...1!..2.I.H..c...e.P.......=.:P.. 2...sults>3</openSearch:totalResults><openSe
arch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch
:itemsPerPage><gd:where valueString=''></gd:where><gCal:timezone value='America/
Los_Angeles'></gCal:timezone><entry><id>http://www.google.com/calendar/feeds/24v
j3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/dgt40022cui2k3j
740hnj46744</id><published>2007-06-11T15:11:05.000Z</published><updated>2007-06-
11T15:11:05.000Z</updated><category scheme='http://schemas.google.com/g/2005#kin
d' term='http://schemas.google.com/g/2005#event'></category><title type='text'>M
S150 Training ride</title><summary type='html'>When: Sat Jun 9, 2007 7am to 10am

&amp;nbsp; PDT&lt;br&gt;   &lt;br&gt;Event Status:     confirmed</summary><conte
nt type='text'>When: Sat Jun 9, 2007 7am to 10am&amp;nbsp; PDT&lt;br&gt;   &lt;b
r&gt;Event Status:     confirmed</content><link rel='alternate' type='text/html'
 href='http://www.google.com/calendar/event?eid=ZGd0NDAwMjJjdWkyazNqNzQwaG5qNDY3
NDQgMjR2ajNtNXBsMTI1YmgyaWpiYm5laDk1M3NAZw' title='alternate'></link><link rel='
self' type='application/atom+xml' href='http://www.google.com/calendar/feeds/24v
j3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/dgt40022cui2k3j
740hnj46744'></link><author><name>MS150 Training Schedule</name></author><gCal:s
endEventNotifications value='false'></gCal:sendEventNotifications></entry><entry

><id>http://www.google.com/cal

22:22:31.153097 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: . 2861:4291(1430) ack 360 win 6432
E...1#..2.I.H..c...e.P.......=.:P.. ....endar/feeds/24vj3m5pl125bh2ijbbneh953s%4
0group.calendar.google.com/public/basic/51d8kh4s3bplqnbf1lp6p0kjp8</id><publishe
d>2007-06-11T15:08:23.000Z</published><updated>2007-06-11T15:10:39.000Z</updated
><category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.g
oogle.com/g/2005#event'></category><title type='text'>Meeting with Nicole</title

><summary type='html'>When: Mon Jun 4, 2007 10am to 11am&amp;nbsp; PDT&lt;br&gt;
  &lt;br&gt;Where: Conference Room B &lt;br&gt;Event Status:     confirmed</summ
ary><content type='text'>When: Mon Jun 4, 2007 10am to 11am&amp;nbsp; PDT&lt;br&
gt;  &lt;br&gt;Where: Conference Room B &lt;br&gt;Event Status:     confirmed

&lt;br&gt;Event Description: Discuss building cycling team for MS150</content><l
ink rel='alternate' type='text/html' href='http://www.google.com/calendar/event?
eid=NTFkOGtoNHMzYnBscW5iZjFscDZwMGtqcDggMjR2ajNtNXBsMTI1YmgyaWpiYm5laDk1M3NAZw'
title='alternate'></link><link rel='self' type='application/atom+xml' href='http
://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.calendar.goo
gle.com/public/basic/51d8kh4s3bplqnbf1lp6p0kjp8'></link><author><name>MS150 Trai
ning Schedule</name></author><gCal:sendEventNotifications value='false'></gCal:s
endEventNotifications></entry><entry><id>http://www.google.com/calendar/feeds/24
vj3m5pl125bh2ijbbneh953s%40group.calendar.google.com/public/basic/va41amq3r08dhh
kpm3lc1abs2o</id><published>20


22:22:31.190244 IP po-in-f99.google.com.80 > dellalicious.mshome.net.4520: P 4291:5346(1055) ack 360 win 6432
E..G1$..2.K.H..c...e.P.....<.=.:P.. ....07-06-11T15:10:08.000Z</published><updat
ed>2007-06-11T15:10:08.000Z</updated><category scheme='http://schemas.google.com
/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category><title ty
pe='text'>MS150 Information session</title><summary type='html'>When: Wed Jun 6,
 2007 4pm to Wed Jun 6, 2007 5pm&amp;nbsp; PDT&lt;br&gt;   &lt;br&gt;Event Statu
s:     confirmed</summary><content type='text'>When: Wed Jun 6, 2007 4pm to Wed
Jun 6, 2007 5pm&amp;nbsp; PDT&lt;br&gt;   &lt;br&gt;Event Status:     confirmed<

/content><link rel='alternate' type='text/html' href='http://www.google.com/cale
ndar/event?eid=dmE0MWFtcTNyMDhkaGhrcG0zbGMxYWJzMm8gMjR2ajNtNXBsMTI1YmgyaWpiYm5la
Dk1M3NAZw' title='alternate'></link><link rel='self' type='application/atom+xml'
 href='http://www.google.com/calendar/feeds/24vj3m5pl125bh2ijbbneh953s%40group.c
alendar.google.com/public/basic/va41amq3r08dhhkpm3lc1abs2o'></link><author><name
>MS150 Training Schedule</name></author><gCal:sendEventNotifications value='fals
e'></gCal:sendEventNotifications></entry></feed>

Output ini mencakup semua header dan konten HTTP, serta beberapa flag TCP samar. Semua data ada di sini, tetapi agak sulit dibaca dan dipahami. Ada beberapa alat grafis yang memudahkan untuk melihat data ini.

WireShark (sebelumnya Ethereal)

Screenshot Wireshark
WireShark menampilkan traffic jaringan dalam beberapa cara.

WireShark adalah alat grafis yang dibuat dengan libpcap, pustaka yang sama dengan yang digunakan untuk membuat tcpdump, dan tersedia di Linux, Mac OS X, serta Windows. GUI WireShark memungkinkan beberapa cara baru untuk menafsirkan dan berinteraksi dengan data tangkapan paket. Misalnya, saat paket diambil dari antarmuka jaringan Anda, paket akan ditampilkan dalam warna yang berbeda berdasarkan protokol yang digunakan. Anda juga dapat mengurutkan traffic berdasarkan stempel waktu, sumber, tujuan, dan protokol.

Jika Anda memilih baris dalam daftar paket, Wireshark akan menampilkan IP, TCP, dan informasi khusus protokol lainnya dalam header paket dalam hierarki yang dapat dibaca manusia. Data juga ditampilkan dalam HEX dan ASCII di bagian bawah layar.

Meskipun sifat visual WireShark membuat traffic jaringan lebih mudah dipahami, dalam banyak kasus Anda tetap harus memfilter traffic jaringan. WireShark memiliki kemampuan pemfilteran yang kuat, termasuk dukungan untuk ratusan protokol.

TIPS: Untuk melihat protokol yang tersedia dan membuat filter kompleks, klik tombol di dekat bagian atas jendela WireShark.

Untuk membuat ulang filter yang digunakan dalam contoh tcpdump di atas, Anda dapat menyisipkan ekspresi berikut ke dalam kotak filter WireShark:

ip.addr==<your IP address> && tcp.port==80

Atau manfaatkan pengetahuan WireShark tentang HTTP:

ip.addr==<your IP address> && http

Tindakan ini akan memfilter hasil tangkapan Anda ke paket yang terlibat dalam interaksi ini dengan server Google Kalender saja. Anda dapat mengklik setiap paket untuk melihat konten dan mengelompokkan transaksinya.

TIPS: Anda dapat mengklik kanan salah satu paket dan memilih "Ikuti TCP Stream" untuk menampilkan permintaan dan respons secara berurutan dalam satu jendela.

WireShark menyediakan beberapa cara untuk menyimpan informasi pengambilan gambar Anda. Anda dapat menyimpan satu, beberapa, atau semua paket. Jika Anda melihat aliran TCP, Anda cukup mengklik tombol "Simpan Sebagai" untuk menyimpan paket yang relevan saja. Anda juga dapat mengimpor output dari tangkapan tcpdump dan melihatnya di WireShark.

Masalah: SSL dan enkripsi

Kekurangan alat pengambilan paket yang umum adalah ketidakmampuan melihat data yang dienkripsi melalui koneksi SSL. Contoh di atas mengakses feed publik, sehingga SSL tidak diperlukan. Namun, jika contoh mengakses feed pribadi, klien harus melakukan autentikasi dengan layanan autentikasi Google, yang memang memerlukan koneksi SSL.

Cuplikan berikut mirip dengan contoh sebelumnya, tetapi di sini CalendarService meminta metafeed kalender pengguna, yang merupakan feed pribadi yang memerlukan autentikasi. Untuk mengautentikasi, cukup panggil metode setUserCredentials. Metode ini memicu permintaan HTTPS ke layanan ClientLogin dan mengambil token autentikasi dari respons. Kemudian, objek CalendarService akan menyertakan token autentikasi dalam semua permintaan berikutnya.

CalendarService myService = new CalendarService("exampleCo-fiddlerSslExample-1");
myService.setUserCredentials(username, userPassword);
final String METAFEED_URL = "http://www.google.com/calendar/feeds/default";
URL feedUrl = new URL(METAFEED_URL);
CalendarFeed resultFeed = myService.getFeed(feedUrl, CalendarFeed.class);

System.out.println("Your calendars:");
for (int i = 0; i < resultFeed.getEntries().size(); i++) {
  CalendarEntry entry = resultFeed.getEntries().get(i);
  System.out.println("\t" + entry.getTitle().getPlainText());
}
System.out.println();

Pertimbangkan traffic jaringan yang diperlukan untuk mengautentikasi dan mengakses feed Google Data API pribadi:

  1. Mengirimkan kredensial pengguna ke layanan ClientLogin
    • Kirim POST HTTP ke https://www.google.com/accounts/ClientLogin dengan parameter berikut di isi pesan:
      • Email - alamat email pengguna.
      • Passwd - sandi pengguna.
      • source - mengidentifikasi aplikasi klien Anda. Harus menggunakan format companyName-applicationName-versionID. Contoh ini menggunakan nama ExampleCo-FiddlerSSLExample-1.
      • service - nama layanan Google Kalender adalah 'cl'.
  2. Menerima token otorisasi
    • Jika permintaan autentikasi gagal, Anda akan menerima kode status HTTP 403 Forbidden.
    • Jika berhasil, respons dari layanan adalah kode status HTTP 200 OK, ditambah tiga kode alfanumerik yang panjang dalam isi respons: SID, LSID, dan Auth. Nilai Auth adalah token otorisasi.
  3. Minta metafeed kalender pribadi
    • Kirim GET HTTP ke http://www.google.com/calendar/feeds/default dengan header berikut:
    • Authorization: GoogleLogin auth=<yourAuthToken>
      

Coba jalankan cuplikan ini dan lihat traffic jaringan di WireShark (menggunakan 'http || ssl' sebagai filter). Anda akan melihat paket SSL dan TLS yang terlibat dalam transaksi, tetapi paket respons dan permintaan ClientLogin dienkripsi dalam paket "Data Aplikasi". Jangan khawatir, selanjutnya kita akan melihat alat yang dapat mengungkapkan informasi terenkripsi ini.

Fiddler

Fiddler adalah alat sniffing paket grafis lain, tetapi berperilaku cukup berbeda dengan alat yang disajikan sejauh ini. Fiddler bertindak sebagai proxy antara aplikasi Anda dan layanan jarak jauh yang berinteraksi dengan Anda, yang secara efektif menjadi man-in-the-middle. Fiddler membuat koneksi SSL dengan aplikasi dan layanan web jarak jauh, mendekripsi traffic dari satu endpoint, menangkap teks biasa, dan mengenkripsi kembali traffic sebelum mengirimkannya. Sayangnya, Fiddler hanya tersedia untuk Windows bagi semua pengguna Mac dan Linux Anda.

Catatan: Dukungan SSL memerlukan Fiddler versi 2 dan .NET Framework versi 2.0.

Menampilkan traffic jaringan di Fiddler sebagian besar dilakukan melalui tab Session Inspector. Sub-tab yang paling berguna untuk men-debug masalah dengan Google Data API adalah:

  • Header - menampilkan header HTTP dalam format hierarki yang dapat diciutkan.
  • Auth - menampilkan header Authentication.
  • Raw - menampilkan konten paket jaringan dalam teks ASCII

TIPS: Klik ikon di pojok kiri bawah jendela Fiddler untuk mengaktifkan dan menonaktifkan perekaman.

Fiddler menggunakan .NET Framework untuk mengonfigurasi koneksi jaringan agar menggunakan Fiddler sebagai proxy. Ini berarti bahwa setiap koneksi yang Anda buat dengan Internet Explorer, atau dengan kode .NET akan muncul di Fiddler secara default. Namun, traffic dari contoh Java di atas tidak akan muncul karena Java memiliki cara yang berbeda dalam menyiapkan proxy HTTP.

Di Java, Anda dapat menyetel proxy HTTP menggunakan properti sistem. Fiddler berjalan pada port 8888, jadi untuk penginstalan lokal, Anda dapat membuat kode Java menggunakan Fiddler sebagai proxy untuk HTTP dan HTTPS dengan menambahkan baris berikut:

System.setProperty("http.proxyHost", "localhost");
System.setProperty("http.proxyPort", "8888");
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "8888");

Jika menjalankan contoh dengan baris ini, Anda akan mendapatkan pelacakan tumpukan yang berbahaya dari paket keamanan Java:

[java] Caused by:
  sun.security.validator.ValidatorException: PKIX path building failed:
  sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Screenshot Fiddler
Fiddler dapat mendekripsi dan menampilkan traffic SSL.

Error ini terjadi jika sertifikat yang ditampilkan dari server di koneksi SSL tidak dapat diverifikasi. Dalam hal ini, sertifikat yang buruk berasal dari Fiddler, yang bertindak sebagai man-in-the-middle. Fiddler menghasilkan sertifikat dengan cepat, dan karena Fiddler bukan penerbit tepercaya, sertifikat ini akan menyebabkan Java gagal menyiapkan koneksi SSL.

Catatan: Saat Fiddler berjalan, setiap koneksi SSL yang Anda buat di Internet Explorer akan memicu 'Notifikasi Keamanan' yang menanyakan apakah Anda ingin melanjutkan, meskipun sertifikatnya samar. Anda dapat mengklik 'Lihat Sertifikat' untuk melihat sertifikat yang dihasilkan Fiddler.

Jadi, bagaimana cara mengatasi pengecualian keamanan ini? Pada dasarnya, Anda perlu mengonfigurasi ulang framework keamanan Java untuk memercayai semua sertifikat. Untungnya, Anda tidak perlu menemukan kembali roda di sini. Lihat solusi Francis Labrie dan tambahkan metode SSLUtilities.trustAllHttpsCertificates() ke contoh di atas.

Setelah Anda mengonfigurasi Java untuk menggunakan Fiddler sebagai proxy dan menonaktifkan verifikasi sertifikat default, Anda dapat menjalankan contoh dan melihat semua traffic yang dikirim melalui kabel dalam teks biasa. Jangan mencuri sandi saya!

Ingat, transaksi autentikasi ini hanyalah salah satu contoh kecil dari traffic SSL. Beberapa aplikasi web menggunakan koneksi SSL secara eksklusif, jadi men-debug traffic HTTP tidak dapat dilakukan dengan cara lain untuk mendekripsi data.

Kesimpulan

tcpdump tersedia di Linux, Mac OS X, dan Windows, dan merupakan alat yang efektif saat Anda tahu apa yang Anda cari serta hanya memerlukan rekaman cepat. Namun, ada beberapa alat grafis yang menyajikan traffic jaringan dalam format yang lebih mudah dipahami. tcpdump memiliki lebih banyak opsi dan kemampuan pemfilteran dibandingkan yang telah dibahas di sini. Untuk deskripsi lengkap fungsi tcpdump, ketik 'man tcpdump' atau buka halaman tcpdump man secara online.

WireShark juga tersedia di Linux, Mac OS X, dan Windows. Dukungan bawaan untuk ratusan protokol membuat WireShark menjadi alat yang berguna untuk banyak aplikasi, bukan hanya proses debug HTTP. Pengantar ini nyaris tidak membahas banyak kemampuan WireShark. Untuk informasi selengkapnya, ketik "man wireshark" atau kunjungi situs WireShark.

Fiddler juga memiliki banyak fitur bagus, tetapi hal yang membedakannya adalah kemampuannya untuk mendekripsi traffic SSL. Untuk informasi selengkapnya, kunjungi situs Fiddler2.

Aplikasi mengendus paket ini adalah alat yang bagus untuk disediakan di panel alat Anda, dan pembaca yang cermat akan menyadari bahwa semuanya gratis! Lain kali Anda menggunakan Google API dan melihat sesuatu yang mencurigakan, tarik salah satu analyzer jaringan ini dan lihat lebih dekat apa yang ada di kabel. Jika tidak dapat menemukan masalah, Anda dapat memposting pertanyaan ke grup diskusi kami kapan saja. Menyertakan pesan jaringan yang relevan akan membantu orang lain memahami dan mendiagnosis masalah tertentu Anda.

Semoga berhasil dan selamat mencium!

Resource