Untuk memantau lalu lintas HTTP antara server dan server web, saya saat ini menggunakan tcpdump
. Ini berfungsi dengan baik, tapi saya ingin menyingkirkan beberapa data yang berlebihan dalam output (saya tahu tentang tcpflow
dan wireshark
, tetapi mereka tidak tersedia di lingkungan saya).
Dari tcpdump
halaman manual:
Untuk mencetak semua paket HTTP IPv4 ke dan dari port 80, yaitu hanya mencetak paket yang berisi data, tidak, misalnya, paket SYN dan FIN dan paket ACK saja.
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
Perintah ini
sudo tcpdump -A 'src example.com dan tcp port 80 dan (((ip [2: 2] - ((ip [0] & 0xf) << 2)) - ((tcp [12] & 0xf0) >> 2) )! = 0) '
menyediakan output berikut:
19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Bendera [P.], seq 918827135: 918827862, ack 351213824, win 4316, opsi [nop, nop, TS val 4093273405 ecr 869959372], panjang 727
E ..... @ ....... .... P..6.0 ......... D ...... __ .. e = 3 ...__ HTTP / 1.1 200 OK Server: Apache / 2.2.3 (Red Hat) Tipe-Konten: teks / html; charset = UTF-8 Tanggal: Sab, 14 Nov 2009 18:35:22 GMT Umur: 7149
Panjang Konten: 438<HTML> <HEAD> <TITLE> Contoh Halaman Web </TITLE> </HEAD> <body>
<p> Anda telah mencapai halaman web ini ... </p> </BODY> </HTML>
Ini hampir sempurna, kecuali untuk bagian yang disorot. Apa ini, akhirnya - yang lebih penting - bagaimana saya menyingkirkannya? Mungkin itu hanya sedikit perubahan pada ekspresi di akhir perintah?