2020-12-30

TCP是一种面向连接的协议,提供全双工服务,确保数据无损、无间隙、非冗余、按序传输。它使用序号和确认号进行可靠传输,采用累积确认并结合超时重传和快速重传机制来处理丢失或乱序的数据。此外,TCP还通过接收窗口进行流量控制。在超时时间和重传策略上,TCP会根据样本RTT动态调整超时间隔,并实施超时间隔加倍策略。
摘要由CSDN通过智能技术生成

TCP

一、TCP连接
1、TCP是面向连接的:一个进程向另一个进程发送数据之前,这两个进程必须先互相“握手”(它们必须互相发送某些预备报文一建立确保数据传输的参数)
2、TCP连接是一种逻辑连接,其共同状态只保留在两个通信端系统的TCP程序中,中间的网络元素(如路由器)不会维持TCP连接状态。
3、TCP连接提供的是全双工服务***,且是“点对点”的(即TCP不支持多播(一个发送方将数据传送给多个接收方))。
二、TCP连接中的传输机制
1、发送
客户通过
套接字
传递数据流,一旦数据通过套接字,数据就由客户中运行的TCP控制。
TCP将数据引导至该TCP连接的
发送缓存里,接下来TCP会时不时从发送缓存里取出一块数据,为其配上一个TCP首部形成TCP报文段,然后将TCP报文段传递至网络层封装在网络层IP数据报中,在发送到网络中。
2、接收
TCP另一端接收到一个报文段后,该报文段的数据被收入TCP连接的接收缓存中,应用进程从此缓存中读取数据流。
三、TCP报文段结构
1、首部(20B)
(1)源端口号(2B)
(2)目的端口号(2B)
(3)序号(4B):用于可靠数据传输服务
(4)确认号(4B):用于可靠数据传输服务
(5)
(6)接收窗口:用于流量控制
(7)因特网检验和
(8)紧急数据指针
(9)选项
2、数据
四、TCP的可靠数据传输
1、特点:进程从接收缓存中读出的数据流是无损坏、无间隙、非冗余、按序的数据流。
2、原理机制
(1)发送方:
TCP从上层应用程序接收数据,将数据包封装在一个报文段中,并把报文段交付给IP。(注意每一个报文段都有一个序号,该序号即为该报文段第一个数据字节的字节流编号)同时,定时器启动,过期间隔为TimeoutInterval。
①若超时,TCP则重传引起超时的报文段。
②若在超时前收到来自接收方的确认报文段(ACK),则TCP将ACK的值y与它的变量SendBase(未被确认的字节中序号最小的)比较。若 y>SendBase,则发送方更新SendBase的值为y,此时序号小于y的报文都被确认。
注意TCP采取累积确认的方式。
(2)接收方:这里仅讨论接收方恰好接收到了具有所期望序号的报文段(其他情况,参考下面的快速重传),
此时则回送相应的ACK。
①若ACK在往回发送的过程中丢失,这样即使接收方已经收到了报文,发送方仍然会重新发一次之前发过的报文。当接收方收到重传的报文段时,它将通过序号发现该报文段包含了早已收到的数据,因此接收方会丢弃这个重传的报文段中的这些字节。
②若报文段1的ACK往回发送的过程中没丢失但在ACK到达发送方之前,发送方的定时器就超时,则发送方也会重新发送报文段1.
③若报文段1和报文段2都被接收方成功接收,在发送方的报文段1的定时器超时的前一刻发送方收到了报文段2的ACK,即便发送方没收到报文段1的ACK且报文段1的定时器超时了,也不会重发报文段1。(这段意思就是TCP支持
累计确认*)
3、关于定时器时间的设置
(1)任意时刻,TCP仅为一个已发送的但尚未确认的报文段估计SampleRTT,从而产生一个接近每个RTT的新SampleRTT值。
(2)TCP决不为已被重传的报文段估计SampleRTT,它仅为传输一次的报文段测量SampleRTT。
(3)由于路由器的拥塞和端系统负载的变化,报文段的SampleRTT值会动态变化。
(4)
ERTT’=(1-α)ERTT+αSRTT
α=0.125
(5)DRTT=(1-β)DRTT+β|SRTT-ERTT|
(6)TI=ERTT+4
DRTT
4、超时间隔加倍
每次TCP重传时都会将下一次的超时间隔设为前值得两倍。
5、快速重传
对于接收方:
(1)具有所期望序号的按序报文段到达,且所有在期望序号以前的数据都被确认。则延迟ACK,若500ms内,下一个按序报文段没到达,则发送一个ACK。
(2)具有所期望序号的按序报文段到达,而前一个按序报文段的ACK还未传输,则直接发送后一个的ACK
(3)得到比期望序号打的时序报文,则立刻发送冗余报文,指示下一个期待字节的报文。
对于发送方:
当接收到对相同数据的3个冗余ACK,则立刻重发跟在这冗余ACK对应的报文段之后的报文
6、TCP的差错恢复是GBN和SR的混合体。
五、TCP的流量控制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值