Ch7 传输层协议_第1页
Ch7 传输层协议_第2页
Ch7 传输层协议_第3页
Ch7 传输层协议_第4页
Ch7 传输层协议_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第7章 传输层协议,7.1 进程通信与端口 7.2 UDP协议 7.3 TCP协议 7.4 SCTP协议 7.5 RTP/RTCP协议 7.6 RSVP协议,7.1 进程通信与端口,网络层或互联网层提供主机通信服务 传输层提供程通信服务 为了提供进程通信功能,TCP/IP协议族提出了端口(port)的概念,用于标识进程。,传输层与网络层或互联网层的关系,网络层与互联网层 功能:主机通信 协议:IP、 CLNP (ISO/OSI) 特点:hop-by-hop 传输层 功能:进程通信 协议:UDP和TCP、 TP04 (ISO/OSI) 特点:end-to-end,IP地址和端口,端口分配方法,第

2、一种叫全局分配 这是一种集中控制方式,由IANA进行统一分配,并将结果公布于众。 众所周知端口就是属于这一类。 第二种是本地分配 注册端口 动态分配 动态绑定,TCP/UDP 众所周知端口号,7.2 UDP协议,提供主机通信 IP服务特性 报文可能丢失 报文可能出错 报文可能乱序到达 报文在网络上可能被延迟任意长时间 支持多路复用,提供进程通信 UDP服务特性 报文可能丢失 报文可能出错 报文可能乱序到达 报文在网络上可能被延迟任意长时间 支持多路复用,IP与UDP关系,IP 提供主机通信 通信对象命名是IP 地址 IP地址定位到主机,UDP 提供进程通信 通信对象命名是Port 号 Port

3、号定位到进程,1、报文格式,2、多路复用,3、伪头部,表示UDP报文长度,这里是17,表示UDP协议,7.3 TCP协议,7.3.1 服务特性 7.3.2 报文格式 7.3.3 连接建立和终止 7.3.4 差错控制 7.3.5 重传定时器,7.3.6 流量控制 7.3.7 拥塞控制 7.3.8 TCP扩展 7.3.9 触发传输 7.3.10 记录边界,7.3.1 服务特性(1),面向连接 全双工 点到点 可靠 字节流服务 多路复用,服务特性(2),流量控制 保证发送方不要“淹没”接收方 拥塞控制 保证发送方不要“淹没”网络,TCP字节流的概念,发送 TCP 报文段,发送方,接收方,把字节写入

4、发送缓存,从接收缓存 读取字节,应用进程,应用进程,18,17,16,15,14,H,加上 TCP 首部 构成 TCP 报文段,TCP,TCP,字节流,字节流,H,表示 TCP 报文段的首部,x,表示序号为 x 的数据字节,TCP 连接,TCP 首部,20 字节的 固定首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,32 位,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,TCP 数据部分,TCP 首部,TCP 报文段,IP 数据部分,IP 首

5、部,发送在前,7.3.2 报文格式,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,

6、F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,确认号字段占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节

7、的序号。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,数据偏移(即首部长度)占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗

8、 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,保留字段占 6 位,保留为今后使用,但目前应置为 0。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,紧急 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。,T

9、CP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,确认 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U

10、R G,位 0 8 16 24 31,填 充,推送 PSH (PuSH) 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,复位 RST (ReSeT) 当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再

11、重新建立运输连接。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,同步 SYN 同步 SYN = 1 表示这是一个连接请求或连接接受报文。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C

12、K,U R G,位 0 8 16 24 31,填 充,终止 FIN (FINis) 用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,窗口字段 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,

13、选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 2

14、4 31,填 充,紧急指针字段 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,比特 0 8 16 24 31,填 充,选项字段 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”,MSS (Maximu

15、m Segment Size) 是 TCP 报文段中的数据字段的最大长度。 数据字段加上 TCP 首部 才等于整个的 TCP 报文段。,其他选项,窗口扩大选项 占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16 + S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。 时间戳选项占10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。 选择确认选项在后面的 5.6.3 节介绍。,TCP 首部,20 字节 固定 首部,目 的 端 口,数据 偏移,检 验 和,选 项 (长 度 可 变),源 端 口,序 号,紧 急 指

16、 针,窗 口,确 认 号,保 留,F I N,S Y N,R S T,P S H,A C K,U R G,位 0 8 16 24 31,填 充,填充字段 这是为了使整个首部长度是 4 字节的整数倍。,7.3.3 连接建立和终止,运输连接的三个阶段 运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。 连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。,客户服务器方式,TCP 连接的建立都

