บทความตอนที่  1 OSI Model 7 Layer

สิ่งหนึ่งที่เป็นพื้นฐานที่ควรรู้เมื่อเริ่มต้นศึกษาเกี่ยวกับระบบเครือข่ายหรือสอบ Certificated CCNA ของ Cisco ก็คือ OSI Model ก่อนที่จะลงในรายละเอียดว่า OSI Model มีการทำงานอย่างไร เราควรรู้วัตถุประสงค์ของ Model ดังกล่าวเสียก่อนว่า ถูกคิดค้นขึ้นมาเพื่ออะไร

ก่อนหน้าที่จะมีมาตราฐานดังกล่าว ผู้ผลิตมักจะผลิตสินค้าและบริการตามมาตราฐานของตนเอง (Proprietary) ส่งผลให้ เมื่อผู้ใช้งานต้องการขยายหรือเพิ่มเติมเครื่องลูกข่ายทำได้ยาก เพราะจะก่อให้เกิดการไม่เข้ากันของอุปกรณ์ที่มาจากคนละผู้ผลิต (Non-Compatible) ดังนั้น องค์กรกลาง เช่น ISO (International Organization for Standardization) จีงพัฒนา Model ดังกล่าวขึ้น เพื่อให้เป็นมาตราฐานกลางในการผลิตสินค้าและบริการ

แต่สิ่งที่เป็นประโยชน์อย่างยิ่งสำหรับผู้ดูแลระบบ ที่ได้รับจาก OSI Model ดังกล่าวก็คือ การนำเอา Model ดังกล่าวมาใช้การแก้ไขปัญหาทางด้านระบบเครือข่ายหรือ Application ต่าง เพราะภายใน Model ดังกล่าวมีการแบ่งแยกหน้าที่ในแต่ Layer อย่างชัดเจน ดังนั้นเราจึงสามารถเอาข้อมูลในแต่ละ Layer มาใช้แก้ไขปัญหาต่าง ในระบบได้เป็นอย่างดี

OSI Model 7 Layer เป็น Model ที่ถูกพัฒนาขึ้นมาทีหลัง โดยก่อนหน้านี้มี Model ในลักษณะเดียวกันเกิดขึ้นก่อน แต่ใช้เชิงทางการทหารมากกว่าในเชิงพาณิชย์ โดย Model ดังกล่าวคือ TCP/IP Model ดังนั้นในการศึกษา OSI Model 7 Layer นั้น เรามักจะศึกษาควบคู่ไปกับ TCP/IP Model ไปพร้อม กัน

ในวันพรุ่งนี้ เราจะมาอธิบายต่อในเรื่องของการนำเอา OSI Model 7 Layer มาใช้ในการแก้ไขปัญหา (Troubleshooting) ต่าง ว่ามีรูปแบบในการนำมาแก้ไขปัญหาอย่างไร

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

 

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

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

xxx

                                                                                         

 

บทความตอนที 2 OSI model 7 Layer - การนำเอา OSI Model 7 Layer มาใช้ในการ Troubleshooting

เมื่อครั้งที่แล้ว เราได้เกริ่นถึงที่มาของ  Model ดังกล่าวว่ามาจากอะไร วันนี้เราจะมาจะอธิบายถึงการนำเอา Model ไปใช้ในการทำงาน โดยเฉพาะอย่างยิ่งการแก้ไขปัญหาในระดับ Network แต่ก่อนหน้าที่จะดูวิธีการนำเอา Model นี้ไปแก้ไขปัญหา เรามาทำการพิจารณา Layer ต่าง ๆ ใน OSI Model ก่อน ว่าประกอบด้วย Layer อะไรบ้าง

 

osi 7 layer Details

ใน Model ดังกล่าวจะประกอบด้วย Layer ทั้งสิ้น 7 Layer โดยจะแบ่งออกเป็น 2 ส่วนใหญ่คือ Media Layer และ Host Layer

