On the Wire: Alat Perekaman Jaringan untuk Developer API

Lane LiaBraaten, tim Google Data API
Juni 2007

Pengantar

Mengembangkan aplikasi yang berinteraksi dengan layanan web menimbulkan serangkaian masalah yang unik. Sumber umum rasa frustrasi adalah tidak mengetahui secara pasti pesan apa yang dikirim ke server, atau respons apa yang diterima. Beberapa bug yang paling sulit dilacak disebabkan oleh perbedaan antara apa yang kita pikir kita kirim ke server, dan apa yang sebenarnya dikirim melalui kabel.

Artikel ini memperkenalkan beberapa alat yang dapat membantu membuat data di jaringan lebih terlihat dan berguna. Alat ini, yang biasa disebut "penyadap paket", menangkap semua paket jaringan yang bergerak di seluruh antarmuka jaringan Anda. Memeriksa isi paket ini dan urutan pengiriman serta penerimaannya dapat menjadi teknik penelusuran kesalahan yang berguna.

Contoh: Mengambil feed publik

Saya sedang membentuk tim bersepeda untuk acara bersepeda amal, dan telah membuat kalender untuk acara seperti sesi info, penggalangan dana tim, dan latihan bersepeda. Saya telah membuat kalender ini menjadi publik sehingga anggota tim dan pengendara lain dapat melihat kalender dan berpartisipasi dalam acara. Saya juga ingin mengirimkan newsletter yang berisi acara mendatang, jadi daripada menyalin informasi dari situs Google Kalender, saya dapat menggunakan Google Calendar Data API untuk membuat kueri kalender ini dan mengambil acara.

Dokumentasi Google Calendar API memiliki informasi tentang cara menggunakan Google Data API RESTful untuk berinteraksi dengan kalender saya secara terprogram. (Catatan Editor: mulai v3, Google Calendar API tidak lagi menggunakan format Google Data.) Hal pertama yang harus dilakukan adalah mendapatkan URL feed acara kalender dengan mengklik tombol di 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();

Tindakan 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 kita 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 pengintai paket dapat menjawab pertanyaan ini dengan mengungkapkan traffic jaringan.

tcpdump

tcpdump adalah alat command line yang berfungsi di platform mirip Unix, tetapi ada juga port Windows yang disebut WinDump. Seperti kebanyakan packet sniffer, tcpdump menempatkan kartu jaringan Anda ke dalam mode promiscuous, yang memerlukan hak istimewa superuser. Untuk menggunakan tcpdump, cukup tentukan antarmuka jaringan yang akan dipantau, dan traffic jaringan akan dikirim ke stdout:

sudo tcpdump -i eth0

Jika menjalankan perintah ini, Anda akan dibombardir oleh semua jenis traffic jaringan, beberapa di antaranya bahkan tidak Anda kenali. Anda dapat meneruskan output ke file dan melakukan grep nanti, tetapi hal itu dapat menyebabkan beberapa file yang sangat besar. Sebagian besar software pengambilan paket memiliki beberapa mekanisme pemfilteran bawaan sehingga Anda hanya mengambil apa yang Anda butuhkan.

tcpdump mendukung pemfilteran berdasarkan berbagai karakteristik traffic jaringan. Misalnya, Anda dapat memberi tahu tcpdump untuk hanya merekam traffic ke atau dari server Anda di port 80 (pesan HTTP) dengan memasukkan nama host server Anda ke dalam 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, serta beberapa flag TCP. Informasi ini dapat berharga karena menunjukkan urutan paket dikirim dan diterima.

Melihat isi paket juga sering kali berguna. Flag '-A' memberi tahu tcpdump untuk mencetak setiap paket dalam ASCII, yang menampilkan header HTTP dan isi pesan. Flag '-s' digunakan untuk menentukan jumlah byte yang akan ditampilkan (dengan '-s 0' berarti tidak memangkas isi pesan sama sekali).

Dengan menggabungkan semuanya, kita akan 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 HTTP GET:

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 yang tidak jelas. Semua data ada di sini, tetapi agak sulit dibaca dan dipahami. Ada beberapa alat grafis yang mempermudah penayangan data ini.

WireShark (sebelumnya Ethereal)

Screenshot Wireshark
WireShark menampilkan traffic jaringan dengan beberapa cara.

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

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

Meskipun sifat visual WireShark membuat traffic jaringan lebih mudah dipahami, Anda tetap perlu memfilter traffic jaringan dalam sebagian besar kasus. WireShark memiliki kemampuan pemfilteran yang andal, 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 memasukkan 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 pengambilan Anda hanya ke paket yang terlibat dalam interaksi ini dengan server Google Kalender. Anda dapat mengklik setiap paket untuk melihat konten dan menyusun transaksi.

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

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

Masalah: SSL dan enkripsi