17、是采用客户服务器方式。 主动发起连接建立的应用进程叫做客户(client)。 被动等待连接建立的应用进程叫做服务器(server)。,用三次握手建立 TCP 连接,CLOSED,CLOSED,A,B,客户,服务器,TCP 的连接建立,A 的 TCP 向 B 发出连接请求报文段,其首部中的 同步位 SYN = 1,并选择序号 seq = x,表明传送 数据时的第一个数据字节的序号是 x。,用三次握手建立 TCP 连接,CLOSED,CLOSED,A,B,客户,服务器,TCP 的连接建立,B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。 B 在确认报文段中应使 SYN = 1,使 AC

18、K = 1, 其确认号ack = x 1,自己选择的序号 seq = y。,CLOSED,CLOSED,A,B,客户,服务器,A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y 1。 A 的 TCP 通知上层应用进程,连接已经建立。,CLOSED,CLOSED,A,B,客户,服务器,B 的 TCP 收到主机 A 的确认后,也通知其上层 应用进程:TCP 连接已经建立。,用三次握手建立 TCP 连接的各状态,CLOSED,CLOSED,A,B,客户,服务器,TCP 的连接建立,CLOSED,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客

19、户,服务器,CLOSED,TCP 的连接释放,数据传输结束后,通信的双方都可释放连接。 现在 A 的应用进程先向其 TCP 发出连接释放 报文段,并停止再发送数据,主动关闭 TCP 连接。 A 把连接释放报文段首部的 FIN = 1,其序号 seq = u,等待 B 的确认。,数据传送,通知 应用 进程,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,TCP 的连接释放,B 发出确认,确认号 ack = u 1, 而这个报文段自己的序号 seq = v。 TCP 服务器进程通知高层应用进程。 从 A 到 B 这个方向的连接就释放了,TCP 连接 处于半关闭状态。B

20、 若发送数据,A 仍要接收。,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,TCP 的连接释放,若 B 已经没有要向 A 发送的数据, 其应用进程就通知 TCP 释放连接。,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,TCP 的连接释放,A 收到连接释放报文段后,必须发出确认。,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,TCP 的连接释放,在确认报文段中 ACK = 1,确认号 ack w 1, 自己的序号 seq = u + 1。,

21、ACK = 1, seq = u + 1, ack = w 1,ACK = 1, seq = u + 1, ack = w 1,FIN = 1, ACK = 1, seq = w, ack= u 1,FIN- WAIT-1,CLOSE- WAIT,FIN- WAIT-2,LAST- ACK,被动关闭,数据传送,ESTAB- LISHED,ESTAB- LISHED,A,B,客户,服务器,数据传送,CLOSED,5.9.2 TCP 的连接释放,TCP 连接必须经过时间 2MSL 后才真正释放掉。,A 必须等待 2MSL 的时间,第一,为了保证 A 发送的最后一个 ACK 报文段能够到达 B。 第

22、二,防止 “已失效的连接请求报文段”出现在本连接中。A 在发送完最后一个 ACK 报文段后,再经过时间 2MSL,就可以使本连接持续的时间内所产生的所有报文段,都从网络中消失。这样就可以使下一个新的连接中不会出现这种旧的连接请求报文段。,状态变换图,TCP 有限状态机的图中每一个方框都是 TCP 可能具有的状态。 每个方框中的大写英文字符串是 TCP 标准所使用的 TCP 连接状态名。状态之间的箭头表示可能发生的状态变迁。 箭头旁边的字,表明引起这种变迁的原因,或表明发生状态变迁后又出现什么动作。 图中有三种不同的箭头。 粗实线箭头表示对客户进程的正常变迁。 粗虚线箭头表示对服务器进程的正常变

23、迁。 另一种细线箭头表示异常变迁。,TCP的有限状态机,CLOSED,ESTABLISHED,LISTEN,CLOSE_WAIT,FIN_WAIT_1,SYN_RCVD,FIN_WAIT_2,CLOSING,TIME_WAIT,SYN_SENT,LAST_ACK,主动打开,被动打开,被动关闭,主动关闭,起点,被动打开,主动打开 发送 SYN,同时打开,收到 SYN,发送 SYN, ACK,收到 ACK,数据传送 阶段,关闭 发送 FIN,关闭 发送 FIN,关闭 发送 FIN,收到 RST,收到 SYN 发送 SYN, ACK,关闭 或超时,收到 ACK,收到 SYN, ACK 发送 ACK,

24、收到 ACK,收到 ACK,收到 FIN 发送 ACK,收到 FIN, ACK 发送 ACK,收到 FIN 发送 ACK,同时关闭,收到 FIN 发送 ACK,发送 SYN,定时经过两倍报文段寿命后,关闭,7.3.4 差错控制,字节编号 字节确认 超时重传,1、字节编号,每个TCP连接传输的字节数据由TCP进行随机编号,即每个TCP连接开始时第一个TCP报文段第一字节数据的编号是随机选取的(避免初始序列号ISN攻击)。,举例,假设某条TCP连接要传送5000字节的文件,TCP对第一个字节的编号从10001(随机选取的)开始。假设这个文件分为5个TCP报文段进行传送,每个TCP报文段携带1000