ทั้งนี้การนำเอา   Model ดังกล่าวไปใช้ในการแก้ไขปัญหาสามารถทำได้ 3 วิธีดังต่อไปนี้

                1.) การใช้ OSI Model มาแก้ไขปัญหาแบบ Top down

                วิธีการแก้ไขปัญหาแบบนี้จะพิจารณาจาก Layer ที่อยู่บนสุดของ  Model ซึ่งในกรณีนี้คือ Layer 7 หรือ Application Layer โดยการพิจารณาจาก Application ที่ user มีการใช้งานเป็นหลักเช่น user A แจ้งมาทาง IT support ว่าไม่สามารถใช้งาน Internet ได้ หากเราทำการแก้ไขปัญหาโดยใช้วิธี Top Down ผู้แก้ไขปัญหาอาจจะพิจารณาจาก Application ที่ user นั้นใช้งานอยู่เช่น  Google Chrome, Internet Explorer หรือ Firefox ว่าสามารถใช้งานได้หรือไม่ มีการตั้งค่าใด ๆ ผิดจากปกติหรือไม่เป็น ถ้าหากว่าผู้แก้ไขปัญหาพิจารณาแล้วว่า Application ดังกล่าวไม่เสียหาย ก็จะทำการตรวจในระดับ Layer ที่ต่ำลงมาเรื่อย ๆ เป็นต้น

                2.) การใช้ OSI Model 7 Layer มาแก้ไขปัญหาแบบ Bottom Up

                วิธีการแก้ไขปัญหาแบบนี้จะพิจารณาจาก Layer ที่อยู่ต่ำสุดของ  Model ซึ่งในกรณีนี้คือ Layer 1 หรือ Physical Layer หากอ้างอิงจากตัวอย่างก่อนหน้านี้ ผู้แก้ไขปัญหาอาจจะพิจารณาจากสายสัญญาณที่เครื่องนั้น ๆ เชื่อมต่ออยู่ หรืออาจจะเป็นคลื่นวิทยุในกรณีที่เครื่องนั้นใช้งาน Wireless ก็ได้ เช่น อาจจะพิจารณาจากสายสัญญาณว่าชำรุดเสียหายหรือไม่ หรือในกรณีที่เป็นคลื่นวิทยุอาจจะพิจารณาจากความเข้มหรือความแรงของสัญญาณคลื่นวิทยุก็ได้ และถ้าหากว่าผู้แก้ไขปัญหาพิจารณาแล้วว่าสายสัญญาณไม่ชำรุดเสียหาย ก็จะทำการพิจารณาใน Layer ที่สูงขึ้นไป เป็นต้น

                3.) การใช้ OSI Model 7 Layer มาแก้ไขปัญหาแบบ Divide and Conquer

                วิธีการแก้ไขปัญหาแบบนี้จะพิจารณาโดยการแบ่ง Layer ออกเป็น 2 ส่วนคือ ส่วนที่เป็น Network หรือ Media Layer และส่วนที่เป็น Application หรือ Host Layer หากอ้างอิงจากตัวอย่างก่อนหน้านี้ ผู้แก้ไขปัญหาอาจจะทำการทดสอบโดยการ test ping จากเครื่อง user ที่มีปัญหา ไปยังปลายทาง ๆ ใด ซึ่งถ้าหากว่าสามารถทดสอบการเชื่อมต่อโดยการ ping ได้สำเร็จ ก็แสดงว่า Layer ในระดับ Network (ระดับ Media Layer ตามภาพ) ไม่ได้มีปัญหาอะไร ปัญหาน่าจะมาจากงานในระดับ Application เป็นต้น

ในวันพรุ่งนี้ เราจะมาดุรายละเอียดในแต่ละ Layer ว่ามีหน้าที่สำคัญอะไร และ Protocol ต่าง ๆ ทำงานอยู่ในระดับใด ใน OSI Model ครับ

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

 

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

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

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

                เมื่อคราวที่แล้ว เราอธิบายถึงวิธีการนำเอา OSI Model ไปใช้ในการแก้ไขปัญหาว่า สามารถนำมาใช้ได้ในลักษณะใดบ้าง สำหรับบทความในตอนนี้จะอธิบายถึงหน้าที่ของแต่ละเลเยอร์ว่าทำหน้าที่อะไรบ้าง อย่างที่เราเกริ่นนำไปแล้ว OSI Model นี้มีจำนวน 7 เลเยอร์ โดยประกอบด้วยเลเยอร์ที่ทำหน้าที่ต่าง ๆ กันดังต่อไปนี้

                Application Layer (Layer 7) – เลเยอร์นี้จะสนับสนุนการทำงานของ Application กับ end-user ซึ่งการติดต่อสือสารกันระหว่าง Application และ end-user, คุณภาพในการให้บริการ (Quality of Service), การยืนยันตัวตนเพื่อก่อให้เกิดความเป็นส่วนตัวและข้อจำกัดอื่น ๆ ที่มีการกำหนดไว้จะถูกควบคุมผ่านทางเลเยอร์นี้ โดยทุก ๆ สิ่งที่เกิดขึ้นภายใน เลเยอร์นี้จะถูกกำหนดและควบคุมโดย Application อีกทั้งบริการต่าง ๆ ที่เกี่ยวข้องกับ Application ก็จะทำงานในเลเยอร์นี้ด้วยเช่นกัน อาทิ file transfer, e-mail, และ service อื่น ๆ

Presentation Layer (Layer 6) – เลเยอร์นี้จะมีหน้าที่สนับสนุนและอธิบาย format ต่าง ๆ ของข้อมูล, การบีบอัดข้อมูล และรวมถึงการเข้ารหัสข้อมูล ซึ่ง format ดังกล่าวจะต้องมีการตกลงกันระหว่างผู้ส่งและผู้รับให้เข้าใจใน format ดังกล่าวให้ตรงกันด้วย เช่น ไฟล์ทีมีนามสกุล .Doc คือเอกสาร, ไฟล์ทีมีนามสกุล .Zip คือไฟล์ที่มีการบีบอัด เป็นต้น หากไม่มีการตกลงกันระหว่างผู้ส่งและผู้รับ ผลที่ได้คือ ผู้รับจะไม่ทราบว่าไฟล์ดังกล่าวคืออะไร เช่น เครื่องผู้รับอาจจะรับไฟล์ที่มีนามสกุล .PDF ซึ่งถ้าหากผู้รับไม่ได้ลง Application ใด ๆ ที่สามารถอ่านหรือเข้าใจไฟล์นามสกุลดังกล่าวได้ ก็จะไม่สามารถอ่านไฟล์ดังกล่าวได้ เป็นต้น ในบางครั้งอาจจะเรียกเลเยอร์นี้ว่า “Syntax Layer”

