Page 226 - Computer Network
P. 226
27.3. TRANSPORT CONTROL PROTOCOL (TCP) 217
• Window Size: ใช้กับเซกเมนต์ของ ACK เพื่อระบุจำนวนของข้อมูลที่สามารถรับได้เป็นไบต์ในเลขฐาน 16
เพื่อช่วยในการทำ flow control บน TCP
• Checksum: ใช้ในการตรวจสอบความผิดพลาดที่อาจเกิดในส่วนของข้อมูล
• Urgent Point: เพื่อใช้งานกับบิต U หรือ URG หากบิตนี้ถูกกำหนดให้เป็น 1 จะมีความหมายสองประการ
คือ หนึ่งภาคส่งต้องการที่จะส่งข้อมูลที่เร่งด่วน (Urgent) สองระบุถึงจุดสิ้นสุดของข้อมูล Urgent
• Options หากไม่มีการใช้งานฟิลด์ Options นี้ สิ่งที่ตามมาจะเป็นข้อมูลที่ต้องการส่ง แต่หากมีการใช้ฟิลด์
Options จะทำให้ค่าของ HLEN มากกว่า 5 ซึ่งการใช้งานฟิลด์ Options จะไม่ขอกล่าวถึงในที่นี้
27.3.3 Three-way Handshaking
การทำงานของ TCP เป็นแบบ connection-oriented ทำให้ก่อนที่จะส่งข้อมูลระหว่างโนด TCP ต้องสร้างการ
book)
เชื่อมต่อขึ้นก่อน เรียกว่า TCP Threeway Handshake โดยที่ภาคส่งจะเริ่มส่ง SYN เซกเมนต์ (SYN = 1) พร้อม
ทั้ง Sequence number ที่ภาคส่งกำหนดขึ้น เรียกว่า Initial Sequence Numbers (ISN) เพื่อให้ภาครับรับทราบ
ถึงการเริ่มสร้างการเชื่อมต่อระหว่างกัน จากนั้นภาครับจะตอบกลับด้วย ACK เซกเมนต์ (ACK = 1) พร้อมทั้ง ISN
ของตน ก่อนที่ภาคส่งจะส่ง ACK เซกเมนต์อีกครั้งก่อนการสื่อสารจริงจะเกิดขึ้น นอกเหนือจาก ISN แล้ว ทั้งสอง
สามารถกำหนดค่าของ option อื่นเพิ่มเติมได้เช่นกัน
1 (partial 2
only 3
KKU รูปที่ 27.6: การเชื่อมต่อแบบ Three-way handshaking
รูปที่ 27.7 แสดงเซกเมนต์ของ TCP จากไคลเอนต์ (ตำแหน่ง 1 ) สมมติให้ต้นทางใช้พอร์ตหมายเลข 3456
และร้องขอไปยังปลายทางที่พอร์ตหมายเลข 21 ซึ่งเป็น Well-Known port ของ FTP กำหนดให้ TCP เซกเมนต์ที่
ส่งมี Sequence number เริ่มต้นเป็น 1000 ทำให้หากเซกเมนต์นี้สูญหาย TCP จะส่งออกไปใหม่โดยใช้หมายเลขนี้
ดังเดิม
เนื่องจากเซกเมนต์นี้เป็นการร้องขอการเชื่อมต่อระหว่างต้นทางและปลายทาง ทำให้ส่วนของ ACK ไม่มีความ
หมายใดๆ ในส่วนของ HLEN ในที่นี้มีค่าเท่ากับ 5 หมายถึงไม่มีการกำหนด Options ใดๆ และฟิลด์ Reserve มีค่า
เป็น 0 เพื่อแสดงว่าไม่มีการใช้งาน ในส่วนของบิต Control มีส่วนของบิต SYN เท่านั้นที่ถูกกำหนดให้เป็น 1 นอก
นั้นมีค่าเป็น 0 ทำให้ Urgent Pointer ไม่มีความหมายใดๆ นอกจากนี้ในเซกเมนต์นี้ ฟิลด์ Window size ไม่มีความ
หมายใดๆเช่นกัน ในส่วนของฟิลด์ Checksum จะบันทึกค่าที่คำนวณได้ เพื่อให้ภาครับใช้ตรวจสอบความถูกต้อง
ของข้อมูลที่ได้รับ
จากนั้นเมื่อภาครับได้รับการร้องขอนี้ ดังแสดงรูปที่ 27.6 เซกเมนต์ที่เซิร์ฟเวอร์ตอบ ACK กับมายังไคลเอนต์
สามารถแสดงในรูปที่ 27.8
รูปที่ 27.8 แสดงที่ตำแหน่ง 2 จะเห็นว่าหมายเลขพอร์ตต้นทางและปลายทางจะสลับที่กัน เซิร์ฟเวอร์กำหนด
Sequence number ของตนเองเป็น 3000 พร้อมตอบกับด้วย ACK หมายเลข 1001 (เนื่องจาก SYN จะใช้ 1 ไบต์)

