ການຂົນສົ່ງຄວາມຫນ້າເຊື່ອຖື TCP
ພວກເຮົາທຸກຄົນຄຸ້ນເຄີຍກັບ TCP protocol ເປັນໂປໂຕຄອນການຂົນສົ່ງທີ່ເຊື່ອຖືໄດ້, ແຕ່ມັນຮັບປະກັນຄວາມຫນ້າເຊື່ອຖືຂອງການຂົນສົ່ງແນວໃດ?
ເພື່ອບັນລຸການສົ່ງຂໍ້ມູນທີ່ເຊື່ອຖືໄດ້, ປັດໃຈຈໍານວນຫຼາຍຕ້ອງໄດ້ຮັບການພິຈາລະນາ, ເຊັ່ນ: ຂໍ້ມູນເສຍຫາຍ, ການສູນເສຍ, ການຊໍ້າຊ້ອນ, ແລະ shards ອອກຈາກຄໍາສັ່ງ. ຖ້າບັນຫາເຫຼົ່ານີ້ບໍ່ສາມາດແກ້ໄຂໄດ້, ການສົ່ງຕໍ່ທີ່ເຊື່ອຖືໄດ້ບໍ່ສາມາດບັນລຸໄດ້.
ດັ່ງນັ້ນ, TCP ຈ້າງກົນໄກເຊັ່ນ: ຈໍານວນລໍາດັບ, ການຕອບຮັບການຮັບຮູ້, ການຄວບຄຸມການສົ່ງຄືນ, ການຄຸ້ມຄອງການເຊື່ອມຕໍ່, ແລະການຄວບຄຸມປ່ອງຢ້ຽມເພື່ອບັນລຸການສົ່ງສັນຍານທີ່ເຊື່ອຖືໄດ້.
ໃນເອກະສານນີ້, ພວກເຮົາຈະສຸມໃສ່ປ່ອງຢ້ຽມເລື່ອນ, ການຄວບຄຸມການໄຫຼແລະການຄວບຄຸມຄວາມແອອັດຂອງ TCP. ກົນໄກ retransmission ແມ່ນກວມເອົາແຍກຕ່າງຫາກໃນພາກຕໍ່ໄປ.
ການຄວບຄຸມການໄຫຼເຂົ້າເຄືອຂ່າຍ
ການຄວບຄຸມການໄຫຼຂອງເຄືອຂ່າຍຫຼືທີ່ຮູ້ຈັກເປັນການຄວບຄຸມການຈະລາຈອນເຄືອຂ່າຍແມ່ນເປັນການສະແດງໃຫ້ເຫັນຄວາມສໍາພັນ subtle ລະຫວ່າງຜູ້ຜະລິດແລະຜູ້ບໍລິໂພກໄດ້. ເຈົ້າອາດຈະພົບສະຖານະການນີ້ຫຼາຍຢູ່ບ່ອນເຮັດວຽກຫຼືໃນການສໍາພາດ. ຖ້າຜູ້ຜະລິດສາມາດຜະລິດໄດ້ຫຼາຍເກີນຄວາມສາມາດຂອງຜູ້ບໍລິໂພກທີ່ຈະບໍລິໂພກ, ມັນຈະເຮັດໃຫ້ແຖວເກັດທີ່ຢູ່ເພີ່ມຂຶ້ນຢ່າງຕໍ່ເນື່ອງ. ໃນກໍລະນີທີ່ຮ້າຍແຮງກວ່າເກົ່າ, ທ່ານອາດຈະຮູ້ວ່າເມື່ອຂໍ້ຄວາມ RabbitMQ ລວບລວມຫຼາຍເກີນໄປ, ມັນສາມາດເຮັດໃຫ້ເກີດການເສື່ອມໂຊມຂອງເຄື່ອງແມ່ຂ່າຍ MQ ທັງຫມົດ. ດຽວກັນນີ້ແມ່ນຄວາມຈິງສໍາລັບ TCP; ຖ້າປະໄວ້ໂດຍບໍ່ໄດ້ກວດເບິ່ງ, ຂໍ້ຄວາມຫຼາຍເກີນໄປຈະຖືກໃສ່ເຂົ້າໃນເຄືອຂ່າຍ, ແລະຜູ້ບໍລິໂພກຈະເກີນຄວາມສາມາດຂອງເຂົາເຈົ້າ, ໃນຂະນະທີ່ຜູ້ຜະລິດຈະສືບຕໍ່ສົ່ງຂໍ້ຄວາມທີ່ຊ້ໍາກັນ, ເຊິ່ງມີຜົນກະທົບຢ່າງຫຼວງຫຼາຍຕໍ່ການປະຕິບັດຂອງເຄືອຂ່າຍ.
ເພື່ອແກ້ໄຂປະກົດການນີ້, TCP ສະຫນອງກົນໄກສໍາລັບຜູ້ສົ່ງເພື່ອຄວບຄຸມຈໍານວນຂໍ້ມູນທີ່ສົ່ງໂດຍອີງໃສ່ຄວາມສາມາດຮັບຕົວຈິງຂອງຕົວຮັບ, ເຊິ່ງເອີ້ນວ່າການຄວບຄຸມການໄຫຼ. ຜູ້ຮັບຮັກສາປ່ອງຢ້ຽມຮັບ, ໃນຂະນະທີ່ຜູ້ສົ່ງຮັກສາປ່ອງຢ້ຽມສົ່ງ. ມັນຄວນຈະສັງເກດວ່າ Windows ເຫຼົ່ານີ້ແມ່ນພຽງແຕ່ສໍາລັບການເຊື່ອມຕໍ່ TCP ດຽວແລະບໍ່ແມ່ນການເຊື່ອມຕໍ່ທັງຫມົດແບ່ງປັນປ່ອງຢ້ຽມ.
TCP ໃຫ້ການຄວບຄຸມການໄຫຼໂດຍການໃຊ້ຕົວແປສໍາລັບປ່ອງຢ້ຽມຮັບ. ປ່ອງຢ້ຽມຮັບໃຫ້ຜູ້ສົ່ງຊີ້ບອກວ່າພື້ນທີ່ແຄດຍັງມີຢູ່. ຜູ້ສົ່ງຄວບຄຸມຈໍານວນຂໍ້ມູນທີ່ສົ່ງຕາມຄວາມອາດສາມາດຍອມຮັບຕົວຈິງຂອງຜູ້ຮັບ.
ເຈົ້າພາບຜູ້ຮັບແຈ້ງເຕືອນຜູ້ສົ່ງກ່ຽວກັບຂະຫນາດຂອງຂໍ້ມູນທີ່ມັນສາມາດໄດ້ຮັບ, ແລະຜູ້ສົ່ງຈະສົ່ງເຖິງຂອບເຂດຈໍາກັດນີ້. ຂໍ້ຈໍາກັດນີ້ແມ່ນຂະຫນາດປ່ອງຢ້ຽມ, ຈື່ TCP header? ມີກ່ອງປ່ອງຢ້ຽມຮັບ, ເຊິ່ງໃຊ້ເພື່ອຊີ້ບອກຈໍານວນຂອງ bytes ທີ່ຜູ້ຮັບສາມາດຫຼືເຕັມໃຈທີ່ຈະໄດ້ຮັບ.
ໂຮສຜູ້ສົ່ງຈະສົ່ງແພັກເກັດການສືບສວນ window ເປັນໄລຍະໆ, ເຊິ່ງໃຊ້ເພື່ອກວດຫາວ່າແມ່ຂ່າຍຕົວຮັບຍັງສາມາດຍອມຮັບຂໍ້ມູນໄດ້ຫຼືບໍ່. ເມື່ອ buffer ຂອງຜູ້ຮັບຕົກຢູ່ໃນອັນຕະລາຍຂອງການ overflow, ຂະຫນາດຂອງປ່ອງຢ້ຽມແມ່ນຖືກກໍານົດເປັນຄ່າຂະຫນາດນ້ອຍກວ່າເພື່ອແນະນໍາຜູ້ສົ່ງໃຫ້ຄວບຄຸມຈໍານວນຂໍ້ມູນທີ່ສົ່ງ.
ນີ້ແມ່ນແຜນວາດການຄວບຄຸມກະແສເຄືອຂ່າຍ:
ການຄວບຄຸມຄວາມແອອັດຂອງເຄືອຂ່າຍ
ກ່ອນທີ່ຈະແນະນໍາການຄວບຄຸມ congestion, ພວກເຮົາຈໍາເປັນຕ້ອງເຂົ້າໃຈວ່ານອກເຫນືອຈາກປ່ອງຢ້ຽມຮັບແລະປ່ອງຢ້ຽມສົ່ງ, ຍັງມີປ່ອງຢ້ຽມ congestion, ເຊິ່ງສ່ວນໃຫຍ່ແມ່ນໃຊ້ເພື່ອແກ້ໄຂບັນຫາຂອງອັດຕາທີ່ຜູ້ສົ່ງເລີ່ມສົ່ງຂໍ້ມູນໄປຫາປ່ອງຢ້ຽມຮັບ. ດັ່ງນັ້ນ, ປ່ອງຢ້ຽມຄວາມແອອັດຍັງຖືກຮັກສາໄວ້ໂດຍຜູ້ສົ່ງ TCP. ພວກເຮົາຕ້ອງການສູດການຄິດໄລ່ເພື່ອຕັດສິນໃຈວ່າຂໍ້ມູນຫຼາຍປານໃດທີ່ເຫມາະສົມທີ່ຈະສົ່ງ, ນັບຕັ້ງແຕ່ການສົ່ງຂໍ້ມູນຫນ້ອຍເກີນໄປຫຼືຫຼາຍເກີນໄປແມ່ນບໍ່ເຫມາະສົມ, ເພາະສະນັ້ນແນວຄວາມຄິດຂອງປ່ອງຢ້ຽມ congestion.
ໃນການຄວບຄຸມການໄຫຼເຂົ້າຂອງເຄືອຂ່າຍທີ່ຜ່ານມາ, ສິ່ງທີ່ພວກເຮົາຫຼີກເວັ້ນແມ່ນຜູ້ສົ່ງຕື່ມຂໍ້ມູນໃສ່ແຄດຂອງຜູ້ຮັບ, ແຕ່ພວກເຮົາບໍ່ຮູ້ວ່າມີຫຍັງເກີດຂື້ນໃນເຄືອຂ່າຍ. ໂດຍປົກກະຕິ, ເຄືອຂ່າຍຄອມພິວເຕີຢູ່ໃນສະພາບແວດລ້ອມຮ່ວມກັນ. ດັ່ງນັ້ນ, ອາດຈະມີຄວາມແອອັດຂອງເຄືອຂ່າຍເນື່ອງຈາກການສື່ສານລະຫວ່າງເຈົ້າພາບອື່ນໆ.
ເມື່ອເຄືອຂ່າຍມີຄວາມແອອັດ, ຖ້າແພັກເກັດຈໍານວນຫຼວງຫຼາຍສືບຕໍ່ສົ່ງ, ມັນອາດຈະເຮັດໃຫ້ເກີດບັນຫາເຊັ່ນການຊັກຊ້າແລະການສູນເສຍແພັກເກັດ. ໃນຈຸດນີ້, TCP ຈະສົ່ງຂໍ້ມູນຄືນ, ແຕ່ການສົ່ງຄືນຈະເພີ່ມພາລະໃນເຄືອຂ່າຍ, ເຊິ່ງກໍ່ໃຫ້ເກີດຄວາມລ່າຊ້າຂະຫນາດໃຫຍ່ແລະການສູນເສຍແພັກເກັດຫຼາຍ. ນີ້ສາມາດເຂົ້າໄປໃນວົງຈອນອັນໂຫດຮ້າຍແລະສືບຕໍ່ໃຫຍ່ຂຶ້ນ.
ດັ່ງນັ້ນ, TCP ບໍ່ສາມາດລະເລີຍສິ່ງທີ່ເກີດຂຶ້ນໃນເຄືອຂ່າຍ. ເມື່ອເຄືອຂ່າຍຖືກ congested, TCP ເສຍສະລະຕົນເອງໂດຍການຫຼຸດຜ່ອນຈໍານວນຂໍ້ມູນທີ່ມັນສົ່ງ.
ດັ່ງນັ້ນ, ການຄວບຄຸມຄວາມແອອັດແມ່ນໄດ້ຖືກສະເຫນີ, ເຊິ່ງມີຈຸດປະສົງເພື່ອຫຼີກເວັ້ນການຕື່ມຂໍ້ມູນໃສ່ເຄືອຂ່າຍທັງຫມົດຈາກຜູ້ສົ່ງ. ເພື່ອຄວບຄຸມປະລິມານຂໍ້ມູນທີ່ຜູ້ສົ່ງຄວນສົ່ງ, TCP ກໍານົດແນວຄວາມຄິດທີ່ເອີ້ນວ່າປ່ອງຢ້ຽມ congestion. ສູດການຄິດໄລ່ການຄວບຄຸມ congestion ຈະປັບຂະຫນາດຂອງປ່ອງຢ້ຽມ congestion ຕາມລະດັບ congestion ຂອງເຄືອຂ່າຍ, ເພື່ອຄວບຄຸມຈໍານວນຂໍ້ມູນທີ່ສົ່ງໂດຍຜູ້ສົ່ງ.
ປ່ອງຢ້ຽມຄວາມແອອັດແມ່ນຫຍັງ? ອັນນີ້ເຮັດຫຍັງກັບປ່ອງຢ້ຽມສົ່ງ?
Congestion Window ແມ່ນຕົວແປຂອງລັດທີ່ຮັກສາໄວ້ໂດຍຜູ້ສົ່ງທີ່ກໍານົດຈໍານວນຂໍ້ມູນທີ່ຜູ້ສົ່ງສາມາດສົ່ງໄດ້. ປ່ອງຢ້ຽມ congestion ມີການປ່ຽນແປງແບບເຄື່ອນໄຫວຕາມລະດັບຄວາມແອອັດຂອງເຄືອຂ່າຍ.
ປ່ອງຢ້ຽມສົ່ງແມ່ນຂະຫນາດຂອງປ່ອງຢ້ຽມທີ່ຕົກລົງກັນລະຫວ່າງຜູ້ສົ່ງແລະຜູ້ຮັບທີ່ຊີ້ບອກຈໍານວນຂໍ້ມູນທີ່ຜູ້ຮັບສາມາດໄດ້ຮັບ. ປ່ອງຢ້ຽມ congestion ແລະປ່ອງຢ້ຽມສົ່ງແມ່ນກ່ຽວຂ້ອງ; ປ່ອງຢ້ຽມສົ່ງແມ່ນປົກກະຕິແລ້ວເທົ່າກັບຕໍາ່ສຸດທີ່ຂອງ congestion ແລະຮັບ Windows, ນັ້ນແມ່ນ, swnd = min(cwnd, rwnd).
ປ່ອງຢ້ຽມ congestion cwnd ມີການປ່ຽນແປງດັ່ງຕໍ່ໄປນີ້:
ຖ້າຫາກວ່າບໍ່ມີ congestion ໃນເຄືອຂ່າຍ, ie, ບໍ່ມີ retransmission timeout ເກີດຂຶ້ນ, ປ່ອງຢ້ຽມ congestion ເພີ່ມຂຶ້ນ.
ຖ້າມີຄວາມແອອັດໃນເຄືອຂ່າຍ, ປ່ອງຢ້ຽມຄວາມແອອັດຫຼຸດລົງ.
ຜູ້ສົ່ງກໍານົດວ່າເຄືອຂ່າຍມີຄວາມແອອັດໂດຍການສັງເກດເບິ່ງວ່າຊຸດການຮັບຮູ້ ACK ຈະໄດ້ຮັບພາຍໃນເວລາທີ່ກໍານົດໄວ້ຫຼືບໍ່. ຖ້າຜູ້ສົ່ງບໍ່ໄດ້ຮັບຊຸດການຮັບຮູ້ ACK ພາຍໃນເວລາທີ່ກໍານົດໄວ້, ຖືວ່າເຄືອຂ່າຍມີຄວາມແອອັດ.
ນອກເຫນືອໄປຈາກປ່ອງຢ້ຽມ congestion, ມັນແມ່ນເວລາທີ່ຈະປຶກສາຫາລືກ່ຽວກັບ TCP congestion algorithm. ສູດການຄວບຄຸມ TCP congestion ປະກອບດ້ວຍສາມພາກສ່ວນຕົ້ນຕໍ:
ເລີ່ມຊ້າ:ໃນເບື້ອງຕົ້ນ, ປ່ອງຢ້ຽມ congestion cwnd ແມ່ນຂ້ອນຂ້າງນ້ອຍ, ແລະຜູ້ສົ່ງເພີ່ມປ່ອງຢ້ຽມ congestion exponentially ເພື່ອປັບຕົວກັບຄວາມສາມາດຂອງເຄືອຂ່າຍຢ່າງໄວວາ.
ການຫຼີກລ້ຽງການແອອັດ:ຫຼັງຈາກປ່ອງຢ້ຽມ congestion ເກີນຂອບເຂດທີ່ແນ່ນອນ, ຜູ້ສົ່ງຈະເພີ່ມປ່ອງຢ້ຽມ congestion ໃນລັກສະນະເສັ້ນເພື່ອຊ້າລົງອັດຕາການຂະຫຍາຍຕົວຂອງປ່ອງຢ້ຽມ congestion ແລະຫຼີກເວັ້ນການ overloading ເຄືອຂ່າຍ.
ການຟື້ນຕົວໄວ:ຖ້າຫາກວ່າ congestion ເກີດຂຶ້ນ, ຜູ້ສົ່ງ halves ປ່ອງຢ້ຽມ congestion ແລະເຂົ້າສູ່ສະຖານະການຟື້ນຟູໄວເພື່ອກໍານົດສະຖານທີ່ຂອງການຟື້ນຟູເຄືອຂ່າຍໂດຍຜ່ານ acks ຊ້ໍາກັນທີ່ໄດ້ຮັບ, ແລະຫຼັງຈາກນັ້ນສືບຕໍ່ເພີ່ມປ່ອງຢ້ຽມ congestion.
ເລີ່ມຊ້າ
ເມື່ອການເຊື່ອມຕໍ່ TCP ຖືກສ້າງຕັ້ງຂຶ້ນ, cwnd window congestion ໃນເບື້ອງຕົ້ນແມ່ນຕັ້ງເປັນຄ່າ MSS ຕໍາ່ສຸດທີ່ (ຂະຫນາດສ່ວນສູງສຸດ). ດ້ວຍວິທີນີ້, ອັດຕາການສົ່ງເບື້ອງຕົ້ນແມ່ນປະມານ MSS/RTT bytes/second. ແບນວິດທີ່ມີຢູ່ຕົວຈິງແມ່ນມັກຈະມີຂະຫນາດໃຫຍ່ກວ່າ MSS/RTT, ດັ່ງນັ້ນ TCP ຕ້ອງການຊອກຫາອັດຕາການສົ່ງທີ່ດີທີ່ສຸດ, ເຊິ່ງສາມາດບັນລຸໄດ້ໂດຍການເລີ່ມຕົ້ນຊ້າ.
ໃນຂະບວນການເລີ່ມຕົ້ນຊ້າ, ມູນຄ່າຂອງປ່ອງຢ້ຽມ congestion cwnd ຈະຖືກເລີ່ມຕົ້ນເປັນ 1 MSS, ແລະແຕ່ລະຄັ້ງທີ່ພາກສ່ວນ packet ທີ່ຖືກຮັບຮູ້, ມູນຄ່າຂອງ cwnd ຈະຖືກເພີ່ມຂຶ້ນຫນຶ່ງ MSS, ນັ້ນແມ່ນ, ມູນຄ່າຂອງ cwnd ຈະກາຍເປັນ 2 MSS. ຫຼັງຈາກນັ້ນ, ມູນຄ່າຂອງ cwnd ແມ່ນເພີ່ມຂຶ້ນສອງເທົ່າສໍາລັບແຕ່ລະການສົ່ງຕໍ່ທີ່ປະສົບຜົນສໍາເລັດຂອງ packet, ແລະອື່ນໆ. ຂະບວນການເຕີບໂຕສະເພາະແມ່ນສະແດງຢູ່ໃນຮູບຕໍ່ໄປນີ້.
ຢ່າງໃດກໍຕາມ, ອັດຕາການສົ່ງບໍ່ສາມາດເຕີບໂຕສະເຫມີ; ການຂະຫຍາຍຕົວຕ້ອງສິ້ນສຸດລົງບາງຄັ້ງ. ດັ່ງນັ້ນ, ອັດຕາການສົ່ງທີ່ເພີ່ມຂຶ້ນຈະສິ້ນສຸດລົງເມື່ອໃດ? ການເລີ່ມຕົ້ນຊ້າໂດຍປົກກະຕິຈະສິ້ນສຸດການເພີ່ມຂື້ນຂອງອັດຕາການສົ່ງໃນຫຼາຍວິທີ:
ວິທີທໍາອິດແມ່ນກໍລະນີຂອງການສູນເສຍແພັກເກັດໃນລະຫວ່າງຂະບວນການສົ່ງຂອງການເລີ່ມຕົ້ນຊ້າ. ເມື່ອການສູນເສຍແພັກເກັດເກີດຂື້ນ, TCP ກໍານົດ window congestion ຂອງຜູ້ສົ່ງ cwnd ເປັນ 1 ແລະ restarts ຂະບວນການເລີ່ມຕົ້ນຊ້າ. ໃນຈຸດນີ້, ແນວຄວາມຄິດຂອງ ssthresh ເລີ່ມຕົ້ນຊ້າໄດ້ຖືກນໍາສະເຫນີ, ເຊິ່ງມູນຄ່າເບື້ອງຕົ້ນແມ່ນເຄິ່ງຫນຶ່ງຂອງມູນຄ່າຂອງ cwnd ທີ່ສ້າງການສູນເສຍແພັກເກັດ. ນັ້ນແມ່ນ, ເມື່ອກວດພົບຄວາມແອອັດ, ມູນຄ່າຂອງ ssthresh ແມ່ນເຄິ່ງຫນຶ່ງຂອງມູນຄ່າປ່ອງຢ້ຽມ.
ວິທີທີສອງແມ່ນການພົວພັນໂດຍກົງກັບມູນຄ່າຂອງ ssthresh ເລີ່ມຕົ້ນຊ້າ. ເນື່ອງຈາກມູນຄ່າຂອງ ssthresh ແມ່ນເຄິ່ງຫນຶ່ງຂອງມູນຄ່າປ່ອງຢ້ຽມເມື່ອກວດພົບຄວາມແອອັດ, ການສູນເສຍແພັກເກັດອາດຈະເກີດຂື້ນກັບແຕ່ລະສອງເທົ່າເມື່ອ cwnd ຂະຫນາດໃຫຍ່ກວ່າ ssthresh. ດັ່ງນັ້ນ, ມັນດີທີ່ສຸດທີ່ຈະຕັ້ງ cwnd ເປັນ ssthresh, ເຊິ່ງຈະເຮັດໃຫ້ TCP ປ່ຽນໄປສູ່ໂໝດຄວບຄຸມຄວາມແອອັດ ແລະສິ້ນສຸດການເລີ່ມຕົ້ນຊ້າ.
ວິທີສຸດທ້າຍທີ່ການເລີ່ມຕົ້ນຊ້າສາມາດສິ້ນສຸດໄດ້ແມ່ນຖ້າຫາກວ່າສາມ acks redundant ຖືກກວດພົບ, TCP ດໍາເນີນການ retransmission ໄວແລະເຂົ້າສູ່ສະພາບການຟື້ນຟູ. (ຖ້າມັນບໍ່ຊັດເຈນວ່າເປັນຫຍັງມີສາມຊອງ ACK, ມັນຈະຖືກອະທິບາຍແຍກຕ່າງຫາກໃນກົນໄກການສົ່ງຄືນ.)
ການຫຼີກລ້ຽງການແອອັດ
ເມື່ອ TCP ເຂົ້າສູ່ສະຖານະການຄວບຄຸມຄວາມແອອັດ, cwnd ຖືກຕັ້ງເປັນເຄິ່ງໜຶ່ງຂອງເກນຄວາມແອອັດ ssthresh. ນີ້ຫມາຍຄວາມວ່າມູນຄ່າຂອງ cwnd ບໍ່ສາມາດຖືກເພີ່ມເປັນສອງເທົ່າທຸກຄັ້ງທີ່ໄດ້ຮັບສ່ວນແພັກເກັດ. ແທນທີ່ຈະ, ວິທີການອະນຸລັກທີ່ຂ້ອນຂ້າງຖືກຮັບຮອງເອົາເຊິ່ງມູນຄ່າຂອງ cwnd ເພີ່ມຂຶ້ນພຽງແຕ່ຫນຶ່ງ MSS (ຄວາມຍາວຂອງສ່ວນແພັກເກັດສູງສຸດ) ຫຼັງຈາກແຕ່ລະສາຍສົ່ງແມ່ນສໍາເລັດ. ຕົວຢ່າງ, ເຖິງແມ່ນວ່າ 10 packet segments ໄດ້ຮັບການຍອມຮັບ, ມູນຄ່າຂອງ cwnd ຈະເພີ່ມຂຶ້ນພຽງແຕ່ຫນຶ່ງ MSS. ນີ້ແມ່ນຮູບແບບການຂະຫຍາຍຕົວເປັນເສັ້ນແລະມັນຍັງມີການຜູກມັດດ້ານເທິງກ່ຽວກັບການຂະຫຍາຍຕົວ. ເມື່ອການສູນເສຍແພັກເກັດເກີດຂື້ນ, ຄ່າຂອງ cwnd ຖືກປ່ຽນເປັນ MSS, ແລະຄ່າຂອງ ssthresh ຖືກຕັ້ງເປັນເຄິ່ງຫນຶ່ງຂອງ cwnd. ຫຼືມັນຍັງຈະຢຸດການຂະຫຍາຍຕົວຂອງ MSS ເມື່ອ 3 ຄໍາຕອບ ACK ທີ່ຊ້ໍາກັນໄດ້ຮັບ. ຖ້າສາມ acks ຊ້ໍາຊ້ອນແມ່ນຍັງໄດ້ຮັບຫຼັງຈາກເຄິ່ງຫນຶ່ງຂອງມູນຄ່າ cwnd, ມູນຄ່າຂອງ ssthresh ຈະຖືກບັນທຶກເປັນເຄິ່ງຫນຶ່ງຂອງມູນຄ່າ cwnd ແລະສະຖານະການຟື້ນຟູໄວແມ່ນເຂົ້າໄປໃນ.
ການຟື້ນຕົວໄວ
ໃນສະຖານະການຟື້ນຟູໄວ, ມູນຄ່າຂອງປ່ອງຢ້ຽມ congestion cwnd ແມ່ນເພີ່ມຂຶ້ນຫນຶ່ງ MSS ສໍາລັບແຕ່ລະ ACK ທີ່ໄດ້ຮັບຊ້ໍາຊ້ອນ, ນັ້ນແມ່ນ, ACK ທີ່ບໍ່ມາຮອດຕາມລໍາດັບ. ນີ້ແມ່ນເພື່ອເຮັດໃຫ້ການນໍາໃຊ້ຂອງ packet segments ທີ່ໄດ້ຖືກຖ່າຍທອດສົບຜົນສໍາເລັດໃນເຄືອຂ່າຍເພື່ອປັບປຸງປະສິດທິພາບການສົ່ງຜ່ານຫຼາຍເທົ່າທີ່ເປັນໄປໄດ້.
ເມື່ອ ACK ຂອງ packet segment ທີ່ສູນເສຍມາຮອດ, TCP ຫຼຸດລົງມູນຄ່າຂອງ cwnd ແລະຫຼັງຈາກນັ້ນເຂົ້າສູ່ສະຖານະການຫຼີກລ່ຽງການແອອັດ. ນີ້ແມ່ນເພື່ອຄວບຄຸມຂະຫນາດຂອງປ່ອງຢ້ຽມ congestion ແລະຫຼີກເວັ້ນການເພີ່ມຄວາມແອອັດຂອງເຄືອຂ່າຍ.
ຖ້າເວລາຫມົດເວລາເກີດຂຶ້ນຫຼັງຈາກລັດຄວບຄຸມຄວາມແອອັດ, ສະພາບເຄືອຂ່າຍຈະກາຍເປັນຮ້າຍແຮງກວ່າເກົ່າແລະ TCP ເຄື່ອນຍ້າຍຈາກສະຖານະຫຼີກເວັ້ນຄວາມແອອັດໄປສູ່ສະຖານະຊ້າ. ໃນກໍລະນີນີ້, ມູນຄ່າຂອງ congestion window cwnd ຖືກກໍານົດເປັນ 1 MSS, ຄວາມຍາວຂອງແພັກເກັດສູງສຸດ, ແລະຄ່າຂອງ ssthresh threshold ເລີ່ມຕົ້ນຊ້າແມ່ນຕັ້ງເປັນເຄິ່ງຫນຶ່ງຂອງ cwnd. ຈຸດປະສົງນີ້ແມ່ນເພື່ອຄ່ອຍໆເພີ່ມຂະຫນາດຂອງປ່ອງຢ້ຽມ congestion ຫຼັງຈາກເຄືອຂ່າຍຟື້ນຕົວເພື່ອດຸ່ນດ່ຽງອັດຕາການສົ່ງແລະລະດັບຄວາມແອອັດຂອງເຄືອຂ່າຍ.
ສະຫຼຸບ
ໃນຖານະເປັນອະນຸສັນຍາການຂົນສົ່ງທີ່ເຊື່ອຖືໄດ້, TCP ປະຕິບັດການຂົນສົ່ງທີ່ເຊື່ອຖືໄດ້ໂດຍຈໍານວນລໍາດັບ, ການຮັບຮູ້, ການຄວບຄຸມ retransmission, ການຄຸ້ມຄອງການເຊື່ອມຕໍ່ແລະການຄວບຄຸມປ່ອງຢ້ຽມ. ໃນບັນດາພວກເຂົາ, ກົນໄກການຄວບຄຸມການໄຫຼເຂົ້າຄວບຄຸມຈໍານວນຂໍ້ມູນທີ່ສົ່ງໂດຍຜູ້ສົ່ງຕາມຄວາມສາມາດໃນການຮັບຕົວຈິງຂອງຕົວຮັບ, ເຊິ່ງຫຼີກເວັ້ນບັນຫາຄວາມແອອັດຂອງເຄືອຂ່າຍແລະການເຊື່ອມໂຊມຂອງການປະຕິບັດ. ກົນໄກການຄວບຄຸມ congestion ຫຼີກເວັ້ນການປະກົດຕົວຂອງ congestion ເຄືອຂ່າຍໂດຍການປັບປະລິມານຂອງຂໍ້ມູນທີ່ສົ່ງໂດຍຜູ້ສົ່ງ. ແນວຄວາມຄິດຂອງປ່ອງຢ້ຽມ congestion ແລະປ່ອງຢ້ຽມສົ່ງແມ່ນກ່ຽວຂ້ອງກັນ, ແລະຈໍານວນຂອງຂໍ້ມູນຢູ່ໃນຜູ້ສົ່ງໄດ້ຖືກຄວບຄຸມໂດຍການປັບຂະຫນາດຂອງປ່ອງຢ້ຽມ congestion ໄດ້. ການເລີ່ມຕົ້ນຊ້າ, ການຫຼີກເວັ້ນຄວາມແອອັດແລະການຟື້ນຕົວໄວແມ່ນສາມສ່ວນຕົ້ນຕໍຂອງ TCP congestion algorithm, ເຊິ່ງປັບຂະຫນາດຂອງປ່ອງຢ້ຽມ congestion ໂດຍຜ່ານຍຸດທະສາດທີ່ແຕກຕ່າງກັນເພື່ອປັບຕົວເຂົ້າກັບຄວາມອາດສາມາດແລະລະດັບຄວາມແອອັດຂອງເຄືອຂ່າຍ.
ໃນພາກຕໍ່ໄປ, ພວກເຮົາຈະກວດເບິ່ງກົນໄກການສົ່ງຄືນຂອງ TCP ໂດຍລະອຽດ. ກົນໄກການສົ່ງຄືນແມ່ນສ່ວນຫນຶ່ງທີ່ສໍາຄັນຂອງ TCP ເພື່ອບັນລຸການສົ່ງສັນຍານທີ່ເຊື່ອຖືໄດ້. ມັນຮັບປະກັນການສົ່ງຂໍ້ມູນທີ່ເຊື່ອຖືໄດ້ໂດຍການສົ່ງຄືນຂໍ້ມູນທີ່ສູນເສຍ, ເສຍຫາຍຫຼືຊັກຊ້າ. ຫຼັກການຈັດຕັ້ງປະຕິບັດ ແລະຍຸດທະສາດຂອງກົນໄກການສົ່ງຄືນຈະຖືກນໍາສະເໜີ ແລະວິເຄາະຢ່າງລະອຽດໃນພາກຕໍ່ໄປ. ຕິດຕາມຢູ່!
ເວລາປະກາດ: 24-24-2025