port number.png                Session Layer (Layer 5) – เลเยอร์นี้จะทำหน้าที่สร้าง, บริหารจัดการ, และปิด session ระหว่างเครื่องต้นทางกับเครื่องปลายทาง คำถามคือ “แล้ว session คืออะไรกันแน่?” คำว่า session เป็นศัพท์ที่ใช้ในการเรียกแทน dialog หรือบทสนทนาที่เกิดขึ้นระหว่างเครื่องต้นทางและเครื่องปลายทาง เช่น เครื่องพีซีของเรา (เครื่องต้นทาง) ต้องการจะไปยังเว๊บเซิร์ฟเวอร์ google เพื่อค้นหาข้อมูล (เครื่องปลายทาง) นั่นหมายถึงจำเป็นอย่างยิ่งที่เครื่องต้นทางจะต้องสร้างบทสนทนา (dialog หรือ session) จากตนเองไปยังเครื่องปลายทาง แต่ในทางปฏิบัตินั้น เราจำเป็นต้องกำหนดคุณลักษณะของเราให้เครื่องปลายทางทราบว่าใครกำลังติดต่อกับเครื่องปลายทางอยุ่ โดยผ่านทางการใช้งาน Port number และ IP Address แต่ในระดับเลเยอร์นี้จะพิจารณา Port number ที่ใช้ในการระบุ session ระหว่างเครื่องต้นทางกับเครื่องปลายทางเป็นหลัก ดังภาพ

                ดังนั้นในเลเยอร์ดังกล่าวนี้ สิ่งที่สำคัญอย่างมากในการทำงานคือ Port number ซึ่งผู้ที่กำลังศึกษาหรือต้องการสอบ Certified CCNA จำเป็นต้องทราบชนิดและช่วงของหมายเลข Port number ที่นิยมใช้งานกัน โดยมีรายละเอียดดังต่อไปนี้

                Port number ในระดับ CCNA ที่เราต้องศึกษานั้นจะมีขนาด 16 bit ซึ่งนั้นหมายถึงจะมีหมายเลขที่เป็นไปได้ของ Port ทั้งสิ้น 2 ยกกำลัง 16 = 0 – 65535 หรือ 65536 Port number โดยจะมีด้วยกันอยู่ 3 ประเภทคือ

1.)    Well Known Port (เริ่มต้นตั้งแต่หมายเลข 0 – 1,023)

โดยปกติจะนิยมกำหนดให้แก่ Application หลัก ๆ  ที่มีการใช้งานอยุ่ในระบบเช่น port 20,21 คือ FTP, port 22 คือ Secure Shall (SSH) , port 23 คือ telnet, port 53 คือ DNS และ port 80 คือ WWW เป็นต้น

(สำหรับพอร์ตหมายเลข 0 นั้นโดยปกติจะนิยมมาใช้ในการเขียนโปรแกรมเป็นหลัก บางครั้งเรียกว่า UNIX Socket Programming Port สำหรับผู้สนใจติดต่อตามใน TCP Port 0 : Unix Socket Programming operation ในคราวต่อไป)

2.)    Registered Port (เริ่มตั่งแต่หมายเลข 1,024-49,151)

โดยปกติจะนิยมกำหนดให้แก่ Application ที่มีการใช้งานในองค์กรหรือ instants-message application ต่าง ๆ เช่น Skype, Lotus Note เป็นต้น

3.)    Dynamic Port (เริ่มตั้งแต่หมายเลข 49,152 – 65,535)

โดยปกติจะถูกใช้งานโดยเครื่องลูกข่ายที่จะติดต่อกับเครื่องเซิร์ฟเวอร์ใด ๆ  ที่อยุ่ภายในหรือภายนอก โดยหมายเลขดังกล่าวจะใช้ในสำหรับการส่งข้อมูลจากเซิร์ฟเวอร์ใด ๆ ที่เครื่องลูกข่ายติดต่ออยู่ เพื่อส่งข้อมูลกลับมาได้อย่างถูกต้อง

               Transport Layer (Layer 4) – เลเยอร์นี้จะรับผิดชอบเรื่องของการบริหารจัดการข้อมูลก่อนจะทำการส่งข้อมูลใด ๆจากต้นทางไปยังปลายทาง เช่น รับผิดชอบการแบ่งข้อมูลออกเป็นส่วนย่อย ๆ ตามมาตราฐานการรับส่งข้อมูล Ethernet (Segmentation) หรือการส่งข้อมูลซ้ำในกรณีที่ส่งข้อมูลแล้วเกิด error ใด ๆ ในการส่ง (Error Recovery) เป็นต้น โดยภายใต้เลเยอร์นี้จะประกอบด้วย protocol หลัก ๆ อยู่ 2 ชนิด ซึ่งสำหรับผู้ที่ต้องการศึกษา CCNA หรือต้องทำการสอบ Certificated CCNA แล้ว protocol 2 ชนิดที่จำเป็นต้องทราบคือ TCP และ UDP Protocol  โดย TCP นี้จะมีลักษณะการทำงานประเภท Connection Oriented และ UDP จะมีลักษณะการทำงานประเภท Connectionless

               ข้อแตกต่างของ Connection Oriented กับ Connectionless คืออะไร? ทำไม Certificated CCNA จึงจำเป็นต้องอธิบายให้ทราบด้วย คำตอบคือ การทำงานที่แตกต่างกันของทั้งสองสิ่งนี้ จะเป็นพื้นฐานที่ใช้ในการอธิบายงานประเภทต่าง ๆ ที่อยู่บน protocol ชนิดต่าง ๆ เช่น routing protocol ประเภท BGP หรือ OSPF เป็นต้น ดังนั้นจึงเป็นเรื่องที่ต้องทำความเข้าใจอย่างมาก เพื่อให้การศึกษาในขั้นที่สูงกว่า CCNA เช่น  CCNP หรือ CCIE นั้นแม่นยำและถูกต้องมากยิ่งขึ้น

