การวิเคราะห์ TCP 3-Way Handsake ใน Wireshark

Kar Wikheraah Tcp 3 Way Handsake Ni Wireshark



Transmission Control Protocol เป็นโปรโตคอลที่สำคัญมากในเลเยอร์การขนส่งสำหรับโมเดล OSI หรือ TCP/IP มีข้อดีมากมายใน TCP เช่น:

  • TCP จะทำการส่งซ้ำหากข้อมูลที่ส่งใด ๆ ไม่ได้รับการยอมรับจากผู้รับภายในระยะเวลาหนึ่ง
  • TCP สร้างการเชื่อมต่อก่อนที่จะส่งข้อมูล เราเรียกการเชื่อมต่อนั้นว่าการจับมือกัน 3 ทาง
  • TCP มีกลไกการควบคุมความแออัด
  • TCP สามารถตรวจพบข้อผิดพลาดโดยใช้วิธีการบางอย่าง

ให้เราเรียนรู้เกี่ยวกับ TCP 3-way handshake เป็นหลัก มาเรียนรู้เกี่ยวกับฟิลด์สำคัญใน Wireshark สำหรับการจับมือกัน 3 ทาง







จับมือ 3 ทิศทาง

มีการแลกเปลี่ยนเฟรมสามครั้งที่เกิดขึ้นในการจับมือแบบ 3 ทาง:



  1. ซิน
  2. ดู + แจ็ค
  3. อค

เฟรมแรกจะถูกส่งโดยไคลเอ็นต์ไปยังเซิร์ฟเวอร์เสมอ ให้เราเข้าใจสิ่งนี้จากแผนภาพง่ายๆ:



“ลูกค้า” “เซิร์ฟเวอร์”

Frame1: Client ส่ง SYN frame ไปยังเซิร์ฟเวอร์ ---------------------------------------

<------------------------------------------------------ เซิร์ฟเวอร์ส่งเฟรม SYN+ACK ถึงลูกค้า: Frame2

Frame3: ลูกค้าส่ง ACK frame ไปยังเซิร์ฟเวอร์ ---------------------------------------

เราสามารถเห็นเฟรมทั้งสามนี้ใน Wireshark สามารถใช้ตัวกรอง 'tcp' ใน Wireshark เพื่อดูเฟรม TCP ทั้งหมด นี่คือภาพหน้าจอสำหรับสามเฟรม:





ให้เราเข้าใจรายละเอียดทั้งสามเฟรม:



ซิน

เฟรมนี้ประกอบด้วยข้อมูลมากมายเกี่ยวกับความสามารถของไคลเอ็นต์ในการแจ้งให้เซิร์ฟเวอร์ทราบ ภาพหน้าจอต่อไปนี้แสดงฟิลด์สำคัญทั้งหมดของเฟรม SYN:

นี่คือฟิลด์ที่สำคัญสำหรับเฟรม SYN:

พอร์ตต้นทาง: 50602
ท่าเรือปลายทาง: 80
หมายเลขลำดับ: 0
หมายเลขตอบรับ: 0
ความยาวส่วนหัว: 32 ไบต์
ค่าสถานะ: 0x002 (SYN):
รับทราบ: ไม่ได้ตั้งค่า
กด: ไม่ได้ตั้งค่า
รีเซ็ต: ไม่ได้ตั้งค่า
Syn: Set  -----> ชุดบิตนี้เนื่องจากเป็นเฟรม SYN
ครีบ: ไม่ได้ตั้งค่า

หน้าต่าง: 65535
ตัวชี้ด่วน: 0
ตัวเลือก TCP - ขนาดเซ็กเมนต์สูงสุด: 1460 ไบต์
ตัวเลือก TCP - ขนาดหน้าต่าง: 3 (คูณด้วย 8)
ตัวเลือก TCP - SACK อนุญาต

ดู + แจ็ค

เฟรมนี้มีข้อมูลมากมายเกี่ยวกับความสามารถของเซิร์ฟเวอร์ในการแจ้งลูกค้า ภาพหน้าจอต่อไปนี้แสดงฟิลด์สำคัญทั้งหมดของเฟรม SYN+ACK:

เฟรมนี้ยังยอมรับเฟรม SYN ที่ส่งโดยไคลเอนต์

นี่คือฟิลด์สำคัญสำหรับเฟรม SYN+ACK:

