Three-way Handshake
posted on 23 Oct 2008 21:20 by nisaratmsitเป็นวิธีการส่งแพ็กเก็ตที่สามารถช่วยแก้ปัญหาในเรื่องแพ็กเก็ตซ้ำซ้อนได้ดี แต่วิธีนี้จำเป็นจะต้องสร้างช่องสื่อสารให้ได้ก่อนที่จะเริ่มรับ-ส่งข้อมูล อย่างไรก็ตาม แพ็กเก็ตควบคุมที่ใช้ในการต่อรองค่าตัวแปรสำหรับการสื่อสารต่างๆ อาจเกิดการตกค้างอยู่ในระบบได้ ทำให้การกำหนดค่าหมายเลขลำดับมีปัญหาไปด้วย
ตัวอย่างของ Three-way-handshake บรรทัดที่ 16-18 ของ Protocol TCP
เป็นการแสดงการทำ Three-way-handshake โดยมีของ Protocol TCP มี segment ที่เกี่ยวข้องดังนี้
1. SYN
2. SYN, ACK
3. ACK
โดยที่มีเครื่องลูก (Client) คือหมายเลข IP 192.168.1.33 ที่ Port 1184 ติดต่อไปยังเครื่องแม่ (Server) ที่หมายเลข IP 216.239.61.104 ที่ Port 80 มีการทำงานดังนี้
1. TCP ของเครื่องผู้ใช้ส่งเซกเมนต์ที่บรรจุเลขลำดับนี้ไปยังเครื่องของ server พร้อมทั้งแฟล็ก SYN ให้เป็น "1"(เซกเมนต์ 1)
2.TCP ของเครื่อง server ได้รับเซกเมนต์จากเครื่องผู้ใช้แล้วตอบกลับด้วยเซกเมนต์ SYN (เซกเมนต์ 2)พร้อมทั้งเซ็ตแฟล็ก ACK เพื่อแจ้งว่าเซกเมนต์ 1 โดยใช้เลขลำดับที่ได้รับจากทางเครื่องของผู้ใช้บวกด้วย 1
3. TCP ของเครื่องผู้ใช้ จะส่งเซกเมนต์ตอบกลับไป (เซกเมนต์ 3) โดยเซ็ตแฟล็ก ACK และใช้เลขลำดับที่ได้รับจากเครื่อง server บวกด้วยหนึ่ง
แสดงได้ตามตารางดังนี้
|
ลำดับ |
Segment |
Source |
Destination |
Seq No. |
Ack No. |
การคำนวณ Ack |
||
|
IP Address |
Port |
IP Address |
Port |
|||||
|
1 |
SYN | 192.168.1.33 (Client) |
1184 |
216.239.61.104 (Server) |
80 |
0 |
0 |
|
|
2 |
SYN,ACK | 216.239.61.104 (Server) |
80 |
192.168.1.33 (Clinet) |
1184 |
0 |
1 |
Seq.No SYN = 0+1 |
|
3 |
ACK | 192.168.1.33 (Client) |
1184 |
216.239.61.104 (Server) |
80 |
1 |
1 |
Seq.No SYN = 0+1 |