html อธิบาย Zero Window และโพรบของ TCP - FCTELE
                                   +8618758069661 [email protected]
ค้นหาผลิตภัณฑ์ คำแนะนำ: เว้นวรรค = AND, | = OR, ! = NOT

ทำไม TCP จึงหยุดส่งทั้งที่สายเคเบิลปกติ? หน้าต่างรับข้อมูลและโพรบตรวจสอบหน้าต่างศูนย์

มีคำถามหรือไม่? โทรหาเราวันนี้!

+8618758069661

หรือฝากข้อความถึงเรา

ข้อความออนไลน์

ทำไม TCP จึงหยุดส่งทั้งที่สายเคเบิลปกติ? หน้าต่างรับข้อมูลและโพรบตรวจสอบหน้าต่างศูนย์

จำนวนการเข้าชม: 11 +11ต้นฉบับโดย FCTELEผู้เขียน: ทีมเทคนิค FCTELE

การควบคุมการไหลด้านรับของ TCP

ทำไม TCP จึงหยุดชั่วคราวได้ทั้งที่ลิงก์ปกติ?

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

01

บัฟเฟอร์

Data can wait in the system buffer before the application reads it.Receive bufferApp

ข้อมูลอาจรออยู่ในบัฟเฟอร์ของระบบก่อนที่แอปพลิเคชันจะอ่าน

02

ข้อมูลป้อนกลับ

The receiver advertises its limit back to the sender.Window = 0SenderReceiver

ฝั่งรับประกาศขีดจำกัดของตนกลับไปยังฝั่งส่ง

03

เปิดอีกครั้ง

Reading can free receive space; probes help obtain the current window state.Probe →← Window updateData →

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

01 ระบุ

บันทึกว่าปลายทางใดประกาศหน้าต่างศูนย์ และอยู่ในการเชื่อมต่อใด

02 เชื่อมโยงข้อมูล

เทียบการเปลี่ยนแปลงของหน้าต่างกับบันทึกการอ่านของแอปพลิเคชันและบันทึกทรัพยากรตามเวลา

03 ทดสอบ

เปรียบเทียบการอ่านอย่างต่อเนื่องกับการอ่านที่หน่วงเวลาในการทดสอบที่ได้รับอนุญาต

รายการตรวจสอบสำหรับการเลือกและการตรวจยืนยัน — ขยาย
รายการตรวจสอบ สิ่งที่ต้องยืนยัน วิธีตรวจสอบ
การเชื่อมต่อ ปลายทางและทิศทาง บันทึกคู่ที่อยู่และพอร์ต
ฝั่งรับ แอปพลิเคชันกำลังอ่านข้อมูล เปรียบเทียบบันทึกของแอปพลิเคชันกับสถานะบัฟเฟอร์
การคืนสู่การทำงานปกติ หน้าต่างเปิดอีกครั้งจริง เชื่อมโยงโพรบ การอัปเดต และข้อมูลที่กลับมาส่งอีกครั้ง

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

เกตเวย์อุตสาหกรรมส่งข้อมูลก่อนหน้าไปยังเซิร์ฟเวอร์ที่แอปพลิเคชันอ่านข้อมูลช้า
รูปที่ 1: ข้อมูลก่อนหน้าเติมบัฟเฟอร์รับจนเต็ม จากนั้นฝั่งรับประกาศหน้าต่างศูนย์ แอปพลิเคชันอ่านข้อมูลจากบัฟเฟอร์

การมาถึงพอร์ตเครือข่ายไม่ใช่จุดสิ้นสุดของเส้นทาง

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

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

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

หน้าต่างรับข้อมูลประกาศความจุใด?

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

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

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

ทำไมต้องแยกการตอบรับออกจากขนาดหน้าต่าง?

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

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

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

ฟิลด์การตอบรับและหน้าต่างของ TCP แยกความคืบหน้าของการรับข้อมูลออกจากช่วงการรับข้อมูลที่ประกาศ
รูปที่ 2: การตอบรับชี้ไปยังไบต์ถัดไปที่คาดว่าจะได้รับ ส่วนหน้าต่างเกี่ยวข้องกับการรับข้อมูลเพิ่มเติม ภาพส่วนหัวไม่ได้วาดตามสัดส่วนจริง

ทำไมจึงส่งโพรบหลังจากหน้าต่างเป็นศูนย์?

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

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

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

สิ่งนี้แตกต่างจากเฟรม Ethernet PAUSE อย่างไร?

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

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

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

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

รวบรวมหลักฐานที่อธิบายเหตุการณ์

เริ่มจากระบุการเชื่อมต่อและทิศทางที่ประกาศหน้าต่างศูนย์ โดยบันทึกที่อยู่ปลายทาง พอร์ต และเวอร์ชันของอุปกรณ์และแอปพลิเคชัน ตรวจสอบการจับมือและทราฟฟิกก่อนและหลังเหตุการณ์ เปรียบเทียบหน้าต่างรับข้อมูล หมายเลขตอบรับ โพรบ และการเปิดหน้าต่างอีกครั้งบนเส้นเวลาเดียวกัน เก็บข้อมูลที่จับได้ไว้ แทนที่จะเก็บเพียงภาพหน้าจอป้าย Zero Window

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

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

ระบุปัญหาแต่ละอย่างให้อยู่ในขั้นตอนที่ถูกต้อง

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

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

เอกสารอ้างอิง

RFC 9293: การส่งโพรบตรวจสอบหน้าต่างศูนย์;Microsoft: หน้าต่างและการปรับสเกลของ TCP;อินเทอร์เฟซ TCP และการจัดการบัฟเฟอร์บน Linux;ข้อมูลสวิตช์อุตสาหกรรมแบบจัดการได้ของ FCTELE. ภาพประกอบทั่วไป ไม่ใช่ผลการวัดผลิตภัณฑ์

แปลจากบทความทางเทคนิคภาษาจีน: อ่านบทความต้นฉบับภาษาจีน.

คำถามที่พบบ่อย

หน้าต่างศูนย์หมายความว่าสายเคเบิลเสียหรือไม่?

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

การตอบรับของ TCP พิสูจน์ว่าการประมวลผลทางธุรกิจเสร็จสิ้นแล้วหรือไม่?

ไม่ใช่ ระบบอาจยอมรับไบต์ไว้แล้ว แต่แอปพลิเคชันยังไม่ได้นำไปใช้หรือประมวลผล

การส่งโพรบแก้ไขแอปพลิเคชันที่ติดค้างได้หรือไม่?

ไม่ได้ โพรบใช้ขอข้อมูลหน้าต่างปัจจุบัน ส่วนการอ่านที่ติดค้างอย่างต่อเนื่องต้องได้รับการตรวจสอบสาเหตุแยกต่างหาก

ขอบเขตและข้อมูลอ่านเพิ่มเติม

แนวคิดทั่วไปของ TCP ไม่ใช่วงจรของผลิตภัณฑ์รุ่นใดรุ่นหนึ่งหรือค่าระยะเวลาที่วัดได้

การควบคุมการไหลของ Ethernet และเฟรม PAUSE · การส่งต่อข้อมูลและการบำรุงรักษาสวิตช์

แชร์บทความนี้