อธิบายดังต่อไปนี้ครับ Connection Oriented หมายถึง ทุก ๆ ครั้งก่อนที่จะมีการส่งข้อมูลกันระหว่างต้นทางกับปลายจำเป็นต้องมีกระบวนการสร้างทำงาน 3 อย่าง ดังต่อไปนี้

1.)    สร้างหรือเปิด Connection (Create Connection) ผ่านทางกระบวนการย่อยที่เรียกว่า 3 Way Handshake

2.)    บริหารจัดการ Connection (Management Connection) เช่น ตรวจสอบขนาดของข้อมูล, การแบ่งย่อยชุดข้อมูล  และการส่งข้อมูลซ้ำในกรณีที่ขุดข้อมูลก่อนหน้าที่ส่งไปนั้น error ด้วยสาเหตุใด ๆ ผ่านทางการใช้งาน windows size และ Sequence Number

3.)    ปิด Connection (Terminate Connection) ผ่านทางกระบวนการย่อยทีเรียกว่า 4 Way Handshake

ในขณะที่ Connectionless หมายถึง ทุก ๆ ครั้งก่อนที่จะมีการส่งข้อมูลกันระหว่างต้นทางกับปลายทาง ไมจำเป็นต้องมีกระบวนการเช่นเดียวกันกับ Connection Oriented เลย กล่าวคือ

1.)    ไม่จำเป็นต้องการสร้าง Connection ก่อนการส่งข้อมูล

2.)    ไม่จำเป็นต้องการกระบวนในการบริหารจัดการ Connection

3.)    ไม่จำเป็นต้องมีการปิด Connection หลังจากส่งข้อมูลเสร็จสิ้น

                  จะสังเกตุได้ว่า การทำงานของ Connection Oriented กับ Connectionless นั้นจะตรงกันข้ามกันโดยสิ้นเชิง หากจะให้เห็นภาพง่าย ๆ ในการเปรียบเทียบการทำงานของ Connection Oriented กับ Connectionless นั้น ให้เปรียบเทียบถึงการกดหมายเลขโทรศัพท์และการส่งจดหมาย

                  การกดหมายเลขโทรศัพท์นั้น เปรียบเสมือน Connection Oriented เพราะผู้เรียก (Caller) จำเป้นต้องการสร้าง Connection ก่อนโดยการกดหมายเลขโทรศัพท์ และฟังสัญญาณ เมื่อปลายทางหรือผู้รับ (Recipient) รับสายและส่งเสียงตอบรับ (แสดงว่าการสร้าง Connection สมบูรณ์) ผู้เรียกก็จะทำการส่งข้อมูลที่ต้องการส่ง โดยในระหว่างที่ส่งอาจจะมีการควบคุมการส่งข้อมูลไม่ให้เร็วหรือช้าจนเกินไป หรือแบ่งวรรคประโยคในการสนทนาให้เป็นที่เข้าใจได้ง่าย (Segmentation ข้อมูล) หรือในกรณีที่ปลายทางฟังข้อมูลไม่ทันหรือไม่ได้ยินเสียงของผู้เรียกบางช่วง ผู้เรียกก็ส่งข้อมูลทวนซ้ำไปยังผู้รับ (Error Recovery) เป็นต้น และเมื่อทำการส่งข้อมูลเป็นทีเรียบร้อยแล้ว ทางผู้เรียกก็จะทำการปิดการสนทนาดังกล่าว (Terminate Connection)

                  ในขณะที่ Connectionless นั้นเปรียบเสมือนการส่งจดหมายจากต้นทางไปยังปลายทาง กล่าวคือ ต้นทางทำการเขียนจดหมายหรือเตรียมข้อมูลที่ต้องการจะส่งให้เรียบร้อย เมื่อเตรียมเป็นที่เรียบร้อยแล้วก็จะทำการส่งข้อมูลหรือจดหมายดังกล่าวไปยังปลาย โดยไม่จำเป็นต้องสร้าง Connection ใด ๆ ระหว่างผู้ส่งและผู้รับจดหมายหรือข้อมูล นั่นหมายถึง หากจดหมายดังกล่าวสามารถเข้าถึงไปปลายทางได้ ทางปลายทางก็จะรับชุดข้อมูลนั้นไปดำเนินการต่อ แต่ถ้าหากผู้รับไม่ได้รับจดหมาย ซึ่งอาจจะเกิดการสูญหายระหว่างส่ง หรืออื่น ๆ ทางผู้ส่งและผู้รับก็จะไม่สามารถทราบได้ว่าข้อมูลเกิดการสูญหายหรือตกหล่น เป็นต้น

                  บทความต่อหน้า จะมาอธิบายการทำงานในเชิงลึกของ TCP และ UDP ว่า วิธีการควบคุมการส่งข้อมูลของ TCP มีการทำงานอย่างไร, ชุดข้อมูลที่ใช้ในการบริหารจัดการการส่งข้อมูล ประกอบด้วยอะไรบ้าง และประโยชน์หรือการนำเอา TCP หรือ UDP ไปใช้ มักจะนิยมใช้กับ Application ประเภทใด

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

 

บริษัท เน็ทลอจิก เทรนนิ่ง เซ็นเตอร์ จำกัด  (C.Kiatjindaratana)

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

บทความตอนที่  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 หรือผุ้ทีต้องการข้อมุลทั่วไป **

 

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