Kekurangan umum alat penangkapan paket adalah ketidakmampuan untuk 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 memerlukan koneksi SSL.

Cuplikan berikut serupa dengan contoh sebelumnya, tetapi di sini CalendarService meminta metafeed kalender pengguna, yang merupakan feed pribadi yang memerlukan autentikasi. Untuk melakukan autentikasi, cukup panggil metode setUserCredentials. Metode ini memicu permintaan HTTPS ke layanan ClientLogin dan mengambil token autentikasi dari respons. Objek CalendarService kemudian 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. Kirimkan 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 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 panjang di isi respons: SID, LSID, dan Auth. Nilai Auth adalah token otorisasi.
  3. Meminta 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 permintaan dan respons ClientLogin dienkripsi dalam paket "Data Aplikasi". Jangan khawatir, selanjutnya kita akan melihat alat yang benar-benar dapat mengungkapkan informasi terenkripsi ini.

Fiddler

Fiddler adalah alat pengintai paket grafis lainnya, tetapi perilakunya cukup berbeda dari alat yang telah dibahas sejauh ini. Fiddler bertindak sebagai proxy antara aplikasi Anda dan layanan jarak jauh yang berinteraksi dengan Anda, sehingga secara efektif menjadi {i>man-in-the-middle<i}. Fiddler membuat koneksi SSL dengan aplikasi Anda dan layanan web jarak jauh, mendekripsi traffic dari satu endpoint, merekam teks biasa, dan mengenkripsi ulang traffic sebelum mengirimkannya. Sayangnya, Fiddler hanya tersedia untuk Windows. Maaf untuk semua pengguna Mac dan Linux.

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

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

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

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

Fiddler menggunakan .NET Framework untuk mengonfigurasi koneksi jaringan agar menggunakan Fiddler sebagai proxy. Artinya, 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 untuk menyiapkan proxy HTTP.

Di Java, Anda dapat menyetel proxy HTTP menggunakan properti sistem. Fiddler berjalan di 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 sampel dengan baris ini, Anda akan mendapatkan stack trace yang tidak menyenangkan 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 saat sertifikat yang ditampilkan dari server dalam koneksi SSL tidak dapat diverifikasi. Dalam hal ini, sertifikat yang buruk berasal dari Fiddler, yang bertindak sebagai man-in-the-middle. Fiddler membuat 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 'Peringatan Keamanan' yang menanyakan apakah Anda ingin melanjutkan meskipun sertifikatnya tidak jelas. Anda dapat mengklik 'View Certificate' untuk melihat sertifikat yang dibuat Fiddler.

Jadi, bagaimana cara mengatasi pengecualian keamanan ini? Pada dasarnya, Anda perlu mengonfigurasi ulang framework keamanan Java agar mempercayai semua sertifikat. Untungnya, Anda tidak perlu memulai dari awal di sini. Lihat solusi Francis Labrie dan tambahkan metode SSLUtilities.trustAllHttpsCertificates() ke contoh di atas.

Setelah 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 traffic SSL. Beberapa aplikasi web menggunakan koneksi SSL secara eksklusif, sehingga men-debug traffic HTTP tidak mungkin dilakukan tanpa cara untuk mendekripsi data.

Kesimpulan

tcpdump tersedia di Linux, Mac OS X, dan Windows, serta merupakan alat yang sangat berguna jika Anda tahu apa yang Anda cari dan hanya memerlukan pengambilan cepat. Namun, ada beberapa alat grafis yang menyajikan lalu lintas jaringan dalam format yang lebih mudah dipahami. tcpdump memiliki lebih banyak opsi dan kemampuan pemfilteran daripada yang telah dibahas di sini. Untuk mengetahui deskripsi lengkap fungsi tcpdump, ketik 'man tcpdump' atau buka halaman manual tcpdump secara online.

WireShark juga tersedia di Linux, Mac OS X, dan Windows. Dukungan bawaan untuk ratusan protokol menjadikan WireShark sebagai alat yang berguna untuk banyak aplikasi, bukan hanya pen-debugan HTTP. Pengantar ini baru membahas sedikit dari banyak kemampuan WireShark. Untuk mengetahui informasi selengkapnya, ketik "man wireshark" atau kunjungi situs WireShark.

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

Aplikasi sniffing paket ini adalah alat yang hebat untuk dimiliki, dan pembaca yang cermat akan menyadari bahwa semuanya gratis. Lain kali saat Anda menggunakan Google API dan melihat sesuatu yang mencurigakan, gunakan salah satu penganalisis jaringan ini dan periksa lebih lanjut apa yang ada di kabel. Jika tidak dapat menemukan masalahnya, Anda dapat memposting pertanyaan ke grup diskusi kami kapan saja. Menyertakan pesan jaringan yang relevan akan membantu orang lain memahami dan mendiagnosis masalah khusus Anda.

Semoga berhasil dan selamat mengendus!

Resource