ในการตรวจสอบปริมาณข้อมูล HTTP ระหว่างเซิร์ฟเวอร์และเว็บเซิร์ฟเวอร์ฉันกำลังใช้งานtcpdump
อยู่ ใช้งานได้ดี แต่ฉันต้องการกำจัดข้อมูลที่ไม่จำเป็นบางอย่างในผลลัพธ์ (ฉันรู้tcpflow
และwireshark
แต่พวกเขาไม่พร้อมใช้งานในสภาพแวดล้อมของฉัน)
จากtcpdump
หน้าคน:
หากต้องการพิมพ์แพ็กเก็ต IPv4 HTTP ทั้งหมดไปยังและจากพอร์ต 80 เช่นพิมพ์เฉพาะแพ็กเก็ตที่มีข้อมูลไม่ใช่ตัวอย่างเช่นแพ็คเก็ต SYN และ FIN และแพ็คเก็ต ACK เท่านั้น
tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'
คำสั่งนี้
sudo tcpdump -A 'src example.com และ tcp พอร์ต 80 และ (((ip [2: 2] - ((ip [0] & 0xf) << 2))) ((tcp [12] & 0xf0) >> 2) )! = 0) '
ให้ผลลัพธ์ต่อไปนี้:
19: 44: 03.529413 IP 192.0.32.10.http> 10.0.1.6.52369: Flags [P. ], seq 918827135: 918827862, ack 351213824, ชนะ 4316, ตัวเลือก [nop, nop, TS val 4093273405 ecr 869959372], ความยาว 727
E ..... @ ....... .... P..6.0 ......... D ...... __ .. e = 3 ...__ HTTP / 1.1 เซิร์ฟเวอร์ 200 OK: Apache / 2.2.3 (Red Hat) ประเภทเนื้อหา: text / html; charset = UTF-8 วันที่: เสาร์, 14 พ.ย. 2009 18:35:22 GMT อายุ: 7149
ความยาวเนื้อหา: 438<HTML> <HEAD> <TITLE> ตัวอย่างหน้าเว็บ </TITLE> </HEAD> <body>
<p> คุณได้มาถึงหน้าเว็บนี้ ... </p> </BODY> </HTML>
มันเกือบจะสมบูรณ์แบบยกเว้นส่วนที่ไฮไลต์ นี่คือจุดจบ - สำคัญกว่า - ฉันจะกำจัดมันได้อย่างไร อาจจะเป็นเพียงแค่ปรับแต่งเล็กน้อยในการแสดงออกในตอนท้ายของคำสั่ง?