TCP协议详解

作者&投稿:支隶 (若有异议请与网页底部的电邮联系)
~ “面向字节流”的含义是:应用程序和 TCP 的交互式一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅仅看成是一连串的无结构的字节流,TCP 并不知道所传送的字节流的含义。TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。

例如,发送方应用程序交给发送方的 TCP 共10个数据块,但接收方的 TCP 可能只用了4个数据块就把收到的字节流交付上层的应用程序。接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。接收方的应用程序必须有能力识别收到的字节流,把它还原成有意义的应用层数据。

TCP 和 UDP 在发送报文时采用的方式完全不同。TCP 并不关心应用进程一次把多长的报文发送到 TCP 的缓存中,而是根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节。如果应用进程传送到 TCP 缓存的数据块太长,TCP 就可以把它划分短一些再传送。如果应用进程一次只发来一个字节,TCP 也可以等待积累有足够多的字节后再构成报文段发送出去。

TCP 把连接作为最基本的抽象。TCP 的许多特性都与 TCP 是面向连接的这个基本特性有关。TCP 连接的端点叫做套接字或插口,根据 RFC 793 的定义:端口号拼接到 IP 地址即构成了套接字。每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。TCP 连接就是由协议软件所提供的一种抽象。TCP 连接的端口是个很抽象的套接字,即( IP地址: 端口号)。同一个 IP 地址可以有多个不同的 TCP 连接,而同一个端口号也可以出现在多个不同的 TCP 连接中。

同一名词 socket 可表示多种不同的意思,以下 socket 的意思跟本文中所引用的 RFC 793 定义的 socket(指端口号拼接到 IP 地址)不同。

理想的传输条件有以下两个特点:实际的网络不具备以上两个理想条件。需要使用一些可靠的传输协议,当出现差错时让发送方重传出现差错的数据,同时在接收方来不及处理收到的数据时,及时告诉发送方适当减低发送数据的速度。这样,不可靠的传输信道就能够实现可靠传输了。

全双工通信的双方既是发送方也是接收方。把传送的数据单元都称为分组。“停止等待”就是每发完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

只要超过一段时间没有收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组。这就叫做超时重传。要实现超时重传,就要在每发送完一个分组时设置一个超时计时器。

使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像上述的这种可靠传输协议常称为自动重传请求 ARQ(Automatic Repeat reQuest)。重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。

停止等待协议的优点是简单,但缺点是信道利用率太低。为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地在传送。这种传输方式可以获得很高的信道利用率。

连续 ARQ 协议位于发送窗口内的5个分组都可以连续发送出去,而不需要等待对方的确认。可以提高信道利用率。接收方一般都是采用累积确认的方式。接收方不需要对收到的分组逐个发送确认,而是在收到几个分组后,对按序到达的最后一个分组发送确认。

积累确认有优点也有缺点。优点是:容易实现,即使确认丢失也不必重传。缺点是不能向发送方反映出接收方已经正确收到的所有分组的信息。

TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。一个 TCP 报文段分为首部和数据两部分。TCP 报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项(n是整数)。因此 TCP 首部的最小长度是20字节。下面有6个控制位,用来说明本报文段的性质。

TCP 可靠传输的实现以字节为单位的滑动窗口。发送窗口构造以字节为单位的。假定 A 收到了 B发来的确认报文段,其中窗口是20字节,而确认号是31。根据这两个数据,A 就构造出自己的发送窗口。发送窗口标识:在没有收到 B 的确认的情况下,A 可以连续把窗口内的数据都发送出去。凡是已经发送出去的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。

发送窗口变化发送窗口的位置由窗口前沿和后沿的位置共同确定。发送窗口后沿的变化情况有两种,即不动和前移。发送窗口后沿不可能向后移动,因为不能撤销已收到的确认。发送窗口前沿通常是不断向前移动,但也有可能不动。这对应于两种情况:发送窗口前沿也有可能向后收缩。这发生在对方通知的窗口缩小了。但 TCP 的标准强烈不赞成这样做。因为很可能发送方在收到这个通知以前已经发生了窗口中的许多数据,现在又要收缩窗口,不让发送这些数据,这样就会产生一些错误。

要描述一个发送窗口的状态需要三个指针:P1,P2,P3。指针都指向字节的序号。这三个指针指向的几个部分的意义如下:B 的接收窗口大小是20。在接收窗口外面,到30号为止的数据是已经发送过确认,并且已经交付主机了。因此在 B 可以不再保留这些数据。接收窗口内的序号是允许接收的。B 只能对按序收到的数据中的最高序号给出确认,因此 B 发送的确认报文段中的确认号仍然是31(即期望收到的序号),而不是32或33。

现在假定 B 收到了序号为31的数据,并把序号为31至33的数据交付主机,然后 B 删除这些数据。接着把接收窗口向前移动3个序号,同时给 A 发送确认,其中窗口值仍为20,但确认号是34。这表明 B 已经收到了到序号33为止的数据。B 还收到了序号为37,38和40的数据,但这些都没有按序到达,只能先暂存在接收窗口中。A 收到 B 的确认后,就可以把发送窗口向前滑动3个序号,但指针 P2 不动。现在 A 的可用窗口增大了,可发送的序号范围是42至53。

