【网络原理】TCP保持“可靠传输”的秘密--确认应答与超时重传机制

ee010874ffb04778851a33867217cf98.png

 💐个人主页初晴~

📚相关专栏:计算机网络那些事


        在上一篇文章中,我们研究了UDP报文的结构,由于其报头中只有两个字节来记录报文长度,导致一次最多只能传输 64KB 的数据,这完全无法满足当前对于海量数据传输的需求。于是,TCP协议便应运而生,TCP也是互联网中最广泛使用的传输层协议之一。那么,TCP是如何解决这些问题的?与UDP相比又有哪些区别?就让小编带着大家一起来好好研究一下吧。

一、TCP报文结构

我们先来看一下TCP报文的结构是什么样的吧:

8dad4eb8463c4ed389a8bd40012ba857.png

直接这么看,可能会十分抽象,没关系,后面小编都会一一进行解释的。

源端口、目的端口以及校验和这三个信息与UDP的相差不大,想要了解的可以看一下 UDP报文详解 这篇文章,这里就不再做过多赘述了。本篇文章就主要先来介绍一下首部长度序号确认序号的具体作用吧。

首部长度:

d5f25a5cdb1343afaccee06035dd9acf.png

对于UDP来说,报头的长度就是固定的8个字节,而对于TCP来说,报头的长度是可以根据需要变长的。

首部长度默认是 4个比特位,也就是说其可以表示0到15的范围,不过要注意的是,这里的单位不是 字节 ,而是 4个字节,也就是说假如首部长度记录的是 “1111”,也就是数值 15,其代表整个报头的长度是 15x4 ,也就是 60  个字节。这些都是协议约定好的,我们无权干预,只要遵守就好了。

值得注意的是,在默认4位的基础上,TCP协议还提供了 6 位的保留位,其实这也是为了未雨绸缪。当年UDP就是由于限制死了报文的长度,导致无法顺应时代发展。

TCP就充分吸收了这一教训,这 6位的保留位就是为了TCP协议后续的可拓展性而准备的。当未来某一天,TCP需要新增属性/或某个属性的长度不够用的时候,就可以直接利用保留位来加长报头的长度,TCP的结构也不需要发生太大变化,像这样后续升级扩展就会比较容易了

序号与确认序号

评论 69
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值