Score:1

การตอบกลับข้อความที่ได้รับ (บน TCP) บนชั้นแอปพลิเคชันนั้นไร้ประโยชน์หรือไม่ เพื่อบอกผู้ส่งว่าได้รับข้อความเรียบร้อยแล้ว

ธง cn

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

กล่าวอีกนัยหนึ่ง

ชั้นการขนส่งมีหน้าที่รับผิดชอบในการจัดส่งแบบ end-to-end ที่ปราศจากข้อผิดพลาด ของข้อมูลจากโฮสต์ต้นทางไปยังโฮสต์ปลายทาง

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

ru flag
พิจารณาว่าไคลเอนต์ HTTP ส่งคำขอ POST ไปยังเซิร์ฟเวอร์ ไคลเอ็นต์จะยินดีหรือไม่หากเซิร์ฟเวอร์ไม่ตอบกลับ
John avatar
cn flag
@Chitholian ไม่ใช่ตัวอย่างที่ดีแน่นอน
Score:9
ธง se

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

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

John avatar
cn flag
ฉันเข้าใจและตกลงว่า "ACK จะถูกส่งเมื่อได้รับข้อมูลเรียบร้อยแล้ว" แต่ทำไมคุณถึงหมายถึง "ใส่ลงในแอปพลิเคชันซ็อกเก็ตบัฟเฟอร์เท่าที่ฉันรู้ ACKs ไม่สามารถ **ไม่** เป็นที่รู้จักโดยแอปพลิเคชัน **แน่นอน**ï¼
Steffen Ullrich avatar
se flag
@John: โดยทั่วไปแล้ว TCP จะจัดการโดยเคอร์เนล OS ด้านแอปพลิเคชันมีซ็อกเก็ตที่สามารถอ่านและเขียนได้ หากเคอร์เนลได้รับข้อมูล ข้อมูลจะถูกใส่ลงในบัฟเฟอร์หน่วยความจำที่เกี่ยวข้องกับบัฟเฟอร์ - บัฟเฟอร์การอ่าน การอ่านในภายหลังจากแอปพลิเคชันจะดึงข้อมูลจากบัฟเฟอร์การอ่านนี้ ในกรณีของการบล็อกการอ่าน (เช่น แอปพลิเคชันที่รอข้อมูล) ข้อมูลจะถูกใส่ลงในบัฟเฟอร์การอ่านโดยเคอร์เนล จากนั้นแอปพลิเคชันที่ถูกบล็อกจะถูกปลุกให้ตื่นขึ้นเพื่อให้สามารถอ่านข้อมูลจากบัฟเฟอร์ได้
John avatar
cn flag
เข้าใจแล้ว. คุณหมายถึงข้อมูล **นอกเหนือจาก** ACK จะถูกใส่ลงในบัฟเฟอร์ซึ่งแอปพลิเคชันจะอ่านในภายหลัง ขอบคุณสำหรับคำชี้แจงของคุณ
Steffen Ullrich avatar
se flag
@John: ใช่ ฉันไม่ได้ถือว่า ACK เป็น *data* นี่เป็นเพียงข้อมูลการขนส่งเท่านั้น ตอนนี้ฉันทำให้ชัดเจนมากขึ้นโดยพูดถึง *เพย์โหลด* แทน
John avatar
cn flag
รับทราบครับ ขอบคุณมากครับ

โพสต์คำตอบ

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