文章内容
TCP那点破事里,最让人抓狂的就是这个确认号。
网上的那些教程,清一色地将其说得玄幻迷离,仿佛就怕你弄清楚了一般,仿佛就怕你明白过来一样。
今儿我就给你掰扯清楚,这玩意儿到底是个啥。
为啥TCP要搞个确认号
就如同你家楼下那家味道糟糕至极的拉面馆一样,你下单之后,老板非要扯着喉咙大声叫嚷一句“一碗拉面收到!”,如此这般,你才敢安心地坐下等候。
TCP同样如此,数据包已被抛出去,然而内心毫无把握,必须要清楚对方究竟有没有收到。
那所谓的确认号,其实就是对方给出的回执,它要告知你这样的意思,即“别再吵闹叫嚷了,你之前所说的上一句话,我这边已经妥妥收到了,当下该轮到说下一句了”。
要是没这个确认,两边都得抓瞎,那不乱套了?
确认号到底等于啥意思
很多人以为确认号是“我收到了哪个包”,大错特错!
TCP这位仁兄性格执拗,它始终不知会你收到了些什么,它仅仅会告知你“我当下所渴求的究竟是哪一个”。
比如说吧,它发回来的那个确认号是100,这所表达的意思是,“截至到你序号1到99之物我均已吞咽下肚了,而且消化完毕了,此刻你得赶紧地给我开始从100这儿吐出来”。
这就如同去催讨债务,债主不会跟你讲你上回究竟还了多少金额,他仅仅会告知你“你特么还欠着我多少,麻溜的!”。
确认号和序号的暧昧关系
这俩玩意儿就是一对狗男女,分不开。
我此次给你的货物所对应的编号是“我这次给你的货是第几号”,而你下次需要给予我的特定编号为“你下次必须给我第几号”这个确认号。
你把经过编号被称作1,长度为100字节数的数据包发送过去之后,如果对方收到了此数据包,它并不会回复一个表示收到1的“收到1”,而是要回输确认编号为101,其含义是表示你发送的从1到100编号的货物自身都已然收受稳妥,如果下次发送的话,直接发送编号为101就行,可千万别再进行那些没有实际作用的值的传输。

你得把这种逻辑转一个弯,去想明白,TCP具有窗口滑动功能,同时还有重传机制,经历这些后你会瞬间就通了。
丢了包为啥要重传
你先是发送了从一至一百的内容,之后又发送了从一百零一至二百的内容,然而最终处于中间位置的从一百零一至二百的这一包却丢失不见了。
对方收到第一个,美滋滋,回你确认号101。
接着它便呆呆地等候着你的101,然而左等右等始终不来,即便在这期间它接收到了你后续的201至300,它也绝对不会予以承认。
它会持续给你回复“确认号101”,其情形如同复读机一般,一次又一次地向你提醒“老子就要101,后续的别给我,老子不要!”,直至你将这个从101至200的内容再次发予它,它方才会把确认号转变为301。
是不是很轴?
但互联网就靠这点轴劲儿跑着呢。
说了这般许多,你回忆思索一番,自身电脑出现卡顿状况、玩游戏遭遇延迟高情形的时候,是否便是这一摞又一摞的确认号停滞在路途中,如同车辆拥堵一般了呢?
勿妨于评论区斥一声你所遇之最特立独行奇怪至极有别于常理的网络延迟,瞧瞧究竟是谁相较于谁更具凄惨之感。
觉得有用就点个赞,让更多被TCP折磨的兄弟看到。
转载请注明出处:TP钱包官方网站,如有疑问,请联系()。
本文地址:https://www.chinaibfc.com/tpzxb/1022.html
