บทความตอนที่  3 OSI Model 7 Layer - Functionality explain – 2

                เมื่อครั้งที่แล้วได้อธิบายถึงการหน้าที่ของ transport layer (layer 4) ใน OSI Model วันนี้จะมาอธิบายการทำงานของ TCP ในเชิงลึกกัน ซึ่งผู้ที่เรียน CCNA หรือสอบ Certificated CCNA จำเป็นต้องทราบเบื้องต้นก่อน ซึ่งจะประกอบด้วยหัวข้อดังต่อไปนี้

1.)    การสร้าง connection ของ TCP โดยการใช้กระบวนการทีเรียกว่า  3 way handshake

2.)    การบริหารจัดการ การรับส่งข้อมูล (flow control) และการส่งข้อมูลซ้ำในกรณีที่เกิด error ใด ๆ ในการส่ง (error recovery) ซึ่งทั้งสองส่วนนี้อยู่ในการบริหารจัดการการเชื่อมต่อ (Connection Management)

3.)    การปิด connection ของ TCP โดยการใช้กระบวนการทีเรียกว่า 4 way handshake

TCP Header

tcp header.jpg

          ก่อนที่จะไปดูการทำงานของแต่ละกระบวนการข้างต้น สิ่งที่ควรทราบก่อนคือ TCP Header และ parameter ต่าง ๆ ใน Header  เพราะ TCP จะใช้ Header ในการอธิบายชนิดของข้อมูลที่มีการรับส่งกัน โดย Header ดังกล่าวมีรายละเอียดดังต่อไปนี้

                Header ของ TCP นี้จะมีขนาด 32 bit โดยจะประกอบด้วย parameter ดังต่อไปนี้

- Source Port มีขนาด 16 bit ใช้ในการระบุหมายเลขพอร์ตของเครื่องต้นทางที่ใช้ในการติดต่อกับเครื่องปลาย เช่นเครื่องลูกข่ายต้องการติดต่อกับ Web server ก็อาจจะสุ่มหมายเลขพอร์ตหมายเลข 50,000 ซึ่งหมายเลขดังกล่าวอยู่ใน Range Dynamic Port เริ่มต้นหมายเลขตั้งแต่ 49,152 – 65,535 มาใช้สำหรับติดต่อกับ Web server

- Destination Port มีขนาด 16 bit ใช้ในการระบุหมายเลขพอร์ตของเครื่องปลายทางที่เครื่องต้นทางต้องการจะติดต่อ ซึ่งจากตัวอย่างด้านบน Destination port จะเป็นหมายเลข 80

- Sequence Number มีขนาด 32 bit ใช้ในการระบุหมายเลข Connection ทีต้องการเชื่อมต่อจากเครื่องต้นทางไปยังเครื่องปลายทาง เช่น เครื่องต้นทางทำการสุ่มหมายเลข Connection ได้หมายเลข 500 ก็จะใช้หมายเลขดังกล่าวเป็นหมายเลข Connection เป็นต้น

- Acknowledgement Sequence Number มีขนาด 32 bit ใช้ในการตอบกลับค่า Sequence Number จากเครื่องต้นทาง ซึ่งโดยปกติจะนำเอาค่า Sequence Number ของเครื่องต้นทางมาบวกค่าใด ๆ เพิ่มเข้าไปแล้วตอบกลับ ซึ่งโดยปกติแล้วนิยมบวกด้วย 1 เช่น จากตัวอย่างด้านบนค่า Acknowledgement จะเท่ากับ 5000 + 1 = 50001 ซึ่งค่าดังกล่าวจะถูกใช้ในการตอบกลับไปยังเครื่องต้นทาง เพื่อให้เครื่องต้นทางทราบว่า เครื่องปลายทางรับทราบการสร้าง Connection ด้วยหมายเลข 5000 เป็นที่เรียบร้อยแล้ว

- Header Length มีขนาด 4 bit ใช้ในการอธิบายหรือแจ้งความยาวโดยรวมของ TCP Header

- Reserved มีขนาด 6 bit ซึ่งสงวนการใช้งานเอาไว้ในอนาคต

code bit.png

- Code bit หรือบางครั้งเรียกว่า Flag มีขนาด 6 bit โดยค่านี้มีความสำคัญมาก เพราะใช้ในการอธิบายชุดข้อมูลที่มีการรับส่งกัน ว่าชุดข้อมูลดังกล่าวใช้สำหรับทำอะไร โดยค่าด้านใน 6 bit นี้จะประกอบด้วยค่าย่อยดังต่อไปนี้

1.)    URG – Urgent

2.)    ACK – Acknowledgement

3.)    PSH – Push

4.)    RST – Reset

5.)    SYN – Synchronize

6.)    FIN – Finish