A 在继续发送完序号42至53的数据后,指针 P2 向前移动和 P3 重合。发送窗口内的序号都已用完,但还没有再收到确认。由于 A 的发送窗口已满,可用窗口已减小到零,因此必须停止发送。发送窗口内所有的数据都已正确到达 B,B 也早已发出了确认。但所有这些确认都滞留在网络中。在没有收到 B 的确认时,A 不能猜测:“或许 B 收到了吧!”为了保证可靠传输,A 只能认为 B 还没有收到这些数据。于是,A 在经过一段时间后(由超时计时器控制)就重传这部分数据,重新设置超时计时器,知道收到 B 的确认为止。如果 A 收到确认号落在发送窗口内,那么 A 就可以发送窗口继续向前滑动,并发送新的数据。

发送方维持的发送缓存和发送窗口,以及接收方维持的接收缓存和接收窗口。发送缓存用来暂时存放已被确认的数据,应当从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的。发送应用程序必须控制写入缓存的速率,不能太快,否则发送缓存就会没有存放数据的空间。接收缓存用来暂时存放收到的分组,如果收到的分组被检测出有差错,则丢弃。接收应用程序来不及读取收到的数据,接收缓存最终就会被填满,使接收窗口减小到零。接收应用程序能够及时从接收缓存中读取收到的数据,接收窗口就可以增大,最大亦不能超过接收缓存的大小。

超时重传时间的选择是 TCP 最复杂的问题之一。由于 TCP 的下层是互联网环境,发送的报文段可能只经过一个高速率的局域网,也可能经过多个低速率的网络,并且每个 IP 数据报所选择的路由还可能不同。如果把超时重传时间设置得太短,就会引起很多报文段的必须要的重传,使网络负荷增大。但若把超时重传时间设置的过长,则又使网络的空闲时间增大,减低了传输效率。TCP 采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间 RTT。新的 RTTs = (1 - α) x (旧的 RTTs) + α x (新的 RTT 样本)。RTT:报文段往返时间 RTTs:加权平均往返时间 α: 0 ≤ α < 1,RFC 6298 推荐的 α 值为 1/8,即 0.125。RTO = RTTs + 4 x RTTD。RTO:超时重传时间 RTTD:RTT 的偏差的加权平均值。新的 RTTD = (1 - β) x (旧的 RTTD) + β x |RTTs - 新的 RTT 样本|。β:小于1的系数,推荐值是 1/4,即 0.25。

TCP 的流量控制利用滑动窗口实现。流量控制(flow control):让发送方的发送速率不要太快,要让接收方来得及接收。利用滑动窗口机制可以很方便地在 TCP 连接上实现对发送方的流量控制。发送方的发送窗口不能超过接收方给出的接收窗口的数值。TCP 的窗口单位是字节,不是报文段。避免死锁:TCP 为每一个连接设有一个持续计时器(persistence timer)。只要 TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。如果窗口仍是零,那么收到这个报文段的一方就重新设置持续计时器。如果窗口不是零,那么死锁的僵局就可以打破了。

TCP 的传输效率发送机制包括 Nagle 算法。在 TCP 的实现中广泛使用 Nagle 算法。若发送应用进程把要发送的数据逐个字节地送到 TCP 的发送缓存,则发送


cp引流是什么意思?
相比其他营销手段,CP引流具有以下优势:1)流量成本更低;2)实现双方共赢,更具针对性;3)提高转化率和用户留存率。但在实施过程中,需注意以下问题:1)合作方应经过严格筛选,以规避品牌风险;2)合作协议应明确,避免后续矛盾;3)需要专业的运营和数据分析团队来实现精准的流量引流效果。

cdpcp在PPP认证中是什么协议
CLP??是LCP吧 link control protocol 链路控制协议NCP network control protocol网络控制协议

说花千骨是ip与cp的距离,其中ip与cp是啥意思
任何厂家生产的计算机系统,只要遵守IP协议就可以与因特网互连互通。IP地址具有唯一性,根据用户性质的不同,可以分为5类。另外,IP还有进入防护,知识产权,指针寄存器等含义。2、CP就是英文COUPLE的一种缩写,意思是夫妻,一般是漫画同人拿来自配的夫妻配对,就是说同人把自己喜欢的角色凑成一对,不管...

OpenHarmony 3GPP协议开发深度剖析——一文读懂RIL
鉴于我在某手机协议开发团队工作过一段时间,对协议的AP侧和CP侧开发都有所涉猎,因此我尝试基于OpenAtom OpenHarmony(以下简称“OpenHarmony”)源码编写一些内容,旨在帮助大家了解协议开发领域,尽可能将3gpp协议内容与OpenHarmony电话子系统模块相结合进行讲解。据我所知,目前终端协议开发人才非常紧缺。首先...