พอร์ตต้นทาง: 80
ท่าเรือปลายทาง: 50602
หมายเลขลำดับ: 0
หมายเลขตอบรับ: 1

ความยาวส่วนหัว: 32 ไบต์ (8)
ค่าสถานะ: 0x012 (SYN, ACK)
รับทราบ: ชุด
กด: ไม่ได้ตั้งค่า
รีเซ็ต: ไม่ได้ตั้งค่า
เขา: ชุด
ครีบ: ไม่ได้ตั้งค่า

หน้าต่าง: 29200
ตัวชี้ด่วน: 0
ตัวเลือก TCP - ขนาดเซ็กเมนต์สูงสุด: 1412 ไบต์
ตัวเลือก TCP - SACK อนุญาต
ตัวเลือก TCP - ขนาดหน้าต่าง: 7 (คูณด้วย 128)

เราจะเห็นว่ามีการตั้งค่าบิต 'รับทราบ' และ 'SYN' ในเฟรมนี้ เนื่องจากเฟรมนี้เป็น SYN+ACK

อค

เฟรมนี้เป็นเฟรมสุดท้ายของการจับมือแบบ 3 ทิศทาง และเป็นการตอบรับ SYN+ACK จากลูกค้าด้วย ภาพหน้าจอต่อไปนี้แสดงฟิลด์สำคัญทั้งหมดของเฟรม ACK:

นี่คือฟิลด์ที่สำคัญสำหรับเฟรม ACK:

พอร์ตต้นทาง: 50602
ท่าเรือปลายทาง: 80
หมายเลขลำดับ: 1
หมายเลขตอบรับ: 1
ความยาวส่วนหัว: 20 ไบต์ (5)
ค่าสถานะ: 0x010 (ACK)
ด่วน: ไม่ได้ตั้งค่า
รับทราบ: ชุด
กด: ไม่ได้ตั้งค่า
รีเซ็ต: ไม่ได้ตั้งค่า
Syn: ไม่ได้ตั้งค่า
ครีบ: ไม่ได้ตั้งค่า

หน้าต่าง: 32768

ที่นี่ ตั้งค่าเฉพาะบิต 'รับทราบ' เนื่องจากเป็นเฟรม ACK

คำอธิบายสำหรับฟิลด์ทั่วไปที่สำคัญบางฟิลด์

พอร์ต 80 : เราสังเกตเห็นหนึ่งพอร์ต 80 ที่คงที่ในบทช่วยสอนนี้ เป็นเพราะนี่คือการจับภาพ HTTP และพอร์ต 80 ได้รับการแก้ไข (ฝั่งเซิร์ฟเวอร์) สำหรับการสื่อสาร HTTP

ลำดับหมายเลข : หมายเลขลำดับของเฟรมนั้น การซิงโครไนซ์เป็นเฟรมแรก ดังนั้นเราจึงมี 0 เป็นหมายเลขลำดับ

ธง TCP:

การรับทราบ – บิตนี้ถูกตั้งค่าหากเฟรมเป็น ACK ตัวอย่าง: SYN+ACK, ACK กรอบ

ซิน – บิตนี้ถูกตั้งค่าหากเฟรมเป็น SYN ตัวอย่าง: SYN

หน้าต่าง : ฟิลด์นี้แชร์ขนาดหน้าต่างสูงสุดของผู้ส่งในโหมดรับ ตัวอย่าง: เรามีหน้าต่างขนาด 65535 ไบต์ในเฟรม SYN ซึ่งหมายความว่าเครื่องรับสามารถรับข้อมูล TCP ได้สูงสุด 65535 ไบต์ ณ เวลาใดก็ได้

กระสอบได้รับอนุญาต : บิตนี้ถูกตั้งค่าหาก send รองรับ SACK [การรับทราบแบบเลือก]

ขนาดเซ็กเมนต์สูงสุด : เราสามารถเรียกมันว่า MSS สิ่งนี้กำหนดเฟรมข้อมูลสูงสุดที่ผู้ส่งสามารถรับได้ ตัวอย่าง: เราได้รับ MSS เป็น 1460 ไบต์ในเฟรม SYN

บทสรุป

เราได้เรียนรู้เกี่ยวกับ TCP 3-way handshake และฟิลด์ที่มีประโยชน์ทั้งหมดสำหรับเฟรม SYN, SYN+ACK และ ACK หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับ TCP คุณสามารถไปที่ลิงก์ RFC นี้ https://tools.ietf.org/html/rfc793 .