การวิเคราะห์ HTTP โดยใช้ Wireshark

Http Analysis Using Wireshark



HTTP คืออะไร?

อย่างแรกคือ HTTP เต็มรูปแบบคือ HyperText Transfer Protocol HTTP เป็นโปรโตคอลเลเยอร์แอปพลิเคชันในโมเดล ISO หรือ TCP/IP ดูภาพด้านล่างเพื่อค้นหา HTTP ซึ่งอยู่ภายใต้เลเยอร์แอปพลิเคชัน







HTTP ถูกใช้โดย เวิลด์ไวด์เว็บ (w.w.w) และกำหนดวิธีการจัดรูปแบบและส่งข้อความโดยเบราว์เซอร์ ดังนั้น HTTP กำหนด reules ว่าควรดำเนินการใดเมื่อเบราว์เซอร์ได้รับคำสั่ง HTTP และ HTTP ยังกำหนดกฎในการส่งคำสั่ง HTTP เพื่อรับข้อมูลจากเซิร์ฟเวอร์



ตัวอย่างเช่น เมื่อคุณป้อน URL ในเบราว์เซอร์ (Internet explorer, Chrome, Firefox, Safari ฯลฯ) จะส่งคำสั่ง HTTP ไปยังเซิร์ฟเวอร์จริง ๆ และเซิร์ฟเวอร์ตอบกลับด้วยคำสั่งที่เหมาะสม



วิธี HTTP:

มีชุดวิธีการบางอย่างสำหรับ HTTP/1.1 (นี่คือเวอร์ชัน HTTP)





GET, HEAD, POST, PUT, DELETE, CONNECT, OPTION และ TRACE

เราจะไม่ลงรายละเอียดแต่ละวิธี แต่จะมาทำความรู้จักกับวิธีที่พบเห็นค่อนข้างบ่อย เช่น



รับ: คำขอ GET ขอข้อมูลจากเว็บเซิร์ฟเวอร์ นี่เป็นวิธีการหลักที่ใช้เรียกเอกสาร เราจะเห็นตัวอย่างเชิงปฏิบัติของวิธีนี้

โพสต์: วิธี POST จะใช้เมื่อจำเป็นต้องส่งข้อมูลบางอย่างไปยังเซิร์ฟเวอร์

HTTP คือ Wiresahark:

มาลองทำสิ่งที่ใช้งานได้จริงเพื่อทำความเข้าใจว่า HTTP ทำงานอย่างไร

ในตัวอย่างนี้เราจะดาวน์โหลด alice.txt (ไฟล์ข้อมูลอยู่ในเซิร์ฟเวอร์) จาก gaia.cs.umass.edu เซิร์ฟเวอร์

เซท:

  1. เปิด URL http://gaia.cs.umass.edu/wireshark-labs/alice.txt [เราทราบ URL แบบเต็มสำหรับการดาวน์โหลด alice.txt] ในเบราว์เซอร์ของคอมพิวเตอร์
  2. ตอนนี้เราเห็นไฟล์ที่ดาวน์โหลดในเบราว์เซอร์ นี่คือภาพหน้าจอ

  1. ควบคู่ไปกับการจับแพ็คเก็ตใน Wireshark

การแลกเปลี่ยนแพ็กเก็ต HTTP ใน Wireshark:

ก่อนที่เราจะเข้าสู่ HTTP เราควรรู้ว่า HTTP ใช้พอร์ต 80 และ TCP เป็นโปรโตคอลเลเยอร์การขนส่ง [เราจะอธิบาย TCP ในการสนทนาหัวข้ออื่น]

ตอนนี้เรามาดูกันว่าจะเกิดอะไรขึ้นในเครือข่ายเมื่อเราใส่ URL นั้นแล้วกด Enter ในเบราว์เซอร์

นี่คือภาพหน้าจอสำหรับ

TCP 3-way handshake ——-> HTTP OK ——-> ข้อมูล TCP [เนื้อหาของ alice.txt] ——->

HTTP-ตกลง

ตอนนี้เรามาดูกันว่ามีอะไรอยู่ในแพ็กเก็ต HTTP GET และ HTTP OK

หมายเหตุ: เราจะอธิบายการแลกเปลี่ยน TCP ในการสนทนาหัวข้ออื่น

HTTP รับ:

หลังจาก TCP 3-way handshake [แพ็คเก็ต SYN, SYN+ACK และ ACK] เสร็จสิ้น คำขอ HTTP GET จะถูกส่งไปยังเซิร์ฟเวอร์ และนี่คือฟิลด์ที่สำคัญในแพ็กเก็ต

1.ขอวิธี: รับ ==> แพ็กเก็ตเป็น HTTP GET

2.คำขอ URI: /wireshark-labs/alice.txt ==> ลูกค้ากำลังขอไฟล์ alice.txt อยู่ภายใต้ /Wireshark-labs

3. รุ่นขอ: HTTP/1.1 ==> เป็นเวอร์ชัน HTTP 1.1

