TCP กับ UDP: demystifying ความน่าเชื่อถือและการอภิปรายประสิทธิภาพ

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

งานของเลเยอร์การขนส่งคือวิธีการให้บริการการสื่อสารโดยตรงระหว่างกระบวนการแอปพลิเคชันที่ทำงานบนโฮสต์ที่แตกต่างกันดังนั้นจึงเป็นที่รู้จักกันว่าเป็นโปรโตคอลแบบ end-to-end เลเยอร์การขนส่งซ่อนรายละเอียดหลักของเครือข่ายช่วยให้กระบวนการสมัครดูราวกับว่ามีช่องทางการสื่อสารแบบ end-to-end ตรรกะระหว่างสองเอนทิตีเลเยอร์การขนส่ง

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

TCP คืออะไร? (MyLinking'sแตะเครือข่ายและนายหน้าแพ็คเก็ตเครือข่ายสามารถประมวลผลทั้งแพ็คเก็ต TCP หรือ UDP)
TCP (โปรโตคอลการควบคุมการส่งสัญญาณ) เป็นการเชื่อมต่อที่มุ่งเน้นการเชื่อมต่อโปรโตคอลการสื่อสารเลเยอร์การขนส่งตามไบต์

มุ่งเน้นการเชื่อมต่อ: การเชื่อมต่อที่มุ่งเน้นหมายความว่าการสื่อสาร TCP เป็นแบบหนึ่งต่อหนึ่งนั่นคือการสื่อสารแบบ end-to-end แบบจุดต่อจุดซึ่งแตกต่างจาก UDP ซึ่งสามารถส่งข้อความไปยังโฮสต์หลายรายการในเวลาเดียวกันดังนั้นการสื่อสารแบบหนึ่งต่อหลายครั้งจึงไม่สามารถทำได้
เชื่อถือได้: ความน่าเชื่อถือของ TCP ทำให้มั่นใจได้ว่าแพ็คเก็ตจะถูกส่งมอบให้กับตัวรับสัญญาณได้อย่างน่าเชื่อถือโดยไม่คำนึงถึงการเปลี่ยนแปลงในลิงค์เครือข่ายซึ่งทำให้รูปแบบแพ็คเก็ตโปรโตคอลของ TCP ซับซ้อนกว่า UDP
อิงตามไบต์: ลักษณะของ BYTE-Stream-based ของ TCP ช่วยให้สามารถส่งข้อความทุกขนาดและรับประกันลำดับข้อความ: แม้ว่าข้อความก่อนหน้านี้ยังไม่ได้รับอย่างสมบูรณ์และแม้ว่าจะได้รับไบต์ที่ตามมา TCP จะไม่ส่งไปยังชั้นแอปพลิเคชันสำหรับการประมวลผลและจะวางแพ็คเก็ตซ้ำโดยอัตโนมัติ
เมื่อโฮสต์ A และโฮสต์ B ได้สร้างการเชื่อมต่อแอปพลิเคชันจะต้องใช้สายการสื่อสารเสมือนจริงเพื่อส่งและรับข้อมูลดังนั้นจึงมั่นใจได้ว่าการส่งข้อมูล โปรโตคอล TCP มีหน้าที่ควบคุมงานเช่นการเชื่อมต่อการตัดการเชื่อมต่อและการถือครอง ควรสังเกตว่าที่นี่เราบอกว่าสายเสมือนจริงหมายถึงการสร้างการเชื่อมต่อการเชื่อมต่อโปรโตคอล TCP เท่านั้นระบุว่าทั้งสองฝ่ายสามารถเริ่มการส่งข้อมูลและเพื่อให้แน่ใจว่าความน่าเชื่อถือของข้อมูล การกำหนดเส้นทางและโหนดการขนส่งได้รับการจัดการโดยอุปกรณ์เครือข่าย โปรโตคอล TCP นั้นไม่เกี่ยวข้องกับรายละเอียดเหล่านี้

การเชื่อมต่อ TCP เป็นบริการเต็มรูปแบบซึ่งหมายความว่าโฮสต์ A และโฮสต์ B สามารถส่งข้อมูลในทั้งสองทิศทางในการเชื่อมต่อ TCP นั่นคือข้อมูลสามารถถ่ายโอนระหว่างโฮสต์ A และโฮสต์ B ในโฟลว์แบบสองทิศทาง

TCP จัดเก็บข้อมูลชั่วคราวในบัฟเฟอร์การเชื่อมต่อของการเชื่อมต่อ บัฟเฟอร์การส่งนี้เป็นหนึ่งในแคชที่ตั้งขึ้นระหว่างการจับมือสามทาง ต่อจากนั้น TCP จะส่งข้อมูลในแคชส่งไปยังแคชรับของโฮสต์ปลายทางในเวลาที่เหมาะสม ในทางปฏิบัติเพียร์แต่ละคนจะมีแคชส่งและแคชรับดังที่แสดงไว้ที่นี่:

tcp-udp

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

บัฟเฟอร์รับเป็นพื้นที่ของหน่วยความจำที่ดูแลโดยการใช้งาน TCP ในด้านที่ได้รับซึ่งใช้ในการจัดเก็บข้อมูลที่ได้รับชั่วคราว TCP เก็บข้อมูลที่ได้รับในแคชรับและรอให้แอปพลิเคชันบนอ่าน

โปรดทราบว่าขนาดของแคชส่งและรับแคชมี จำกัด เมื่อแคชเต็ม TCP อาจใช้กลยุทธ์บางอย่างเช่นการควบคุมความแออัดการควบคุมการไหล ฯลฯ เพื่อให้แน่ใจว่าการส่งข้อมูลที่เชื่อถือได้และความเสถียรของเครือข่าย

ในเครือข่ายคอมพิวเตอร์การส่งข้อมูลระหว่างโฮสต์จะดำเนินการโดยกลุ่ม เซ็กเมนต์แพ็คเก็ตคืออะไร?

TCP สร้างเซ็กเมนต์ TCP หรือเซ็กเมนต์แพ็กเก็ตโดยแยกกระแสข้อมูลเข้ามาเป็นชิ้นและเพิ่มส่วนหัว TCP ลงในแต่ละก้อน แต่ละเซ็กเมนต์สามารถส่งได้ในระยะเวลาที่ จำกัด เท่านั้นและต้องไม่เกินขนาดส่วนสูงสุด (MSS) เมื่อลงชื่อลงส่วนแพ็กเก็ตจะผ่านเลเยอร์ลิงค์ เลเยอร์ลิงค์มีหน่วยส่งสูงสุด (MTU) ซึ่งเป็นขนาดแพ็คเก็ตสูงสุดที่สามารถผ่านเลเยอร์ข้อมูลลิงค์ได้ หน่วยส่งสูงสุดมักจะเกี่ยวข้องกับอินเทอร์เฟซการสื่อสาร

ดังนั้นความแตกต่างระหว่าง MSS และ MTU คืออะไร?

ในเครือข่ายคอมพิวเตอร์สถาปัตยกรรมลำดับชั้นมีความสำคัญมากเพราะคำนึงถึงความแตกต่างระหว่างระดับที่แตกต่างกัน แต่ละเลเยอร์มีชื่อที่แตกต่างกัน ในเลเยอร์การขนส่งข้อมูลเรียกว่าเซ็กเมนต์และในเลเยอร์เครือข่ายข้อมูลเรียกว่าแพ็กเก็ต IP ดังนั้นหน่วยส่งสูงสุด (MTU) สามารถพิจารณาได้ว่าเป็นขนาดแพ็คเก็ต IP สูงสุดที่สามารถส่งผ่านเลเยอร์เครือข่ายในขณะที่ขนาดส่วนสูงสุด (MSS) เป็นแนวคิดเลเยอร์การขนส่งที่หมายถึงปริมาณสูงสุดของข้อมูลที่สามารถส่งโดยแพ็กเก็ต TCP ในแต่ละครั้ง

โปรดทราบว่าเมื่อขนาดส่วนสูงสุด (MSS) มีขนาดใหญ่กว่าหน่วยส่งสูงสุด (MTU) การกระจายตัวของ IP จะดำเนินการที่เลเยอร์เครือข่ายและ TCP จะไม่แบ่งข้อมูลที่ใหญ่ขึ้นเป็นส่วนที่เหมาะสมสำหรับขนาด MTU จะมีส่วนในเลเยอร์เครือข่ายที่ทุ่มเทให้กับเลเยอร์ IP

โครงสร้างเซ็กเมนต์แพ็คเก็ต TCP
มาสำรวจรูปแบบและเนื้อหาของส่วนหัว TCP

เซ็กเมนต์ TCP

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

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

บิตควบคุมของเซ็กเมนต์ TCP รวมถึงสิ่งต่อไปนี้:

บิต ACK: เมื่อบิตนี้คือ 1 หมายความว่าฟิลด์ตอบรับการตอบรับนั้นถูกต้อง TCP ระบุว่าบิตนี้จะต้องตั้งค่าเป็น 1 ยกเว้นแพ็คเก็ต SYN เมื่อมีการสร้างการเชื่อมต่อครั้งแรก
บิตแรก: เมื่อบิตนี้คือ 1 จะระบุว่ามีข้อยกเว้นในการเชื่อมต่อ TCP และการเชื่อมต่อจะต้องถูกบังคับให้ตัดการเชื่อมต่อ
บิต syn: เมื่อบิตนี้ถูกตั้งค่าเป็น 1 หมายความว่าการเชื่อมต่อจะถูกสร้างขึ้นและค่าเริ่มต้นของหมายเลขลำดับถูกตั้งค่าในฟิลด์หมายเลขลำดับ
บิตครีบ: เมื่อบิตนี้คือ 1 หมายความว่าจะไม่มีการส่งข้อมูลเพิ่มเติมในอนาคตและต้องการการเชื่อมต่อ
ฟังก์ชั่นและลักษณะต่าง ๆ ของ TCP นั้นเป็นตัวเป็นตนโดยโครงสร้างของกลุ่มแพ็กเก็ต TCP

UDP คืออะไร? (MyLinking'sแตะเครือข่ายและนายหน้าแพ็คเก็ตเครือข่ายสามารถประมวลผลทั้งแพ็คเก็ต TCP หรือ UDP)
ผู้ใช้ DataGram Protocol (UDP) เป็นโปรโตคอลการสื่อสารที่ไม่มีการเชื่อมต่อ เมื่อเทียบกับ TCP UDP ไม่ได้ให้กลไกการควบคุมที่ซับซ้อน โปรโตคอล UDP อนุญาตให้แอปพลิเคชันส่งแพ็คเก็ต IP ที่ห่อหุ้มด้วยการห่อหุ้มโดยตรงโดยไม่ต้องสร้างการเชื่อมต่อ เมื่อนักพัฒนาเลือกใช้ UDP แทน TCP แอปพลิเคชันจะสื่อสารโดยตรงกับ IP

ชื่อเต็มของโปรโตคอล UDP คือโปรโตคอล DataGram ผู้ใช้และส่วนหัวของมันมีเพียงแปดไบต์ (64 บิต) ซึ่งกระชับมาก รูปแบบของส่วนหัว UDP มีดังนี้:

ส่วน UDP

ปลายทางและพอร์ตต้นทาง: วัตถุประสงค์หลักของพวกเขาคือการระบุว่ากระบวนการ UDP ควรส่งแพ็กเก็ตใด
ขนาดแพ็คเก็ต: ฟิลด์ขนาดแพ็คเก็ตมีขนาดของส่วนหัว UDP บวกขนาดของข้อมูล
ตรวจสอบ: ออกแบบมาเพื่อให้แน่ใจว่าการส่งมอบส่วนหัว UDP ที่เชื่อถือได้และข้อมูลบทบาทของการตรวจสอบคือการตรวจสอบว่าเกิดข้อผิดพลาดหรือการทุจริตเกิดขึ้นในระหว่างการส่งแพ็คเก็ต UDP เพื่อให้แน่ใจว่ามีความสมบูรณ์ของข้อมูล

ความแตกต่างระหว่าง TCP และ UDP ใน MyLinking'sแตะเครือข่ายและนายหน้าแพ็คเก็ตเครือข่ายสามารถประมวลผลทั้งแพ็คเก็ต TCP หรือ UDP
TCP และ UDP แตกต่างกันในด้านต่อไปนี้:

TCP กับ UDP

การเชื่อมต่อ: TCP เป็นโปรโตคอลการขนส่งที่มุ่งเน้นการเชื่อมต่อที่ต้องการการเชื่อมต่อที่จะสร้างขึ้นก่อนที่จะสามารถถ่ายโอนข้อมูลได้ ในทางกลับกัน UDP ไม่จำเป็นต้องมีการเชื่อมต่อและสามารถถ่ายโอนข้อมูลได้ทันที

วัตถุบริการ: TCP เป็นบริการสองจุดต่อหนึ่งจุดนั่นคือการเชื่อมต่อมีจุดสิ้นสุดเพียงสองจุดเท่านั้นที่จะสื่อสารกัน อย่างไรก็ตาม UDP รองรับการสื่อสารแบบอินเทอร์แอคทีฟแบบหนึ่งต่อหนึ่งและหลายต่อหลายต่อหลายซึ่งสามารถสื่อสารกับโฮสต์หลายตัวในเวลาเดียวกัน

ความน่าเชื่อถือ: TCP ให้บริการในการส่งข้อมูลอย่างน่าเชื่อถือเพื่อให้มั่นใจว่าข้อมูลนั้นปราศจากข้อผิดพลาดปลอดการสูญเสียไม่เป็นไปได้และมาถึงตามความต้องการ ในทางกลับกัน UDP พยายามอย่างเต็มที่และไม่รับประกันการส่งมอบที่เชื่อถือได้ UDP อาจประสบกับการสูญเสียข้อมูลและสถานการณ์อื่น ๆ ในระหว่างการส่ง

การควบคุมความแออัดการควบคุมการไหล: TCP มีกลไกการควบคุมความแออัดและกลไกการควบคุมการไหลซึ่งสามารถปรับอัตราการส่งข้อมูลตามเงื่อนไขเครือข่ายเพื่อให้แน่ใจว่าความปลอดภัยและความเสถียรของการส่งข้อมูล UDP ไม่มีกลไกการควบคุมความแออัดและกลไกการควบคุมการไหลแม้ว่าเครือข่ายจะแออัดมาก แต่ก็จะไม่ทำการปรับอัตราการส่ง UDP

ส่วนหัวค่าใช้จ่าย: TCP มีความยาวส่วนหัวยาวโดยทั่วไป 20 ไบต์ซึ่งจะเพิ่มขึ้นเมื่อใช้ฟิลด์ตัวเลือก ในทางกลับกัน UDP มีส่วนหัวคงที่เพียง 8 ไบต์ดังนั้น UDP จึงมีค่าใช้จ่ายส่วนหัวที่ต่ำกว่า

TCP กับ UDP

สถานการณ์แอปพลิเคชัน TCP และ UDP:
TCP และ UDP เป็นโปรโตคอลการขนส่งสองชั้นที่แตกต่างกันและพวกเขามีความแตกต่างในสถานการณ์แอปพลิเคชัน

เนื่องจาก TCP เป็นโปรโตคอลที่มุ่งเน้นการเชื่อมต่อจึงถูกใช้เป็นหลักในสถานการณ์ที่จำเป็นต้องมีการส่งข้อมูลที่เชื่อถือได้ กรณีการใช้งานทั่วไปบางกรณี ได้แก่ :

การถ่ายโอนไฟล์ FTP: TCP สามารถมั่นใจได้ว่าไฟล์จะไม่สูญหายและเสียหายในระหว่างการถ่ายโอน
http/https: TCP รับรองความสมบูรณ์และความถูกต้องของเนื้อหาเว็บ
เนื่องจาก UDP เป็นโปรโตคอลที่ไม่มีการเชื่อมต่อจึงไม่รับประกันความน่าเชื่อถือ แต่มีลักษณะของประสิทธิภาพและแบบเรียลไทม์ UDP เหมาะสำหรับสถานการณ์ต่อไปนี้:

การรับส่งข้อมูลแพ็คเก็ตต่ำเช่น DNS (ระบบชื่อโดเมน): การสืบค้น DNS มักจะเป็นแพ็คเก็ตสั้นและ UDP สามารถทำให้เสร็จได้เร็วขึ้น
การสื่อสารมัลติมีเดียเช่นวิดีโอและเสียง: สำหรับการส่งผ่านมัลติมีเดียที่มีข้อกำหนดตามเวลาจริงสูง UDP สามารถให้เวลาแฝงที่ต่ำกว่าเพื่อให้แน่ใจว่าสามารถส่งข้อมูลได้ในเวลาที่เหมาะสม
การสื่อสารออกอากาศ: UDP รองรับการสื่อสารแบบหนึ่งถึงหลายต่อหลายครั้งและสามารถใช้สำหรับการส่งข้อความออกอากาศ

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


เวลาโพสต์: Dec-03-2024