ການຂົນສົ່ງຄວາມໜ້າເຊື່ອຖື TCP
ພວກເຮົາທຸກຄົນຄຸ້ນເຄີຍກັບໂປໂຕຄອນ TCP ວ່າເປັນໂປໂຕຄອນການຂົນສົ່ງທີ່ເຊື່ອຖືໄດ້, ແຕ່ມັນຮັບປະກັນຄວາມໜ້າເຊື່ອຖືຂອງການຂົນສົ່ງໄດ້ແນວໃດ?
ເພື່ອໃຫ້ການສົ່ງຂໍ້ມູນມີຄວາມໜ້າເຊື່ອຖືໄດ້, ຈຳເປັນຕ້ອງໄດ້ພິຈາລະນາຫຼາຍປັດໃຈ, ເຊັ່ນ: ຂໍ້ມູນເສຍຫາຍ, ການສູນເສຍ, ການຊໍ້າຊ້ອນ, ແລະ ຊິ້ນສ່ວນຂໍ້ມູນທີ່ບໍ່ເປັນລະບຽບ. ຖ້າບັນຫາເຫຼົ່ານີ້ບໍ່ສາມາດແກ້ໄຂໄດ້, ການສົ່ງຂໍ້ມູນທີ່ມີຄວາມໜ້າເຊື່ອຖືກໍ່ຈະບໍ່ສາມາດບັນລຸໄດ້.
ດັ່ງນັ້ນ, TCP ຈຶ່ງໃຊ້ກົນໄກຕ່າງໆເຊັ່ນ: ໝາຍເລກລຳດັບ, ການຕອບກັບການຮັບຮູ້, ການຄວບຄຸມການສົ່ງຄືນໃໝ່, ການຄຸ້ມຄອງການເຊື່ອມຕໍ່, ແລະ ການຄວບຄຸມໜ້າຕ່າງເພື່ອໃຫ້ການສົ່ງຂໍ້ມູນມີຄວາມໜ້າເຊື່ອຖື.
ໃນເອກະສານນີ້, ພວກເຮົາຈະສຸມໃສ່ໜ້າຕ່າງເລື່ອນ, ການຄວບຄຸມການໄຫຼ ແລະ ການຄວບຄຸມຄວາມແອອັດຂອງ TCP. ກົນໄກການສົ່ງຄືນແມ່ນໄດ້ກວມເອົາແຍກຕ່າງຫາກໃນພາກຕໍ່ໄປ.
ການຄວບຄຸມການໄຫຼຂອງເຄືອຂ່າຍ
ການຄວບຄຸມການໄຫຼຂອງເຄືອຂ່າຍ ຫຼື ທີ່ຮູ້ຈັກກັນໃນນາມການຄວບຄຸມການຈະລາຈອນເຄືອຂ່າຍ ຕົວຈິງແລ້ວແມ່ນການສະແດງອອກຂອງຄວາມສຳພັນທີ່ລະອຽດອ່ອນລະຫວ່າງຜູ້ຜະລິດ ແລະ ຜູ້ບໍລິໂພກ. ທ່ານອາດຈະເຄີຍພົບກັບສະຖານະການນີ້ຫຼາຍຄັ້ງໃນບ່ອນເຮັດວຽກ ຫຼື ໃນການສຳພາດ. ຖ້າຄວາມສາມາດໃນການຜະລິດຂອງຜູ້ຜະລິດເກີນຄວາມສາມາດໃນການບໍລິໂພກຂອງຜູ້ບໍລິໂພກຢ່າງຫຼວງຫຼາຍ, ມັນຈະເຮັດໃຫ້ຄິວເພີ່ມຂຶ້ນຢ່າງບໍ່ມີກຳນົດ. ໃນກໍລະນີທີ່ຮ້າຍແຮງກວ່ານັ້ນ, ທ່ານອາດຈະຮູ້ວ່າເມື່ອຂໍ້ຄວາມ RabbitMQ ກອງຫຼາຍເກີນໄປ, ມັນສາມາດເຮັດໃຫ້ປະສິດທິພາບຂອງເຊີບເວີ MQ ທັງໝົດຫຼຸດລົງ. ສິ່ງດຽວກັນນີ້ກໍ່ເປັນຄວາມຈິງສຳລັບ TCP; ຖ້າບໍ່ໄດ້ກວດສອບ, ຂໍ້ຄວາມຫຼາຍເກີນໄປຈະຖືກໃສ່ເຂົ້າໄປໃນເຄືອຂ່າຍ, ແລະຜູ້ບໍລິໂພກຈະເກີນຄວາມສາມາດຂອງເຂົາເຈົ້າ, ໃນຂະນະທີ່ຜູ້ຜະລິດຈະສືບຕໍ່ສົ່ງຂໍ້ຄວາມຊໍ້າກັນ, ເຊິ່ງຈະສົ່ງຜົນກະທົບຢ່າງຫຼວງຫຼາຍຕໍ່ປະສິດທິພາບຂອງເຄືອຂ່າຍ.
ເພື່ອແກ້ໄຂປະກົດການນີ້, TCP ໃຫ້ກົນໄກສຳລັບຜູ້ສົ່ງເພື່ອຄວບຄຸມປະລິມານຂໍ້ມູນທີ່ສົ່ງໂດຍອີງໃສ່ຄວາມສາມາດໃນການຮັບຕົວຈິງຂອງຜູ້ຮັບ, ເຊິ່ງເອີ້ນວ່າການຄວບຄຸມການໄຫຼ. ຜູ້ຮັບຮັກສາໜ້າຕ່າງຮັບ, ໃນຂະນະທີ່ຜູ້ສົ່ງຮັກສາໜ້າຕ່າງສົ່ງ. ຄວນສັງເກດວ່າໜ້າຕ່າງເຫຼົ່ານີ້ແມ່ນສຳລັບການເຊື່ອມຕໍ່ TCP ດຽວເທົ່ານັ້ນ ແລະ ບໍ່ແມ່ນທຸກການເຊື່ອມຕໍ່ແບ່ງປັນໜ້າຕ່າງດຽວກັນ.
TCP ໃຫ້ການຄວບຄຸມການໄຫຼໂດຍການໃຊ້ຕົວແປສຳລັບໜ້າຕ່າງຮັບ. ໜ້າຕ່າງຮັບຈະບອກຜູ້ສົ່ງວ່າຍັງມີພື້ນທີ່ແຄດຫຼາຍປານໃດ. ຜູ້ສົ່ງຄວບຄຸມປະລິມານຂໍ້ມູນທີ່ສົ່ງຕາມຄວາມສາມາດໃນການຮັບຕົວຈິງຂອງຜູ້ຮັບ.
ໂຮສຂອງຜູ້ຮັບແຈ້ງໃຫ້ຜູ້ສົ່ງຮູ້ກ່ຽວກັບຂະໜາດຂອງຂໍ້ມູນທີ່ສາມາດຮັບໄດ້, ແລະຜູ້ສົ່ງສົ່ງໄດ້ເຖິງຂີດຈຳກັດນີ້. ຂີດຈຳກັດນີ້ແມ່ນຂະໜາດຂອງໜ້າຕ່າງ, ຈື່ຫົວຂໍ້ TCP ໄດ້ບໍ? ມີພາກສະໜາມຂອງໜ້າຕ່າງຮັບ, ເຊິ່ງໃຊ້ເພື່ອຊີ້ບອກຈຳນວນໄບຕ໌ທີ່ຜູ້ຮັບສາມາດ ຫຼື ເຕັມໃຈທີ່ຈະຮັບ.
ໂຮສຂອງຜູ້ສົ່ງຈະສົ່ງແພັກເກັດກວດສອບໜ້າຕ່າງເປັນໄລຍະ, ເຊິ່ງໃຊ້ເພື່ອກວດສອບວ່າໂຮສຂອງຜູ້ຮັບຍັງສາມາດຮັບຂໍ້ມູນໄດ້ຫຼືບໍ່. ເມື່ອບັຟເຟີຂອງຜູ້ຮັບມີຄວາມສ່ຽງທີ່ຈະລົ້ນ, ຂະໜາດໜ້າຕ່າງຈະຖືກຕັ້ງໃຫ້ເປັນຄ່າທີ່ນ້ອຍກວ່າເພື່ອສັ່ງໃຫ້ຜູ້ສົ່ງຄວບຄຸມປະລິມານຂໍ້ມູນທີ່ສົ່ງ.
ນີ້ແມ່ນແຜນວາດການຄວບຄຸມການໄຫຼຂອງເຄືອຂ່າຍ:
ການຄວບຄຸມຄວາມແອອັດຂອງເຄືອຂ່າຍ
ກ່ອນທີ່ຈະແນະນຳການຄວບຄຸມຄວາມແອອັດ, ພວກເຮົາຈຳເປັນຕ້ອງເຂົ້າໃຈວ່ານອກເໜືອໄປຈາກໜ້າຕ່າງຮັບ ແລະ ໜ້າຕ່າງສົ່ງ, ຍັງມີໜ້າຕ່າງຄວາມແອອັດ, ເຊິ່ງສ່ວນໃຫຍ່ແມ່ນໃຊ້ເພື່ອແກ້ໄຂບັນຫາວ່າຜູ້ສົ່ງເລີ່ມສົ່ງຂໍ້ມູນໄປຫາໜ້າຕ່າງຮັບໃນອັດຕາໃດ. ດັ່ງນັ້ນ, ໜ້າຕ່າງຄວາມແອອັດຍັງຖືກຮັກສາໄວ້ໂດຍຜູ້ສົ່ງ TCP. ພວກເຮົາຕ້ອງການອັລກໍຣິທຶມເພື່ອຕັດສິນໃຈວ່າຂໍ້ມູນເທົ່າໃດທີ່ເໝາະສົມທີ່ຈະສົ່ງ, ເນື່ອງຈາກການສົ່ງຂໍ້ມູນໜ້ອຍເກີນໄປ ຫຼື ຫຼາຍເກີນໄປນັ້ນບໍ່ເໝາະສົມ, ດັ່ງນັ້ນແນວຄວາມຄິດຂອງໜ້າຕ່າງຄວາມແອອັດ.
ໃນການຄວບຄຸມການໄຫຼຂອງເຄືອຂ່າຍກ່ອນໜ້ານີ້, ສິ່ງທີ່ພວກເຮົາຫຼີກລ່ຽງໄດ້ແມ່ນຜູ້ສົ່ງທີ່ຕື່ມຂໍ້ມູນໃສ່ແຄດຂອງຜູ້ຮັບ, ແຕ່ພວກເຮົາບໍ່ຮູ້ວ່າມີຫຍັງເກີດຂຶ້ນໃນເຄືອຂ່າຍ. ໂດຍປົກກະຕິແລ້ວ, ເຄືອຂ່າຍຄອມພິວເຕີແມ່ນຢູ່ໃນສະພາບແວດລ້ອມທີ່ໃຊ້ຮ່ວມກັນ. ດັ່ງນັ້ນ, ອາດຈະມີຄວາມແອອັດຂອງເຄືອຂ່າຍເນື່ອງຈາກການສື່ສານລະຫວ່າງໂຮດອື່ນໆ.
ເມື່ອເຄືອຂ່າຍມີຄວາມແອອັດ, ຖ້າມີການສົ່ງແພັກເກັດຈຳນວນຫຼວງຫຼາຍຢ່າງຕໍ່ເນື່ອງ, ມັນອາດຈະເຮັດໃຫ້ເກີດບັນຫາຕ່າງໆເຊັ່ນ: ການຊັກຊ້າ ແລະ ການສູນເສຍແພັກເກັດ. ໃນຈຸດນີ້, TCP ຈະສົ່ງຂໍ້ມູນຄືນໃໝ່, ແຕ່ການສົ່ງຂໍ້ມູນຄືນໃໝ່ຈະເພີ່ມພາລະໃຫ້ກັບເຄືອຂ່າຍ, ເຊິ່ງສົ່ງຜົນໃຫ້ເກີດການຊັກຊ້າຫຼາຍຂຶ້ນ ແລະ ການສູນເສຍແພັກເກັດຫຼາຍຂຶ້ນ. ສິ່ງນີ້ສາມາດເຂົ້າສູ່ວົງຈອນທີ່ບໍ່ດີ ແລະ ຂະຫຍາຍໃຫຍ່ຂຶ້ນເລື້ອຍໆ.
ດັ່ງນັ້ນ, TCP ຈຶ່ງບໍ່ສາມາດບໍ່ສົນໃຈສິ່ງທີ່ເກີດຂຶ້ນໃນເຄືອຂ່າຍໄດ້. ເມື່ອເຄືອຂ່າຍມີຄວາມແອອັດ, TCP ຈະເສຍສະລະຕົວເອງໂດຍການຫຼຸດປະລິມານຂໍ້ມູນທີ່ມັນສົ່ງ.
ດັ່ງນັ້ນ, ການຄວບຄຸມຄວາມແອອັດຈຶ່ງຖືກສະເໜີຂຶ້ນ, ເຊິ່ງມີຈຸດປະສົງເພື່ອຫຼີກເວັ້ນການເຕີມເຕັມເຄືອຂ່າຍທັງໝົດດ້ວຍຂໍ້ມູນຈາກຜູ້ສົ່ງ. ເພື່ອຄວບຄຸມປະລິມານຂໍ້ມູນທີ່ຜູ້ສົ່ງຄວນສົ່ງ, TCP ໄດ້ກຳນົດແນວຄວາມຄິດທີ່ເອີ້ນວ່າ ປ່ອງຢ້ຽມຄວາມແອອັດ. ອັລກໍຣິທຶມການຄວບຄຸມຄວາມແອອັດຈະປັບຂະໜາດຂອງປ່ອງຢ້ຽມຄວາມແອອັດຕາມລະດັບຄວາມແອອັດຂອງເຄືອຂ່າຍ, ເພື່ອຄວບຄຸມປະລິມານຂໍ້ມູນທີ່ສົ່ງໂດຍຜູ້ສົ່ງ.
ປ່ອງຢ້ຽມຄວາມແອອັດແມ່ນຫຍັງ? ສິ່ງນີ້ກ່ຽວຂ້ອງກັບປ່ອງຢ້ຽມສົ່ງແນວໃດ?
ປ່ອງຢ້ຽມຄວາມແອອັດແມ່ນຕົວແປສະຖານະທີ່ຮັກສາໄວ້ໂດຍຜູ້ສົ່ງເຊິ່ງກຳນົດປະລິມານຂໍ້ມູນທີ່ຜູ້ສົ່ງສາມາດສົ່ງໄດ້. ປ່ອງຢ້ຽມຄວາມແອອັດຈະປ່ຽນແປງໄປຕາມລະດັບຄວາມແອອັດຂອງເຄືອຂ່າຍ.
ຂະໜາດຂອງໜ້າຕ່າງສົ່ງແມ່ນຂະໜາດຂອງໜ້າຕ່າງທີ່ໄດ້ຕົກລົງກັນລະຫວ່າງຜູ້ສົ່ງ ແລະ ຜູ້ຮັບ ເຊິ່ງຊີ້ບອກເຖິງປະລິມານຂໍ້ມູນທີ່ຜູ້ຮັບສາມາດຮັບໄດ້. ໜ້າຕ່າງຄວາມແອອັດ ແລະ ໜ້າຕ່າງສົ່ງແມ່ນກ່ຽວຂ້ອງກັນ; ໜ້າຕ່າງສົ່ງມັກຈະເທົ່າກັບຂະໜາດຕໍ່າສຸດຂອງໜ້າຕ່າງຄວາມແອອັດ ແລະ ໜ້າຕ່າງຮັບ, ນັ້ນຄື swnd = min(cwnd, rwnd).
ປ່ອງຢ້ຽມຄວາມແອອັດຂອງ cwnd ຈະປ່ຽນແປງດັ່ງຕໍ່ໄປນີ້:
ຖ້າບໍ່ມີຄວາມແອອັດໃນເຄືອຂ່າຍ, ເຊັ່ນວ່າບໍ່ມີການໝົດເວລາສົ່ງຄືນ, ໄລຍະເວລາຄວາມແອອັດຈະເພີ່ມຂຶ້ນ.
ຖ້າມີຄວາມແອອັດໃນເຄືອຂ່າຍ, ໄລຍະເວລາຄວາມແອອັດຈະຫຼຸດລົງ.
ຜູ້ສົ່ງຈະກຳນົດວ່າເຄືອຂ່າຍມີຄວາມແອອັດຫຼືບໍ່ໂດຍການສັງເກດວ່າໄດ້ຮັບແພັກເກັດການຮັບຮູ້ ACK ພາຍໃນເວລາທີ່ກຳນົດຫຼືບໍ່. ຖ້າຜູ້ສົ່ງບໍ່ໄດ້ຮັບແພັກເກັດການຮັບຮູ້ ACK ພາຍໃນເວລາທີ່ກຳນົດ, ຈະຖືກພິຈາລະນາວ່າເຄືອຂ່າຍມີຄວາມແອອັດ.
ນອກເໜືອໄປຈາກປ່ອງຢ້ຽມຄວາມແອອັດ, ມັນເຖິງເວລາທີ່ຈະປຶກສາຫາລືກ່ຽວກັບອັລກໍຣິທຶມການຄວບຄຸມຄວາມແອອັດ TCP. ອັລກໍຣິທຶມການຄວບຄຸມຄວາມແອອັດ TCP ປະກອບດ້ວຍສາມສ່ວນຫຼັກຄື:
ເລີ່ມຕົ້ນຊ້າ:ໃນເບື້ອງຕົ້ນ, ຊ່ວງເວລາຄວາມແອອັດຂອງ cwnd ແມ່ນຂ້ອນຂ້າງນ້ອຍ, ແລະ ຜູ້ສົ່ງຈະເພີ່ມຊ່ວງເວລາຄວາມແອອັດຂຶ້ນຢ່າງຫຼວງຫຼາຍເພື່ອປັບຕົວເຂົ້າກັບຄວາມອາດສາມາດຂອງເຄືອຂ່າຍໄດ້ຢ່າງວ່ອງໄວ.
ການຫຼີກລ່ຽງຄວາມແອອັດ:ຫຼັງຈາກຊ່ວງເວລາຄວາມແອອັດເກີນຂອບເຂດທີ່ແນ່ນອນ, ຜູ້ສົ່ງຈະເພີ່ມຊ່ວງເວລາຄວາມແອອັດໃນລັກສະນະເສັ້ນຊື່ເພື່ອຊ້າລົງອັດຕາການເຕີບໂຕຂອງຊ່ວງເວລາຄວາມແອອັດ ແລະ ຫຼີກເວັ້ນການໂຫຼດເກີນຂອງເຄືອຂ່າຍ.
ການຟື້ນຕົວໄວ:ຖ້າເກີດຄວາມແອອັດ, ຜູ້ສົ່ງຈະຫຼຸດໄລຍະເວລາຄວາມແອອັດລົງເຄິ່ງໜຶ່ງ ແລະ ເຂົ້າສູ່ສະຖານະການກູ້ຄືນໄວເພື່ອກຳນົດສະຖານທີ່ຂອງການກູ້ຄືນເຄືອຂ່າຍຜ່ານ ack ຊ້ຳກັນທີ່ໄດ້ຮັບ, ແລະຫຼັງຈາກນັ້ນສືບຕໍ່ເພີ່ມໄລຍະເວລາຄວາມແອອັດ.
ເລີ່ມຕົ້ນຊ້າໆ
ເມື່ອການເຊື່ອມຕໍ່ TCP ຖືກສ້າງຕັ້ງຂຶ້ນ, ໜ້າຈໍຄວາມແອອັດ cwnd ໃນເບື້ອງຕົ້ນຈະຖືກຕັ້ງເປັນຄ່າ MSS ຕໍ່າສຸດ (ຂະໜາດສ່ວນສູງສຸດ). ວິທີນີ້, ອັດຕາການສົ່ງເບື້ອງຕົ້ນແມ່ນປະມານ MSS/RTT ໄບຕ໌/ວິນາທີ. ແບນວິດທີ່ມີຢູ່ຕົວຈິງມັກຈະໃຫຍ່ກວ່າ MSS/RTT ຫຼາຍ, ດັ່ງນັ້ນ TCP ຕ້ອງການຊອກຫາອັດຕາການສົ່ງທີ່ດີທີ່ສຸດ, ເຊິ່ງສາມາດບັນລຸໄດ້ໂດຍວິທີການເລີ່ມຕົ້ນຊ້າ.
ໃນຂະບວນການເລີ່ມຕົ້ນຊ້າ, ຄ່າຂອງໜ້າຕ່າງຄວາມແອອັດ cwnd ຈະຖືກເລີ່ມຕົ້ນເປັນ 1 MSS, ແລະແຕ່ລະຄັ້ງທີ່ຮັບຮູ້ສ່ວນຂອງແພັກເກັດທີ່ສົ່ງແລ້ວ, ຄ່າຂອງ cwnd ຈະເພີ່ມຂຶ້ນໜຶ່ງ MSS, ນັ້ນຄື, ຄ່າຂອງ cwnd ຈະກາຍເປັນ 2 MSS. ຫຼັງຈາກນັ້ນ, ຄ່າຂອງ cwnd ຈະເພີ່ມຂຶ້ນສອງເທົ່າສຳລັບການສົ່ງຕໍ່ແຕ່ລະຄັ້ງທີ່ສຳເລັດຂອງສ່ວນຂອງແພັກເກັດ, ແລະອື່ນໆ. ຂະບວນການເຕີບໂຕສະເພາະແມ່ນສະແດງຢູ່ໃນຮູບຕໍ່ໄປນີ້.
ເຖິງຢ່າງໃດກໍ່ຕາມ, ອັດຕາການສົ່ງບໍ່ສາມາດເຕີບໂຕໄດ້ສະເໝີໄປ; ການເຕີບໂຕຕ້ອງສິ້ນສຸດລົງໃນບາງເວລາ. ດັ່ງນັ້ນ, ການເພີ່ມຂຶ້ນຂອງອັດຕາການສົ່ງຈະສິ້ນສຸດລົງເມື່ອໃດ? ການເລີ່ມຕົ້ນຊ້າໆມັກຈະຢຸດຕິການເພີ່ມຂຶ້ນຂອງອັດຕາການສົ່ງໃນໜຶ່ງໃນຫຼາຍວິທີ:
ວິທີທຳອິດແມ່ນກໍລະນີຂອງການສູນເສຍແພັກເກັດໃນລະຫວ່າງຂະບວນການສົ່ງທີ່ເລີ່ມຕົ້ນຊ້າ. ເມື່ອເກີດການສູນເສຍແພັກເກັດ, TCP ຈະຕັ້ງຄ່າໜ້າຕ່າງຄວາມແອອັດຂອງຜູ້ສົ່ງ cwnd ເປັນ 1 ແລະເລີ່ມຕົ້ນຂະບວນການເລີ່ມຕົ້ນຊ້າຄືນໃໝ່. ໃນຈຸດນີ້, ແນວຄວາມຄິດຂອງ ssthresh ເລີ່ມຕົ້ນຊ້າໄດ້ຖືກນຳສະເໜີ, ເຊິ່ງຄ່າເບື້ອງຕົ້ນແມ່ນເຄິ່ງໜຶ່ງຂອງຄ່າຂອງ cwnd ທີ່ສ້າງການສູນເສຍແພັກເກັດ. ນັ້ນຄື, ເມື່ອກວດພົບຄວາມແອອັດ, ຄ່າຂອງ ssthresh ແມ່ນເຄິ່ງໜຶ່ງຂອງຄ່າໜ້າຕ່າງ.
ວິທີທີສອງແມ່ນການພົວພັນກັບຄ່າຂອງ ssthresh ທີ່ມີຄ່າເລີ່ມຕົ້ນຊ້າໂດຍກົງ. ເນື່ອງຈາກຄ່າຂອງ ssthresh ແມ່ນເຄິ່ງໜຶ່ງຂອງຄ່າຂອງໜ້າຕ່າງເມື່ອກວດພົບຄວາມແອອັດ, ການສູນເສຍແພັກເກັດອາດຈະເກີດຂຶ້ນໃນແຕ່ລະຄັ້ງທີ່ເພີ່ມຂຶ້ນສອງເທົ່າເມື່ອ cwnd ໃຫຍ່ກວ່າ ssthresh. ດັ່ງນັ້ນ, ມັນດີທີ່ສຸດທີ່ຈະຕັ້ງ cwnd ເປັນ ssthresh, ເຊິ່ງຈະເຮັດໃຫ້ TCP ປ່ຽນໄປໃຊ້ໂໝດຄວບຄຸມຄວາມແອອັດ ແລະ ສິ້ນສຸດການເລີ່ມຕົ້ນຊ້າ.
ວິທີສຸດທ້າຍທີ່ການເລີ່ມຕົ້ນຊ້າສາມາດສິ້ນສຸດລົງໄດ້ແມ່ນຖ້າກວດພົບ acks ຊໍ້າຊ້ອນສາມອັນ, TCP ຈະປະຕິບັດການສົ່ງຂໍ້ມູນຄືນໃໝ່ຢ່າງໄວວາ ແລະ ເຂົ້າສູ່ສະຖານະການຟື້ນຟູ. (ຖ້າມັນບໍ່ຊັດເຈນວ່າເປັນຫຍັງມີ ACK packets ສາມອັນ, ມັນຈະຖືກອະທິບາຍແຍກຕ່າງຫາກໃນກົນໄກການສົ່ງຂໍ້ມູນຄືນໃໝ່.)
ການຫຼີກລ່ຽງຄວາມແອອັດ
ເມື່ອ TCP ເຂົ້າສູ່ສະຖານະຄວບຄຸມຄວາມແອອັດ, cwnd ຈະຖືກຕັ້ງເປັນເຄິ່ງໜຶ່ງຂອງຄ່າຈຳກັດຄວາມແອອັດ ssthresh. ນີ້ໝາຍຄວາມວ່າຄ່າຂອງ cwnd ບໍ່ສາມາດເພີ່ມຂຶ້ນສອງເທົ່າໄດ້ທຸກຄັ້ງທີ່ໄດ້ຮັບສ່ວນຂອງແພັກເກັດ. ແທນທີ່ຈະ, ວິທີການທີ່ຂ້ອນຂ້າງອະນຸລັກນິຍົມແມ່ນຖືກນຳໃຊ້ເຊິ່ງຄ່າຂອງ cwnd ຈະເພີ່ມຂຶ້ນພຽງໜຶ່ງ MSS (ຄວາມຍາວສ່ວນຂອງແພັກເກັດສູງສຸດ) ຫຼັງຈາກການສົ່ງຂໍ້ມູນແຕ່ລະຄັ້ງສຳເລັດ. ຕົວຢ່າງ, ເຖິງແມ່ນວ່າຈະຮັບຮູ້ສ່ວນຂອງແພັກເກັດ 10 ສ່ວນ, ຄ່າຂອງ cwnd ຈະເພີ່ມຂຶ້ນພຽງໜຶ່ງ MSS ເທົ່ານັ້ນ. ນີ້ແມ່ນຮູບແບບການເຕີບໂຕເສັ້ນຊື່ ແລະ ມັນຍັງມີຂອບເຂດສູງສຸດຂອງການເຕີບໂຕ. ເມື່ອເກີດການສູນເສຍແພັກເກັດ, ຄ່າຂອງ cwnd ຈະຖືກປ່ຽນເປັນ MSS, ແລະ ຄ່າຂອງ ssthresh ຈະຖືກຕັ້ງເປັນເຄິ່ງໜຶ່ງຂອງ cwnd. ຫຼື ມັນຍັງຈະຢຸດການເຕີບໂຕຂອງ MSS ເມື່ອໄດ້ຮັບການຕອບສະໜອງ ACK ຊໍ້າຊ້ອນ 3 ຢ່າງ. ຖ້າຍັງໄດ້ຮັບ acks ຊໍ້າຊ້ອນສາມຢ່າງຫຼັງຈາກຫຼຸດຄ່າຂອງ cwnd ລົງເຄິ່ງໜຶ່ງ, ຄ່າຂອງ ssthresh ຈະຖືກບັນທຶກເປັນເຄິ່ງໜຶ່ງຂອງຄ່າຂອງ cwnd ແລະ ສະຖານະກູ້ຄືນໄວຈະຖືກປ້ອນເຂົ້າ.
ຟື້ນຕົວໄວ
ໃນສະຖານະການກູ້ຄືນໄວ, ຄ່າຂອງປ່ອງຢ້ຽມຄວາມແອອັດ cwnd ຈະເພີ່ມຂຶ້ນໜຶ່ງ MSS ສຳລັບແຕ່ລະ ACK ຊໍ້າຊ້ອນທີ່ໄດ້ຮັບ, ນັ້ນຄື ACK ທີ່ບໍ່ມາຮອດຕາມລຳດັບ. ນີ້ແມ່ນເພື່ອໃຊ້ປະໂຫຍດຈາກສ່ວນຂອງແພັກເກັດທີ່ຖືກສົ່ງສຳເລັດໃນເຄືອຂ່າຍເພື່ອປັບປຸງປະສິດທິພາບການສົ່ງຂໍ້ມູນໃຫ້ຫຼາຍເທົ່າທີ່ຈະຫຼາຍໄດ້.
ເມື່ອ ACK ຂອງສ່ວນແພັກເກັດທີ່ສູນຫາຍມາຮອດ, TCP ຈະຫຼຸດຄ່າຂອງ cwnd ແລະຫຼັງຈາກນັ້ນເຂົ້າສູ່ສະຖານະຫຼີກລ່ຽງຄວາມແອອັດ. ນີ້ແມ່ນເພື່ອຄວບຄຸມຂະໜາດຂອງໜ້າຕ່າງຄວາມແອອັດ ແລະ ຫຼີກລ່ຽງການເພີ່ມຄວາມແອອັດຂອງເຄືອຂ່າຍຕື່ມອີກ.
ຖ້າການໝົດເວລາເກີດຂຶ້ນຫຼັງຈາກສະຖານະຄວບຄຸມຄວາມແອອັດ, ສະພາບເຄືອຂ່າຍຈະຮ້າຍແຮງຂຶ້ນ ແລະ TCP ຈະຍ້າຍຈາກສະຖານະຫຼີກລ່ຽງຄວາມແອອັດໄປສູ່ສະຖານະເລີ່ມຕົ້ນຊ້າ. ໃນກໍລະນີນີ້, ຄ່າຂອງ cwnd ໜ້າຈໍຄວາມແອອັດຖືກຕັ້ງເປັນ 1 MSS, ຄວາມຍາວຂອງສ່ວນແພັກເກັດສູງສຸດ, ແລະຄ່າຂອງ ssthresh ຂອບເຂດການເລີ່ມຕົ້ນຊ້າຖືກຕັ້ງເປັນເຄິ່ງໜຶ່ງຂອງ cwnd. ຈຸດປະສົງຂອງສິ່ງນີ້ແມ່ນເພື່ອເພີ່ມຂະໜາດຂອງໜ້າຈໍຄວາມແອອັດຫຼັງຈາກເຄືອຂ່າຍຟື້ນຕົວເພື່ອດຸ່ນດ່ຽງອັດຕາການສົ່ງຂໍ້ມູນ ແລະ ລະດັບຄວາມແອອັດຂອງເຄືອຂ່າຍ.
ສະຫຼຸບ
ໃນຖານະເປັນໂປໂຕຄອນການຂົນສົ່ງທີ່ເຊື່ອຖືໄດ້, TCP ປະຕິບັດການຂົນສົ່ງທີ່ເຊື່ອຖືໄດ້ໂດຍໝາຍເລກລຳດັບ, ການຮັບຮູ້, ການຄວບຄຸມການສົ່ງຄືນ, ການຈັດການການເຊື່ອມຕໍ່ ແລະ ການຄວບຄຸມໜ້າຕ່າງ. ໃນນັ້ນ, ກົນໄກການຄວບຄຸມການໄຫຼຄວບຄຸມປະລິມານຂໍ້ມູນທີ່ສົ່ງໂດຍຜູ້ສົ່ງຕາມຄວາມສາມາດໃນການຮັບຕົວຈິງຂອງຜູ້ຮັບ, ເຊິ່ງຫຼີກລ່ຽງບັນຫາຄວາມແອອັດຂອງເຄືອຂ່າຍ ແລະ ການເສື່ອມໂຊມຂອງປະສິດທິພາບ. ກົນໄກການຄວບຄຸມຄວາມແອອັດຫຼີກລ່ຽງການເກີດຄວາມແອອັດຂອງເຄືອຂ່າຍໂດຍການປັບປະລິມານຂໍ້ມູນທີ່ສົ່ງໂດຍຜູ້ສົ່ງ. ແນວຄວາມຄິດຂອງໜ້າຕ່າງຄວາມແອອັດ ແລະ ໜ້າຕ່າງການສົ່ງແມ່ນກ່ຽວຂ້ອງກັນ, ແລະ ປະລິມານຂໍ້ມູນທີ່ຜູ້ສົ່ງຖືກຄວບຄຸມໂດຍການປັບຂະໜາດຂອງໜ້າຕ່າງຄວາມແອອັດແບບໄດນາມິກ. ການເລີ່ມຕົ້ນຊ້າ, ການຫຼີກລ່ຽງຄວາມແອອັດ ແລະ ການກູ້ຄືນໄວ ແມ່ນສາມສ່ວນຫຼັກຂອງອັລກໍຣິທຶມການຄວບຄຸມຄວາມແອອັດ TCP, ເຊິ່ງປັບຂະໜາດຂອງໜ້າຕ່າງຄວາມແອອັດຜ່ານຍຸດທະສາດຕ່າງໆເພື່ອປັບຕົວເຂົ້າກັບຄວາມສາມາດ ແລະ ລະດັບຄວາມແອອັດຂອງເຄືອຂ່າຍ.
ໃນພາກຕໍ່ໄປ, ພວກເຮົາຈະກວດສອບກົນໄກການສົ່ງຄືນຂອງ TCP ໂດຍລະອຽດ. ກົນໄກການສົ່ງຄືນແມ່ນສ່ວນສຳຄັນຂອງ TCP ເພື່ອໃຫ້ການສົ່ງຕໍ່ມີຄວາມໜ້າເຊື່ອຖື. ມັນຮັບປະກັນການສົ່ງຕໍ່ຂໍ້ມູນທີ່ໜ້າເຊື່ອຖືໂດຍການສົ່ງຄືນຂໍ້ມູນທີ່ສູນຫາຍ, ເສຍຫາຍ ຫຼື ຊັກຊ້າ. ຫຼັກການການຈັດຕັ້ງປະຕິບັດ ແລະ ຍຸດທະສາດຂອງກົນໄກການສົ່ງຄືນຈະຖືກນຳສະເໜີ ແລະ ວິເຄາະລາຍລະອຽດໃນພາກຕໍ່ໄປ. ຕິດຕາມຕໍ່ໄປ!
ເວລາໂພສ: ກຸມພາ-24-2025