4.ยอมรับ: text/html, application/xhtml+xml, image/jxr, */* ==> แจ้งเซิร์ฟเวอร์เกี่ยวกับประเภทของไฟล์ที่ [เบราว์เซอร์ฝั่งไคลเอ็นต์] ยอมรับได้ ที่นี่ลูกค้าคาดหวัง alice.txt ซึ่งเป็นประเภทข้อความ

5.ยอมรับ-ภาษา: en-US ==> มาตรฐานภาษาที่ยอมรับ

6.User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) เช่น Gecko ==> ประเภทเบราว์เซอร์ฝั่งไคลเอ็นต์ แม้ว่าเราจะใช้ internet explorer แต่เราเห็นมันเสมอ/เวลาสูงสุดพูดว่า Mozilla

7.ยอมรับการเข้ารหัส: gzip, ยุบตัว ==> ยอมรับการเข้ารหัสในฝั่งไคลเอ็นต์

8.โฮสต์: gaia.cs.umass.edu ==> นี่คือชื่อเว็บเซิร์ฟเวอร์ที่ไคลเอ็นต์ส่งคำขอ HTTP GET

9.การเชื่อมต่อ: Keep-Alive ==> การเชื่อมต่อจะควบคุมว่าการเชื่อมต่อเครือข่ายจะยังคงเปิดอยู่หลังจากธุรกรรมปัจจุบันเสร็จสิ้นหรือไม่ ประเภทการเชื่อมต่อจะคงอยู่

นี่คือภาพหน้าจอสำหรับช่องแพ็กเก็ต HTTP-GET

HTTP ตกลง:

หลังจากส่งข้อมูล TCP [เนื้อหาของ alice.txt] สำเร็จแล้ว HTTP OK จะถูกส่งไปยังไคลเอนต์และนี่คือฟิลด์สำคัญในแพ็กเก็ต
1. เวอร์ชันตอบกลับ: HTTP / 1.1 ==> เซิร์ฟเวอร์ที่นี่ยังอยู่ใน HTTP เวอร์ชัน 1.1
2.รหัสสถานะ: 200 ==> รหัสสถานะส่งโดยเซิร์ฟเวอร์
3. วลีตอบกลับ: ตกลง ==> วลีตอบกลับที่ส่งโดยเซิร์ฟเวอร์

ดังนั้น จาก 2 และ 3 เราได้รับ 200 OK ซึ่งหมายความว่าคำขอ [HTTP GET] สำเร็จแล้ว

4.วันที่: อา. 10 ก.พ. 2019 06:24:19 GMT ==> วันที่ปัจจุบัน เวลาเป็น GMT เมื่อเซิร์ฟเวอร์ได้รับ HTTP GET
5.เซิร์ฟเวอร์: Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.10 Perl/v5.16.3 ==> รายละเอียดเซิร์ฟเวอร์และรุ่นการกำหนดค่า
6.Last-Modified : ส. 21 ส.ค. 2547 14:21:11 GMT ==> วันที่และเวลาที่แก้ไขล่าสุดสำหรับไฟล์ alice.txt
7.ETag: 2524a-3e22aba3a03c0 ==> ETag ระบุว่าเนื้อหาไม่ได้เปลี่ยนแปลงเพื่อช่วยแคชและปรับปรุงประสิทธิภาพ หรือหากเนื้อหามีการเปลี่ยนแปลง etags จะมีประโยชน์ในการช่วยป้องกันการอัปเดตทรัพยากรพร้อมกันจากการเขียนทับซึ่งกันและกัน
8. ยอมรับ-ช่วง: ไบต์ ==> ไบต์เป็นหน่วยที่ใช้ในเซิร์ฟเวอร์สำหรับเนื้อหา
9.เนื้อหา-ความยาว: 152138 ==> นี่คือความยาวทั้งหมดของ alice.txt ในหน่วยไบต์
10. รักษาชีวิต: หมดเวลา=5 สูงสุด=100 ==> เก็บพารามิเตอร์ที่มีชีวิตอยู่
11.การเชื่อมต่อ: ให้มีชีวิตอยู่ ==> การเชื่อมต่อจะควบคุมว่าการเชื่อมต่อเครือข่ายจะยังคงเปิดอยู่หลังจากธุรกรรมปัจจุบันเสร็จสิ้นหรือไม่ ประเภทการเชื่อมต่อจะคงอยู่
12.ประเภทเนื้อหา: ข้อความ/ธรรมดา; ชุดอักขระ=UTF-8 ==> ประเภทเนื้อหา [alice.txt] เป็นข้อความและมาตรฐานชุดอักขระคือ UTF-8

นี่คือภาพหน้าจอสำหรับฟิลด์ต่างๆ ของแพ็กเก็ต HTTP OK

ตอนนี้เรารู้แล้วว่าเกิดอะไรขึ้นเมื่อเราขอไฟล์ใดๆ ที่มีอยู่ในเว็บเซิร์ฟเวอร์

บทสรุป:

HTTP เป็นโปรโตคอลแอปพลิเคชันที่เรียบง่ายที่เราใช้ทุกวันในชีวิตของเรา แต่มันไม่ปลอดภัย ดังนั้นจึงมีการนำ HTTPS มาใช้ ที่ S ย่อมาจากการรักษาความปลอดภัย นั่นเป็นเหตุผลที่ชื่อเว็บเซิร์ฟเวอร์สูงสุดเริ่มต้นด้วย http s://[ชื่อเว็บไซต์] . ซึ่งหมายความว่าการสื่อสารทั้งหมดระหว่างคุณและเซิร์ฟเวอร์ได้รับการเข้ารหัส เราจะมีการอภิปรายแยกต่างหากเกี่ยวกับ HTTPS นี้ในอนาคต