25、字节,那么每个TCP报文段的字节编号如下所示: 报文段1 顺序号: 10,001 (范围: 10,001 到 11,000) 报文段2 顺序号: 11,001 (范围: 11,001 到 12,000) 报文段3 顺序号: 12,001 (范围: 12,001 到 13,000) 报文段4 顺序号: 13,001 (范围: 13,001 到 14,000) 报文段5 顺序号: 14,001 (范围: 14,001 到 15,000),2、字节确认,TCP采用的是字节确认,一般情况下,接收方确认已收到的最长的、连续的字节计数,TCP报文的每个确认序号字段指出下一个希望接收的字节,实际上就是对已经

26、收到的所有字节的确认。 字节确认的优点是即使确认丢失也不一定导致发送方重传。,3、超时重传,发送方TCP为了恢复丢失或者损坏的报文段,必须对丢失或者损坏的报文段进行重传。事实上,发送方TCP每发送一个TCP报文段,就启动一个重传定时器,如果在规定的时间之内没有收到接收方TCP返回的确认报文,重传定时器超时,与于是发送重传该TCP报文。,7.3.5 重传定时器,1、原始算法 2、Karn/Partridge算法,1、原始算法,EstimatedRTT = EstimatedRTT + (1-) SampleRTT 因子决定了EstimatedRTT对延迟变化的反应速度;当接近1时,短暂的延迟变化

27、对EstimatedRTT几乎不起作用;而当接近0时,EstimatedRTT紧随延迟的变化而变化。原始的TCP协议规范建议值在0.8到0.9之间。,超时定时器计算,TimeOut = EstimatedRTT 当接近1时,TCP能迅速检测到报文丢失并及时重传,从而减少等待时间,但可能引起不必要的重传。当太大时,重传报文的数目减少,但等待确认的时间太长。作为折衷,原始的TCP协议规范一般推荐取2。,2、Karn/Partridge算法,产生超时后,当重传一个报文时,TCP停止计算机RTT采样值;TCP只为没有重传的报文测量RTT采样值。 即每当TCP有超时重传时,它下次的超时定时器的值设置成上

28、次的两倍,而并不以上次的EstimatedRTT为基础。,7.3.6 流量控制,1、滑动窗口机制 2、坚持定时器 3、保持定时器,1、滑动窗口机制,与数据链路层不同的是:TCP不是使用一个固定大小的滑动窗口,而是由接收方通过TCP报文头部的通告窗口AdvertisedWindow字段向发送方通告它的窗口大小。 发送方在任意时刻没有确认的字节数不能超过通告窗口AdvertisedWindow的值。 接收方根据分配的缓冲区的大小来为通告窗口AdvertisedWindow选择一个合适的值。,发送和接收缓冲区(1),发送方的TCP维护一个发送缓冲区。发送缓冲区用来保存那些已经发送出去但是还没有收到对

29、方确认的数据以及发送方应用进程写入但尚未发送的数据。 而接收方的TCP也同样维护着一个接收缓冲区。接收缓冲区保存那些保留那些乱序到达接收方的数据以及那些按顺序到达接收方(即该字节流前面的字节都没有丢失)但接收进程来不及读出的数据。,发送和接收缓冲区(2),发送方TCP,维持着3个指针,分别是:LastByteAcked、LastByteSent和LastByteWritten。 LastByteAcked表示已经应答的字节编号 LastByteSent表示已经发送但尚未收到确认的字节编号 LastByteWritten表示发送方应用进程写到发送方TCP但还没有发送的字节编号 在LastByte

30、Acked左边的缓冲区可以释放了,因为这些字节是已经发送出去而且已经收到确认了。,接收方TCP,维持着3个指针,分别是LastByteRead、NextByteExpexcted和LastByteRcvd。 LastByteRead表示接收方应用进程一定读走的字节编号 NextByteExpexcted表示接收方TCP期望接收的字节编号 LastByteRcvd表示到目前已经接收到最大字节编号。 在LastByteRead左边的缓冲区可以释放了,因为这些字节是已经被接收方应用进程读出了。,流量控制机制,发送方TCP和接收方TCP的缓冲区大小是有限的,我们分别用MaxSendBuffer和Max