เมื่อบทความที่แล้วเราได้เรียนรู้เกี่ยวกับ TCP Header ไปแล้ว ต่อไปจะมาทำการพิจารณาการสร้าง, การบริหารจัดการและการปิด Connection ผ่านทางกระบวนการ 3 กระบวนการทีได้กล่าวไปข้างต้น เราจะเริ่มจากการสร้าง Connection ของ TCP ผ่านทางกระบวนแรกเสียก่อน คือ TCP 3 Way handshake

TCP 3 Way handshake

                กระบวนการดังกล่าวจะใช้สำหรับการสร้าง connection จากผู้ส่งไปยังผู้รับ โดยมีเป้าหมายที่สำคัญของกระบวนการนี้คือ การทำให้ฝั่งตรงข้ามทราบถึงหมายเลข Connection ตนเอง  โดยมีรายละเอียดดังต่อไปนี้

3way.png

1.)    Host A ต้องการสร้าง Connection ไปยัง Host B มันจะทำการกำหนด flag SYN ใน TCP Header เพื่อใช้สำหรับสร้าง Connection และทำการสุ่มค่า Sequence Number ซึ่งจะได้เท่ากับ 100 ซึ่งค่า Sequence Number ก็จะถูกกำหนดไว้ใน TCP Header เช่นกัน และทำการส่งข้อมูลชุดนี้ไปยังผู้รับ (Host B)

2.)    เมื่อ Host B ทำการรับ SYN จาก Host A แล้ว Host B ก็จะทำการตอบกลับโดยการนำเอา Sequence Number จาก Host A มาทำการบวกค่าเพิ่มเข้าไป โดยปกติจะบวกด้วย 1 เสมอ ซึ่งจะทำให้ค่า Acknowledgement Sequence Number = 101 พร้อมกันนี้ Host B ก็จะทำการสุ่มค่า Sequence Number ที่ใช้ในการแสดงหมายเลข Connection ของตนเองขึ้นมาด้วย ซึ่งในกรณีนี้คือหมายเลข 300 และทำการส่งชุดข้อมูลดังกล่าวกลับไปยังเครื่องต้นทาง เราเรียกชุดข้อมูลนี้ว่า “SYN ACK” นั้นหมายความว่าตอนนี้ Host B ทราบหมายเลข Connect ของ Host A แล้ว (ซึ่งในกรณีนี้คือ 100) ด้วยการยืนยันการรับทราบนี้ด้วยการนำเอาค่า Sequence Number ของ Host A มาบวกหนึ่ง (ซึ่งในกรณีนี้คือ 101) พร้อมกับส่งค่าหมายเลข Connection ของตนเองไปให้แก่ Host A เพื่อให้ Host A รับทราบ และยืนยันกลับมาเช่นกัน

3.)    เมื่อ Host A รับชุดข้อมูล SYN ACK มันก็ทำการยืนยันการรับทราบหมายเลข Connect ของ Host B ด้วยการนำเอาค่า Sequence Number ของ Host B มาทำการบวกเพิ่ม (ในกรณีนื้คือ 300+1 = 301) และทำการส่งข้อมูลกลับไป โดยกำหนด Flag เป็น ACK และมีค่า SYN ACK = 301 พร้อมหมายเลข Sequence Number ของตนเองคือ 101 กลับไป

เมื่อมาถึงจุดนี้ จะสังเกตุเห็นว่า Host ทั้งสองเครื่องนั้น ต่างก็ทราบเกี่ยวกับหมายเลข Connection ของทั้งสองฝ่ายเป็นทีเรียบร้อยแล้ว ผ่านทางชุดข้อมุลจำนวน 3 ขุด เราจึงเรียกกระบวนนี้ว่า “3 Way handshake”

Flow control and error recovery

tcphead.jpg               

กระบวนทั้งสองนี้จะเกิดขึ้นหลังจากการสร้าง connection เสร็จสิ้นแล้ว โดย flow control จะกระทำผ่านค่า window size กล่าวคือ โดยปกติการรับส่งข้อมูลระหว่างต้นทางและปลายทางจำเป็นต้องมีการตกลง parameter ที่สำคัญในการส่งให้เรียบร้อยเสียก่อน นั่นคือ จำนวนข้อมูลหรือ segment ที่จะส่งต่อครั้งจะเป็นจำนวนเท่าใด ซึ่งค่านี้จะถูกกำหนดอยู่ใน TCP Header ในส่วนของ Window ซึ่งเรียกว่า “Window Size” (ตามภาพ)

จากภาพค่าดังกล่าวจะมีขนาด 16 bit ซึ่งนั่นหมายถึงค่าที่เป็นไปได้ของค่านี้คือ 0 – 65,535 ซี่งทำให้การรับส่งข้อมูลต่อครั้งของ TCP สามารถส่งผ่านข้อมูลได้เป็นจำนวนมาก จึงทำให้ Routing protocol บางประเภทอาศัยคุณสมบัตินี้ของ TCP ในการรับส่งข้อมูลเกี่ยวกับเส้นทาง (Routing information) เช่น Routing protocol ประเภท BGP เป็นต้น

                กระบวนการในการตกลงค่า Window Size เพื่อใช้กำหนดข้อมูลในการส่งต่อหนึ่งครั้ง มีกระบวนการดังต่อไปนี้

1.)    กรณีที่ค่า  Window size = 1