ADCCP简介
ADCCP,全称为高级数据通信控制协议(Advanced Data Communications Control Protocol),是数据通信领域中的一个重要规程。它源于七十年代初,当时IBM公司引领了技术革新,推出了面向比特同步的数据链路控制规程SDLC(Synchronous Data Link Control)。这个规程因其高效和一致性受到了业界的广泛关注。随着SDLC的...

手把手教你利用CP340编写Modbus协议?
测试 Modbus 通信。将 CP340 模块与 Modbus 设备进行连接,通过西门子编程软件进行 Modbus 通信测试。可以使用西门子编程软件中的监视功能,查看通信数据的传输情况,以便进行调试和排错。需要注意的是,在编写 Modbus 协议时,需要仔细理解 Modbus 协议的通信方式和数据格式,同时还需要考虑通信的安全性和稳定...

“CP”缩写在英语中具体指代什么?
具体应用示例可能包括国际协议、外交谈判或安全监控措施,旨在遏制扩散风险。值得注意的是,"CP"作为一种网络用语和学习资源,其信息来源于网络,旨在提供学习和交流的便利。在使用时,应确保其准确性和适用性,因为版权归属原作者,读者在引用时需自行甄别,以避免潜在的风险。

求解cp\/ip协议有哪几层
右击网上邻居选属性,再右击本地连接选属性,找到TCP\/IP打开后就可以改ip地址dns等选项,不过你所说的可能并不是ip 的事,在家上网一般设为自动获得就可以了,这里一般是没问题的,你可以检查一下别的设置

电脑thcp是什么意思
DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段,在RFC 2131中有详细的描述。DHCP有3个端口,其中UDP67和UDP68为正常的DHCP...

充电桩上CP是什么?
你好,很高兴能回答你的问题。希望我的回答能够帮助到你。充电桩上的cp主要是用于交流充电。也就是我们所称的慢充。而cp是属于我们的确认连接线。一方面是为了确定我们枪与座之间的连接。另一方面是用来传输我们充电桩,能提供的最大电流信号

嘉善县17343089849: tcp详细介绍是什么?
阚侨利胆: tcp详细介绍 1、TCP是英文Transmission?Control?Protocol的缩写,中文翻译为“传输控制通讯协议”.TCP/IP是网络中使用的基本的通信协议.虽然从名字上看TCP/IP...

嘉善县17343089849: TCP协议到底是什么意思?详解谢谢! -
阚侨利胆: TCP传输控制协议,是用来进行传输控制的.是一个可靠的面向连接的协议,面向连接服务具有建立连接、数据传输和连接释放三个阶段,而且传输的数据是按顺序到达的.在发送数据之前通信双方首先建立连接,就好象占有了一条完整的端到端的物理线路一样.连接建立后,用户就可以将报文按顺序发送给远端的用户,接收报文也是按顺序进行的.数据发送完毕,释放连接.

嘉善县17343089849: 什么是 TCP协议? -
阚侨利胆: TCP/IP(Transmission Control Protocol/Internet Protocol) 即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WAN)设计的.它是由ARPANET网的研究机构发展起来的.有时我们将TCP/IP描述为互联网协议集"...

嘉善县17343089849: tcp协议的全称是什么协议
阚侨利胆: TCP全称Transmission Control Protocol,传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议是为了在不可靠的互联网络上提供可靠的端到端字节...

嘉善县17343089849: TCP协议? -
阚侨利胆: TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified).在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,UDP是同一层内另一个重要的传输...

嘉善县17343089849: TCP传输控制协议简介有哪些呢?
阚侨利胆: 传输控制协议是一个 TCP/IP 组中能够实现可靠数据传送的传输层协议,并通过顺序响应能实现对应用程序的的虚拟连接服务,在必要的时候进行包转发.与 IP 协议相结合...

嘉善县17343089849: TCP是什么?简单易懂的告诉我! -
阚侨利胆: TCP 英文原义:Transmission Control Protocol 中文释义:(RFC-793)传输控制协议 注解:该协议主要用于在主机间建立一个虚拟连接,以实现高可靠性的数据包交换.IP协议可以进行IP数据包的分割和组装,但是通过IP协议并不能清楚地了...

嘉善县17343089849: TCP协议详解 -
阚侨利胆: 这部分简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础.TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上.确切地说,TCP/IP协...

嘉善县17343089849: 传输控制协议(TCP)/网络层协议是什么意思 -
阚侨利胆: 当传送受差错干扰的数据,或基础网络故障,或网络负荷太重而使网际基本传输系统(无连接报文递交系统)不能正常工作时,就需要通过其它协议来保证通信的可靠.TCP就是这样的协议,它对应于OSI模型的运输层,它在IP协议的基础上,...

嘉善县17343089849: TCP/IP协议的含义是什么 -
阚侨利胆:[答案] 中文译名为传输控制协议/因特网互联协议,又叫网络通讯协议,这个协议是Internet最基本的协议、Internet国际互联网络的基础,简单地说,就是由网络层的IP协议和传输层的TCP协议组成的.TCP/IP 定义了电子设备(比如计算机...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网