31、RcvBuffer表示,接收方的通告窗口,接收方的通告窗口 AdvertisedWindow = MaxRcvBuffer (LastByteRcvd LastByteRead) 这个值就代表接收方TCP缓冲区剩下的可用缓冲区的大小,发送方的发送窗口,发送方的发送窗口 EffectiveWindow = AdvertisedWindow -(LastByteSend LastByteAcked)发送方计算 只有EffectiveWindow大于0,发送方才能发送数据。,发送方的动作,首先,由于接收方应用进程处理速度慢,最终导致接收方TCP缓冲区满,这就意味着接收方发给发送方的通告窗口为0。发送

32、方TCP一看到通告窗口为0,就立即停止发送数据。 但是,发送方应用进程会一直往发送方TCP缓冲区里填入数据,最终会将发送方TCP缓冲区填满,从而导致发送方TCP将发送方应用进程阻塞。,接收方的动作,而在接收方,一旦接收方应用进程开始从接收方TCP的接收方缓冲区读取数据,那么接收方TCP就可以打开它的窗口,亦即接收方TCP缓冲区可用空间不再为0,从而允许发送方TCP把数据从它的发送缓冲区发送出去。 而当发送方收到返回的确认后,就可以释放部分发送缓冲区的空间,从而发送方TCP不再阻塞发送方应用进程并允许发送方应用进程继续往发送缓冲区里写入数据。,2、坚持定时器(1),因为,一旦接收方的通告窗口变为

33、0,就不允许发送方发送任何数据,直到接收到接收方TCP的确认,并宣告非零窗口值。但是这个确认可能丢失。需要引起注意的是,在TCP中,对确认是不需要确认的。假如确认丢失了,接收方TCP仍然认为这个确认已经正确到达发送方,因此接收方就等待发送方TCP发送更多的报文段。发送方TCP由于没有收到确认,就一直等待接收方TCP发送确认以及非零通告窗口值,双方进入死锁状态。,坚持定时器(2),要打开这种死锁,TCP为每一个连接使用坚持定时器。当发送方TCP接收到通告窗口值为0的确认时,就启动坚持定时器。当坚持定时器超时,发送方TCP就发送一个特殊的报文段,叫探测报文。探测报文只有1字节数据,它有序号,但它的

34、序号永远不需要确认。探测报文的目的是提醒接收方TCP,确认已经丢失,必须重传。 坚持定时器的定时宽度通常设置为重传定时器的宽度。如果在坚持定时器超时后还没有收到对方的应答,则将定时宽度加倍,重新发送1个新的探测报文,直到增加到门限值(通常是60s)为止。以后,发送方每隔60s就发送一个探测报文,直到接收窗口重新打开。,3、保活定时器,在某些TCP实现中要使用保活(keepalive)定时器来防止TCP连接的长时间空闲。假定客户建立了到服务器的TCP连接,并且发送了一些数据,然后就出故障了。在这种情况下,这个TCP连接就永远地处于打开状态。 要解决这个问题,就必须在服务器使用保活定时器。每当服务

35、器收到客户的信息,就将保活定时器复位。保活定时器通常设置为2小时,若服务器超过了2小时还没有收到客户的信息,服务器就不断地(每隔75s)发送探测报文,若服务器发送了10个探测报文还没有收到客户的响应,服务器就终止TCP连接。,7.3.7 拥塞和拥塞控制,从拥塞的表现形式定义,拥塞是指由于路由器中排队的报文足够多,导致缓冲区溢出,路由器开始丢弃报文的现象; 从拥塞对网络的影响来定义,拥塞是指网络中存在过多的报文时,导致网络性能下降的现象; 从拥塞产生的根本原因来定义,拥塞是指当报文到达速率大于路由器的转发速率时发生的一种现象。,TCP拥塞控制,拥塞控制的源算法中使用最广泛的是TCP 拥塞控制机制

36、。与TCP 类似的、主要依靠端节点执行拥塞控制的机制统称为端到端拥塞控制。,1、慢启动,2、拥塞避免,TCP为每个连接维持一个新的状态变量,成为拥塞窗口cwnd(CongestionWindow)。 MaxWindow = MIN(cwnd,AdvertisedWindow) EffectiveWindow = MaxWindow -(LastByteSent - LastByteAcked),拥塞避免阶段,3、快速重传,4、快速恢复,在快速重传期间发送方接收到重复ACK后,进入拥塞避免而不进入慢启动。因为重复ACK不仅意味着报文的丢失,而且意味着在丢失的报文之后还接收到其后的报文,即网络上仍然有数据流动,即网络的拥塞还不是非常严重,如果这个时候突然进入慢启动阶段,不利于充分利用带宽。,快速重传和快速恢复组合算法,(1)当发送方接收到3个重复ACK时,把ssthresh设为当前拥塞窗口cwnd的一半,但是不小于2个报文段。然后重传丢失的报文。最后把cwnd设为ssthresh加上3个MSS大小。这就

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论