ในการศึกษาการทำงานของค่า Window size นั้น ให้สมมติว่า เรามีข้อมูลจำนวน 10 ชุด และชุดข้อมูลดังกล่าวมีหมายเลขกำกับ (sequence number ในกรอบสีฟ้าภาพด้านบน) อยู่ทุกชุด ไล่เรียงไปตั้ง 1 ถึง 10 ดังภาพ

 
packet.png
 
 
ในกรณีเริ่มต้นการส่งข้อมูล จากเครื่องต้นทาง (sender) ไปยังเครื่องปลายทาง สมมติค่า window size = 1 (ซึ่งเป็นค่า default ในการทำงานเริ่มต้นในการส่งข้อมูลของ TCP) จะมีลักษณะการทำงานดังต่อไปนี้
 

window size 1.png

 

เครื่องต้นทางทำการข้อมุลหมายเลข 1 (send 1) ไปยังปลายทาง เมื่อปลายทางได้รับข้อมูลสมบูรณ์ ก็จะทำการยืนยันการรับข้อมูลกลับไปยังต้นทางและร้องขอชุดข้อมูลลำดับต่อไป ด้วยการส่งข้อมูลกลับไปยังเครื่องต้นทาง (Ack 2) โดยนัยของชุดข้อมูล Ack 2 หมายถึง “ได้รับข้อมูลชุดที่ 1 เป็นที่เรียบร้อยแล้ว ต้องการข้อมูลหมายเลข 2 ต่อไป”  โดยเมื่อเครื่องปลายทางส่งข้อมูลนี้กลับไปยังเครื่องต้นทาง ก็จะทำให้เครื่องต้นทางรับทราบว่าส่งข้อมูลหมายเลข 1 สมบูรณ์ และจะทำการส่งข้อมูลชุดที่ 2 หรือหมายเลข 2 ให้ต่อไป ดังนั้นเครื่องต้นทางก็จะทำการส่งข้อมูลหมายเลข 2 ไปยังเครื่องปลายทาง เมื่อเครื่องปลายทางได้รับข้อมุลหมายเลข 2 สมบูรณ์ครบถ้วนไม่สูญหาย ก็จะทำการส่งข้อมูล Ack 3 กลับไป เพื่อยืนยันการรับข้อมูลและขอข้อมุลหมายเลขต่อไป ซึ่ง TCP ก็จะทำการส่งและรับข้อมูลไปเรื่อย ๆ จนกระทั่งหมดข้อมูล

2.)    กรณีที่ค่า  Window size = 3

window size 3.png

ในกรณีที่ค่า Window size = 3 การรับส่งข้อมูลก็จะมีลักษณะเดียวกันกับค่า Window size = 1 แต่แตกต่างกันตรงที่ เครื่องต้นทางจะทำการส่งข้อมูลไปครั้งละ 3 ชุด แทนที่จะเป็นครั้งละ 1 ชุด ดังภาพ

        การทำงานของภาพด้านบน แสดงการส่งข้อมูลด้วยค่า Window size = 3 โดยมีการทำงานคือ เครื่องต้นทางทำการส่งชุดข้อมุลหมายเลข 1,2 และ 3 ไปยังเครื่องปลายทาง และถ้าหากเครื่องปลายทางได้รับข้อมุลหมายเลข 1,2 และ 3 ครบถ้วน ก็จะทำการยืนยันการรับและตอบกลับไปยังต้นทางด้วย Ack 4 โดยนัยของชุดข้อมูล Ack 4 หมายถึง “ได้รับข้อมูลชุดที่ 1,2 และ 3 เป็นที่เรียบร้อยแล้ว ต้องการข้อมูลหมายเลข 4 ต่อไป”  โดยเมื่อเครื่องปลายทางส่งข้อมูลนี้กลับไปยังเครื่องต้นทาง ก็จะทำให้เครื่องต้นทางรับทราบว่าส่งข้อมูลหมายเลข 1,2 และ 3 สมบูรณ์ และจะทำการส่งข้อมูลชุดที่ 4, 5 และ 6 ยังไปเครื่องปลายทางต่อไป และเมื่อเครื่องปลายทางได้รับข้อมุลหมายเลข 4,5  และ 6 ครบถ้วนสมบูรณ์ ก็จะทำการส่ง Ack 7 ยืนยันกลับไปยังเครื่องต้นทาง เมื่อเครื่องต้นทางได้รับชุดข้อมูล Ack 7 แล้ว เครื่องต้นทางก็จะทำการส่งข้อมูลต่อไป จนกระทั่งหมดข้อมูล

แต่ในการส่งข้อมูลระหว่างเครื่องต้นทางและเครื่องปลายทางนี้ TCP ก็สามาถทำการเพิ่มหรือลดจำนวนของค่าWindow size ให้เพิ่มขึ้นหรือลดลงได้ โดยการลดลงหรือเพิ่มขึ้นนี้จะขึ้นอยู่กับเครื่องปลายทาง ไม่ใช่เครื่องต้นทาง เหตุผลเพราะเครื่องปลายทางจะเป็นผู้รับข้อมูลไปประมวลผล ดังนั้นการลดหรือเพิ่มจึงขึ้นอยู่กับความสามารถในการประมวลผลของเครื่องปลายทาง เราเรียกกระบวนการในการเพิ่มขึ้นหรือลดลงของค่า Window size ว่า “Sliding Window”

ตัวอย่างและการทำงานของ Sliding Window

sliding 1.png               

เราจะจำลองเหตุการณ์ในการทำงานของ Sliding Windows โดยเริ่มต้นจากค่า Window size = 1 ตามปกติ

               