โดยค่าย่อยทั่ง 6 ชนิดนี้จะมี 4 ค่าย่อยทีใช้ในการสร้าง, บริหารจัดการ, และปิด Connection ซึ่งได้แก่

  1. SYN – จะใช้สำหรับการสร้าง Connection
  2. ACK – จะใช้ในการยืนยันหรือตอบกลับการรับข้อมูลไปยังเครื่องต้นทาง
  3. FIN – จะใช้ในการปิด Connection
  4. RST – จะใช้ในการยกเลิก Connection ในกรณีที่เกิด Error ใด ๆ

       ส่วน PSH และ URG จะมีหน้าที่ดังต่อไปนี้

  1. PSH - ในการเข้าใจการทำงานของ PSH flag นั้น ก่อนอื่นเราจำเป็นต้องเข้าใจว่า TCP buffer data นั้นทำงานอย่างไรเสียก่อน อย่างที่เราทราบ TCP นี้ทำงานอยู่ใน layer 4 ใน OSI Model โดย Upper Layer ที่อยู่ด้านบนของมันจะมองว่า TCP เป็นเสมือน Socket ที่ใช้ในการอ่านหรือเขียนข้อมูลที่ต้องการจะใช้ในการติดต่อสือสารกัน โดยการมี buffer นั้นจะสามารถทำให้ application ใด ๆ สามารถอ่านหรือเขียนข้อมูลได้ตลอดเวลา โดย buffer นี้จะมีการใช้งานทั้งสองด้านของ TCP Connection ตามภาพ

tcp buffer.png

          การมี buffer นั้นจะทำการโอนถ่ายข้อมูลมีประสิทธิภาพมากขึ้น เมื่อผู้ส่งต้องการส่งข้อมูลที่มากกว่าขนาดปกติ (Maximum Segment Size - MSS) เช่น การ transfer ไฟล์ขนาดใหญ่ เป็นต้น แต่อย่างไรก็ตาม การมีขนาดของ buffer ที่ใหญ่จนเกินไปก็อาจส่งผลเสียมากกว่าผลดีให้แก่งานประเภท real-time ที่จำเป็นต้องส่งข้อมูลอย่างรวดเร็วและต่อเนื่อง ตัวอย่างเช่น จะเกิดอะไรขึ้นเมื่อเราใช้งาน Telnet session ถ้ามี buffer ขนาดใหญ่จนเกินไป ส่งผลให้ TCP จะต้องรอให้ข้อมูลเข้ามาใน buffer จนเพียงพอเสียก่อน ถึงจะทำการส่งข้อมูลออกไปต่อหนึ่งครั้ง นั่นอาจจะทำให้เราต้องพิมพ์ข้อมูลจำนวนมากเข้าไป ก่อนหน้าที่ TCP จะทำการส่งข้อมูลไปยังปลายทาง ซึ่งแน่นอนมันก่อให้เกิดผลเสียมากกว่าผลดี

          ดังนั้นเราแก้ไขปัญหาหรือข้อด้อยนี้ด้วย PSH flag กล่าวคือ เมื่อมีข้อมูลที่ application เขียนลงมาที่ socket แล้วมี option "pushing" กำหนดอยู่ จะทำให้ TCP ทำการส่งข้อมูลนั้น ๆ ออกไปทันที แทนที่จะต้องรอให้ buffer มีข้อมุลเพียงพอจึงทำการส่ง โดยฟิลด์ของ PSH จะถูกกำหนดให้เป็น 1 (เปิดการใช้งาน) แทนที่จะเป็น 0 (ปิดการใช้งาน) และเมื่อผู้รับ รับข้อมูลที่มี PSH flag ทำงานอยู่ มันจะทำการส่งข้อมูลเหล่านั้นไปยัง Application ทันที             โดยสรุปแล้ว TCP push นั้นจะก่อให้เกิดการรับส่งข้อมูลระหว่าง application ของเครื่องต้นทางและเครื่องปลายทางจะรวดเร็วขึ้น

6.) URG – Flag นี้จะใช้ในการประกาศไปยังเครื่องปลายทางให้ทราบว่า ชุดข้อมูลที่บรรจุอยู่ใน segment นี้จำเป็นต้องถูก process อย่างเร่งด่วนและควรมีการกำหนดระดับความสำคัญ ถ้าหากเครื่องปลายทางได้รับข้อมูลที่มี flag ดังกล่าว มันจะทำการพิจารณา urgent pointer ซึ่งจะทำหน้าที่แจ้งให้เครื่องปลายทางทราบว่าชุดข้อมูลดังกล่าวมีความยาวเท่าไหร่และเริ่มจุดไหนเป็นจุดแรก ตามภาพ

urg.png

                                ครั้งหน้า เราจะมาอธิบายเรืองการสร้าง, การบริหารจัดการ และการปิด Connection ต่อไป

 

++ Real Skills, Real Solution @ Netlogic Training Center ++

บริษัท Netlogic Training Center จำกัด (C.Kiatjindaratana)

** รายละเอียดข้างต้นเหมาะสำหรับผุ้ที่ต้องการสอบ CCNA หรือผุ้ทีต้องการข้อมุลทั่วไป **