จนกระทั่งเมื่อทั้งสองเครื่องทำงานไปสักระยะ เครื่องปลายทางสามารถประมวลผลข้อมูลได้เพิ่มขึ้น ก็จะทำการแจ้งไปยังเครื่องต้นทางให้ส่งข้อมูลเพิ่มขึ้น ด้วยการปรับค่า window size จาก 1 ไปเป็น 5 เป็นต้น ดังภาพ

 

slide 3.png

จะสังเกตุเห็นว่าในการปรับค่า Window size เพิ่มขึ้นนั้น เครื่องปลายทางจำเป็นต้องส่งค่า Window size แจ้งไปยังเครื่องต้นทางประมาณ 2-3 ครั้ง เพื่อทำให้เครื่องต้นทางแน่ใจว่า เครื่องปลายทางสามารรถรับข้อมูลจำนวนมากขึ้นไปประมวลผล และเมื่อทำการปรับค่า Window size จาก 1 เป็น 5 เป็นที่เรียบร้อยแล้ว การรับส่งข้อมูลก็จะใช้งาน Window size ค่าดังกล่าวไปเรื่อย ๆ  นั่นหมายความว่า มีความเป็นไปได้ที่ เครื่องปลายทางจะทำการเพิ่มค่า Window size เพิ่มขึ้นจนกระทั่งเต็มขีดจำกัดของค่า Window size คือ 65,535 ถ้าหากความสามารถในการประมวลผลของเครื่องปลายทางสามารถทำได้

และถ้าหากสมมติว่า เครื่องปลายทางหมดความสามารถในการประมวลผล จากข้อมูลที่ทางเครื่องต้นทางส่งมา (ในกรณีคือ window size = 5 ชุด) แต่สามารถนำข้อมูลมาประมวลผลได้เพียง 3 ชุด (window size = 3) และไม่สามารถนำข้อมูลมาประมวลผลได้จำนวน 2 ขุด การทำงานจะเป็นอย่างไร อธิบายได้ตามภาพด้านล่าง ดังนี้

sliding err 1.png

เช่นเดียวกับการปรับเพิ่มค่า Window size การปรับลดค่า Window size จาก 5 เป็น 3 จะเกิดขึ้นประมาณ 2-3 ครั้ง ซึ่งในการปรับเปลี่ยนนี้อาจจะเกิดจากเครื่องปลายทางไม่สามารถประมวลผลจำนวน 5 ชุดได้ แต่สามารถนำข้อมูลมาประมวลได้เพียง 3 ชุดเท่านั้น จึงทำให้ชุดข้อมูลที่ส่งมาจากเครื่องต้นทางเช่น ชุดข้อมูลหมายเลข 18,19,20,21 และ 22 นั้น สามารถประมวลผลได้เพียง ชุดข้อมูลหมายเลข 18,19,20 เท่านั้น สำหรับชุดข้อมูลหมายเลข 21 และ 22 นั้น ก็จะถูกร้องขอไปยังเครื่องต้นทางใหม่อีกครั้ง โดยกำหนดค่า Window size = 3  เมื่อเครื่องต้นทางได้รับคำร้องขอชุดข้อมูลหมายเลข 21 ก็จะทำการส่งข้อมูลที่เคยส่งไปก่อนหน้านี้ ซ้ำอีกครั้ง แต่ก็เพิ่มจำนวนชุดข้อมูลหมายเลข 23,24,25 เข้าไปด้วย (สืบเนื่องจาก Window size = 5) และทำการส่งชุดช้อมูลทั้งหมดไปยังเครื่องปลายทาง เมื่อเครื่องปลายทางทำการรับชุดข้อมูลหมายเลข 21,22,2,3,24,25 ก็สามารถนำมาประมวลผลได้เพียงชุดข้อมูลหมายเลข 21,22,23 เท่านั้น ชุดข้อมูลหมายเลข 24,25 ก็ไม่สามารถนำมาประมวลผลได้อีกเช่นเดิม เครื่องปลายทางก็จะทำการร้องขอชุดข้อมูลหมายเลข 24 อีกครั้ง พร้อมทั้ง่ส่งค่า Window size = 3 ไปยังเครื่องต้นทาง เมื่อเครื่องต้นทางได้รับชุดข้อมูล ก็จะทราบว่าเครื่องปลายทางไม่สามารถประมวลผลชุดช้อมูลจำนวน 5 ชุดได้ ก็จะทำการลดจำนวนชุดข้อมูลลง

Error Recovery

จะสังเกตุเป็นได้ว่า เมื่อเครื่องปลายทางไม่สามารถประมวลผลข้อมูลจำนวน 5 ชุดได้ ทำให้ข้อมูลสูญหายไป 2 ชุด และเครื่องปลายทางก็จะทำการร้องขอชุดข้อมูลที่ไม่สามารถประมวลผลหรือสูญหายไปใหม่ โดยการอ้างอิงหมายเลขของชุดข้อมูล นั่นคือ หมายเลข Sequence Number โดยหมายเลขดังกล่าวมักจะถูกนำมาใช้ประโยชน์ในการระบุชุดข้อมูล และใช้ในการทำ recovery ในกรณีที่เครื่องต้นทางส่งข้อมูลแล้ว เกิดสูญหายด้วยสาเหตุใด ๆ ลองพิจารณาตัวอย่างในการทำ Error recovery ดังภาพต่อไปนี้

error re 1.png              

    

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

 

ลองพิจารณาอีกหนึ่งตัวอย่าง แต่คราวนี้จะมีค่า windows เท่ากับ 3 ดังภาพ

error re 2.png               

                จากภาพ จะสังเกตุเห็นว่าชุดข้อมูลหมายเลข 15 ที่ส่งจากเครื่องต้นทาง ไปยังเครื่องปลายทางนั้นสูญหายด้วยสาเหตุใด ๆ ส่งผลให้เครื่องปลายทางได้รับชุดข้อมูลหมายเลข 13 และ 14 เท่านั้น เครื่องปลายทางจึงร้องขอชุดข้อมูลหมายเลข 15 ซ้ำอีกครั้ง เมื่อเครื่องต้นทางได้รับคำร้องขอให้ส่งชุดข้อมูลหมายเลข 15 เครื่องต้นทางก็จะทำการส่งชุดข้อมูลหมายเลข  15 กลับไปยังเครื่องปลายทาง เมื่อเครื่องปลายทางได้รับชุดข้อมูลหมายเลข 15 แล้ว ก็จะกลับเข้าสู่การทำงานตามปกติต่อไป

                จากคำอธิบาย อาจจะสรุปได้ว่า TCP Flow control และ Error Recovery นั้น จะมีการใช้งาน parameter อยู่ 2 ชนิดที่อยู่ใน TCP Header คือ Window Size สำหรับทำ flow control และ sequence number สำหรับ error recovery

4 way handshake

                เป็นกระบวนการสุดท้าย ที่ใช้ในการปิด Connection หลังจากที่ส่งข้อมูลเป็นทีเรียบร้อยแล้ว ลักษณะการทำงานของ 4 way handshake จะมีลักษณะคล้ายคลึงกับ 3 way handshake แต่แตกต่างกันบ้างเล็กน้อย ดังต่อไปนี้ (ดังภาพ)

                 

4way.png

                จากภาพเป็นกระบวนการในการขอปิด connection โดยสมมติให้มีเครื่องคอมพิวเตอร์ ที่มีลักษณะการทำงานเป็น Server-Client โดย Client อาจจะมีการใช้งาน application บางอย่างบน server เราจำลองสถานะการณ์ว่าเครื่อง Client มีการใช้งาน Application ดังกล่าวเป็นที่เรียบร้อยแล้ว ดังนั้นเครื่อง Client  จะทำการปิด Connect เพราะได้รับ Signal จาก Application โดยการส่งชุดข้อมูลที่มี Flag ใน TCP Header เป็น Finish หรือ Fin ไปยังเครื่องปลายทาง (ข้อมูลหมายเลข #1)

                เมื่อเครื่องปลายทางหรือเครื่อง server ได้รับ TCP flag FIN แล้ว มันจะทำการตอบกลับด้วย ACK (ข้อมูลหมายเลข #2) และทำการส่ง Signal ขึ้นไปบน Application เพื่อแจ้งกับ Application ให้ทำการปิด connection  โดยจังหวะนี้จะเรียกว่า “Half-Close” และเครื่องปลายทางก็จะทำการรอให้ Application เปิด session การทำงานเสร็จสิ้น

                และเมื่อ Application ที่อยู่บนเครื่องปลายทางพร้อมในการปิด Connection แล้วมันจะแจ้งกลับลงไปยัง TCP เมื่อ TCP ได้รับ signal ว่าพร้อมทำการปิด Connection แล้ว TCP ก็จะทำการส่งข้อมูลชุดที่ 3 ซึ่งก็คือ Flag FIN (ข้อมูลหมายเลข #1 หลัง Half-Close) กลับไปยังเครืองต้นทาง เวลาที่ใช้งานในจังหวะนี้อาจจะช้าหรือเร็วก็จะขึ้นอยู่กับ Application ที่อยู่บนเครื่องปลายทางพร้อมที่จะทำการปิด Connection ได้เร็วหรือช้าแค่ไหน

                ย้อนกลับที่จังหวะที่เครื่องปลายทางมีการส่ง Flag FIN กลับมายังเครื่องต้นทางที่ขอปิด Connection เมื่อได้รับ Flag FIN แล้ว มันก็จะเข้าใจว่าเครื่องปลายทางพร้อมในการปิด Connection มันก็จะทำการส่ง Flag ACK (ข้อมูลหมายเลข #1 หลัง Half-Close) ยืนยันกลับไปบอกเครื่องปลายทางว่ามันรับทราบเรื่องของการปิด Connection แล้ว และทำการปิด Connection เป็นอันเสร็จสิ้นกระบวนการ

                ถ้าสังเกตุให้ดีจะเห็นว่า จำนวนชุดข้อมูลที่ใช้ในการปิด Connection นี้จะมีจำนวนทั้งสิ้น 4 ชุด เราจึงเรียกกระบวนการดังกล่าวว่า “4 way handshake”

                บทความตอนหน้า จะมาอธิบายถึง การทำงานของ layer ที่เหลือ คือ layer 3,2 และ 1 ใน OSI Model 7 Layer อย่างละเอียดกันต่อ โปรดจำไว้ว่า ในการเรียน CCNA ให้ได้ผลอย่างเต็มประสิทธิภาพนั้น ทฤษฏีในทุก ๆ เรื่องล้วนแล้วแต่สำคัญทั้งสิ้น ไม่แพ้กระบวนการในการคอนฟิกอุปกรณ์ เพราะทฤษฏีที่ถูกต้องจะช่วยให้ท่านสามารถ Design, Troubleshooting สอบ CCNA Certificated ได้

 

 

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

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

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