您好、欢迎来到现金彩票网!
当前位置:ds视讯 > 服务原语 >

第6章传输层

发布时间:2019-07-26 15:50 来源:未知 编辑:admin

  第6章 传输层 传输服务 传输协议的要素 Internet的传输协议 的传输协议 传输服务 传输层的功能及在协议层次中的作用 传输层提供的服务 传输服务原语 传输层在OSI模型中的位置 传输层在OSI模型中的位置 传送的使用者 应用层 表示层 会话层 传输层 网络层 链路层 物理层 资源子网 传送的提供者 通信子网 介于通信子网和资源子网之间, 介于通信子网和资源子网之间,对高层用户屏蔽了通 信的细节 弥补了通信子网所提供服务的差异和不足, 弥补了通信子网所提供服务的差异和不足,提供端到 端之间的无差错保证 传输层工作的简繁取决于通信子网提供服务的程度 传输层与上下层之间的关系 主机1 主机 应用(或会话层 应用 或会话层) 或会线 主机 应用(或会话层 或会话层) 应用 或会话层 应用/传输接口 应用 传输接口 TPDU 传输协议 传输/网络接口 传输 网络接口 网络层 传输实体 传输实体 网络地址 网络层 Tnbm P480 书 P368 图6-1 网络层、传输层和应用层 网络层、 传输层使高层用户看见的好象就在两个传输 层实体之间有一条端到端的、可靠的、 层实体之间有一条端到端的、可靠的、全双 工的通信通路(即数字管道) 工的通信通路(即数字管道) 传输服务 传输层的功能及在协议层次中的作用 传输层提供的服务 传输服务原语 传输层提供的服务 面向连接的服务:通信可靠, 面向连接的服务:通信可靠,对数据有 校验和重发 如TCP/IP模型中的 模型中的FTP、Telnet 模型中的 、 面向非连接的服务: 面向非连接的服务:对数据无校验和重 发,通信速率高 模型中的SNMP 如TCP/IP模型中的 模型中的 传输服务 传输层的功能及在协议层次中的作用 传输层提供的服务 传输服务原语 传输服务原语是应用程序和传输 服务之间的接口 一个典型的面向连接的服务原语 原 语 LISTEN CONNECT SEND RECEIVE (无) 无 CONNECTION REQ DATA (无) 无 TPDU发送的 发送的 含 义 阻塞, 阻塞,直到某个过程试图连接 建立一个连接的活动尝试 发送信息 阻塞,直到一个 阻塞,直到一个DATA TPDU到达 到达 DISCONNECT DISCONNECTION REQ 该方希望释放连接 伯克利套接字 Sockets) (Berkeley Sockets) 原 语 SOCKET BIND LISTEN ACCEPT 含 义 创建一个新的通信端点 往套接字中附加本地地址 宣布愿意接受连接, 宣布愿意接受连接,给出队列大小 阻塞呼叫者, 阻塞呼叫者,直到连接尝试到达 CONNECT 活动的建立连接的尝试 SEND 通过连接发送一些数据 RECEIVE 通过连接接收一些数据 CLOSE 释放连接 典型的套接字应用过程 套接字的使用与文件的使用类似 客户端 取主机IP地址 取主机 地址 服务器端 将协议名转换成内部的二进制表示 创建一个套接字 将该套接字与本地协议端口相连 置等待消息方式 将该套接字与服务器相连 接收下一连接请求 接收 关闭 发送 关闭 将协议名转换成内部的二进制表示 创建一个套接字 第6章 传输层 传输服务 传输协议的要素 Internet的传输协议 的传输协议 传输协议的要素 传输层与数据链路层的比较 相同点: 相同点:数据的传送 不同点:数据链路层通过物理通道直接通信,而在传输层, 不同点:数据链路层通过物理通道直接通信,而在传输层,其面对的 传输通道是一个网络 数据链路层的通信是点对点的, 数据链路层的通信是点对点的,每条输出线对应了唯一的一 个设备, 个设备,而传输层则需要给出目的端地址 数据链路层的连接建立很简单, 数据链路层的连接建立很简单,而传输层要复杂得多 在数据链路层无中间存储环节,而在传输层, 在数据链路层无中间存储环节,而在传输层,每一途径的路 由器都是存储、寻径、转发, 由器都是存储、寻径、转发,而寻径到转发的时间随路由器 本身和路由算法而定 数据链路层通常使用发送缓冲区和接收缓冲区,而在传输层, 数据链路层通常使用发送缓冲区和接收缓冲区,而在传输层, 对每个连接都必须分配一定的缓冲区, 对每个连接都必须分配一定的缓冲区,其缓冲区的管理将复 杂得多 传输层必须讨论: 传输层必须讨论: 寻址 连接建立 释放连接 流量控制和缓冲策略 传输服务访问点TSAP 传输服务访问点TSAP (Transport Service Access Point) Point) 两个程序要建立连接时, 两个程序要建立连接时,必须指明对方是哪一 个应用程序,这个标记称为传输层地址, 个应用程序,这个标记称为传输层地址,也称 为传输服务访问点(TSAP) 为传输服务访问点( ) 协议中即TCP的端口号 在TCP协议中即 协议中即 的端口号 网络层地址称为网络服务访问点NSAP(Network ( 网络层地址称为网络服务访问点 Service Access Point),在IP协议中即 地址 ),在 协议中即 协议中即IP地址 ), 如何知道对方的TSAP 如何知道对方的TSAP well-known TSAP 每个服务都有自己固定的TSAP,所有网络用户 , 每个服务都有自己固定的 都知道 采用名字服务器( 采用名字服务器(name server)或 ) 目录服务器( 目录服务器(directory server) ) 用户与名字服务器建立连接, 用户与名字服务器建立连接,向服务器发送一 个报文,指明服务的名称, 个报文,指明服务的名称,服务器将该服务对 应的TSAP返回给用户。类似于 返回给用户。 应的 返回给用户 类似于114查号 查号 传输层必须讨论: 传输层必须讨论: 寻址 连接建立 释放连接 流量控制和缓冲策略 连接建立 通信子网的不可靠性 通信子网中存在着延时和分组的丢失, 通信子网中存在着延时和分组的丢失,以及 由于延时和丢失而带来的重复分组 由于通信子网的尽力而为的传输原则, 由于通信子网的尽力而为的传输原则,一个 早已超时的分组最终还是到达了目的端,所 早已超时的分组最终还是到达了目的端, 以有必要将分组的生命周期限制在一个适当 的范围内 连接建立时,如何处理过期分组, 连接建立时,如何处理过期分组,保证连接 的唯一性是连接建立过程中首要考虑的问题 常用的方法是: 三次握手法 常用的方法是: 连接建立过程 正常的三次握手过程 非正常的连接建立过程 由延迟重复导致的连接过程 同时出现作废的CR和 同时出现作废的 和ACC的情况 的情况 正常的连接建立过程 正常连接的三次握手过程 正常连接的三次握手过程 主机1 主机 主机2 主机 t 主机1发出连接请求序号为 主机 发出连接请求序号为 x(seq=x),主机 应答接受连接请 ,主机2应答接受连接请 求主机1的请求 的请求, 求主机 的请求,并声明自己的序 列号为y(seq=y,ACK=x),主机 收 列号为 ,主机1收 到确认后发送第一个数据TPDU并 到确认后发送第一个数据 并 确认主机2的序列号 确认主机 的序列号 (seq=x,ACK=y),至此,整个连接 ,至此, 建立过程正常结束, 建立过程正常结束,数据传输已正 式开始 CR:Connection Request(连接请求) ACC:Connection Accepted(接受连接) (a)正常操作 正常操作 Tnbm P497书 P382 图6-11 采用三次 书 握手方法建立的正常情况 连接建立过程 正常的三次握手过程 非正常的连接建立过程 由延迟重复导致的连接过程 同时出现作废的CR和 同时出现作废的 和ACC的情况 的情况 非正常的连接建立过程1 非正常的连接建立过程1 出现延迟的重复TPDU时三次握手的工作过程 时三次握手的工作过程 出现延迟的重复 主机1 主机 旧的重复 主机2 主机 t (b)重复的CR突然出现 重复的CR突然出现 重复的CR Tnbm P497书 P382 图6-11 采用三次 书 握手建立的第二种情况 来自一个已经释放连接的主机1的 来自一个已经释放连接的主机 的 延迟重复的连接请求, 延迟重复的连接请求,该TPDU在 在 主机1毫不知晓的情况下到达主机 毫不知晓的情况下到达主机2。 主机 毫不知晓的情况下到达主机 。 主机2通过向主机 通过向主机1发送一个接受连 主机 通过向主机 发送一个接受连 接请求的TPDU来响应该 来响应该TPDU, 接请求的 来响应该 , 并声明自己的序号为 y(seq=y,ACK=x),主机 收到这个 ,主机1收到这个 确认后感到莫名其妙并当即拒绝, 确认后感到莫名其妙并当即拒绝, 主机2收到了主机 收到了主机1 主机 收到了主机 的拒绝才意识到 自己受到了延时的重复TPDU的欺 自己受到了延时的重复 的欺 骗并放弃该连接。据此, 骗并放弃该连接。据此,延时的重 复请求将不会产生不良后果 连接建立过程 正常的三次握手过程 非正常的连接建立过程 由延迟重复导致的连接过程 同时出现作废的CR和 同时出现作废的 和ACC的情况 的情况 非正常的连接建立过程2 非正常的连接建立过程2 子网中同时有作废的CR和 子网中同时有作废的 和ACC的情况 的情况 主机1 主机 旧的重复 主机2 主机 t Tnbm P497书 P382 图6-11 采用三次 书 握手建立的第三种情况 (c)重复的 和重复的 重复的CR和重复的 重复的 ACK 与上例一样,主机 收到了一个延 与上例一样,主机2收到了一个延 时的CR并做了确认应答 在这里, 并做了确认应答。 时的 并做了确认应答。在这里, 关键是要认识到主机2已经声明使 关键是要认识到主机 已经声明使 作为从主机2到主机 用y作为从主机 到主机 进行数据 作为从主机 到主机1进行数据 传输的初始序号,因此主机2十分 传输的初始序号,因此主机 十分 清楚在正常情况下,主机1的数据 清楚在正常情况下,主机 的数据 传输应捎带对y确认的 确认的TPDU。于 传输应捎带对 确认的 。 当第二个延时的TPDU到达主 是,当第二个延时的 到达主 机2时,主机 根据它确认的是序 时 主机2根据它确认的是序 而不是y知道这也是一个过时 号z而不是 知道这也是一个过时 而不是 的重复TPDU。因此也不会无故建 的重复 。 立无人要求的连接 传输层必须讨论: 传输层必须讨论: 寻址 连接建立 释放连接 流量控制和缓冲策略 释放连接 非对称释放 一方中止连接,则连接即告中断 一方中止连接, 缺陷:可能导致数据丢失 缺陷: 对称释放 A提出中止请求,B同意即中止 提出中止请求, 同意即中止 提出中止请求 问题: 如何知道 收到了它的确认? 如何知道A 问题:B如何知道 收到了它的确认 非对称释放 一方中止连接, 一方中止连接,则连接即告中断 主机1 主机 主机2 主机 CR ACC DATA DATA DR 在一个断开请求 后没有提交数据 Tnbm P499书 P383 图6-12 书 突然释放连接将造成数据丢失 当连接建立后,主机 发 当连接建立后,主机1发 送了一个数据TPDU并正 送了一个数据 并正 确抵达主机2,接着, 确抵达主机 ,接着,主 机1发送了第二个数据 发送了第二个数据 TPDU,然而,主机 在 ,然而,主机2在 收到第二个TPDU之前先 收到第二个 之前先 突然发出了 DISCONNECT(释放连 释放连 接请求), 接请求 ,结果是连接立 即被释放, 即被释放,数据被丢失 释放连接 非对称释放 一方中止连接,则连接即告中断 一方中止连接, 缺陷:可能导致数据丢失 缺陷: 对称释放 A提出中止请求,B同意即中止 提出中止请求, 同意即中止 提出中止请求 问题: 如何知道 收到了它的确认? 如何知道A 问题:B如何知道 收到了它的确认 对称释放 A提出中止请求,B同意即中止 提出中止请求, 同意即中止 提出中止请求 对称释放方式适用于每个用户进程有固定数量的 数据需要发送, 数据需要发送,而且清楚地知道何时发送完毕的 情况 其他情况下,决定所有工作是否已经完成, 其他情况下,决定所有工作是否已经完成,连接 是否应该释放, 是否应该释放,可能是没有把握的 可以假想一种协议: 可以假想一种协议: A说:“ 我发送完了。你呢 说 我发送完了。你呢?” 如果B响应:“ 我也发送完了。再见。” 如果 响应: 我也发送完了。再见。 响应 A收到了 的确认,连接便可以被安全释放 收到了B的确认 收到了 的确认, 传输层必须讨论: 传输层必须讨论: 寻址 连接建立 释放连接 流量控制和缓冲策略 流量控制和缓冲策略 流量控制是发送方和接收方之间的传输 速率上的匹配, 速率上的匹配,为使没有得到确认的 PDU在超时后的重发,通常必须在缓冲 在超时后的重发, 在超时后的重发 区中暂存 在数据链路层,实现的是点对点的通信, 在数据链路层,实现的是点对点的通信,双方 缓冲区的大小根据滑动窗口协议而定 而传输层实现的是端到端的通信,某一时刻, 而传输层实现的是端到端的通信,某一时刻, 一台主机可能同时与多台主机建立了连接, 一台主机可能同时与多台主机建立了连接,多 个连接必须有多组缓冲区, 个连接必须有多组缓冲区,所以缓冲区的动态 分配和管理策略与数据链路层不尽相同 流量控制和缓冲策略举例 TPDU序号 主机A 序号 主机 消息 主机B 主机 注 1 请求 个缓冲区 请求8个缓冲区 A想要 个缓冲区 想要8个缓冲区 请求 个缓冲区 想要 2 3 B没有收 没有收 到m2 释 ack=15,buf=4 seq=0,data=m0 seq=1,data=m1 seq=2,data=m2 ack=1,buf=3 seq=3,data=m3 seq=4,data=m4 seq=2,data=m2 ack=4,buf=0 ack=4,buf=1 ack=4,buf=2 seq=5,data=m5 seq=6,data=m6 ack=6,buf=0 ack=6,buf=4 B只有 个缓冲区 只有4个缓冲区 只有 A发送了 ,A剩下 个缓冲区 发送了m0, 剩下3个缓冲区 发送了 剩下 A发送了 ,A剩下 个缓冲区 发送了m1, 剩下 剩下2个缓冲区 发送了 A发送了 ,A剩下 个缓冲区 发送了m2, 剩下 剩下1个缓冲区 发送了 B确认了 确认了m0,m1,并剩下 个缓冲区 确认了 ,并剩下3个缓冲区 A发送了 ,A剩下 个缓冲区 发送了m3, 剩下 剩下1个缓冲区 发送了 A发送了 后剩下 个缓冲区,暂停 发送了m4后剩下 个缓冲区, 发送了 后剩下0个缓冲区 A重发 ,A剩下 个缓冲区 重发m2, 剩下 剩下0个缓冲区 重发 B确认了 ,并剩下 个缓冲区 确认了m4,并剩下0个缓冲区 确认了 B确认了 ,并剩下 个缓冲区 确认了m4,并剩下1个缓冲区 确认了 B确认了 ,B有了 个缓冲区 确认了m4, 有了 有了2个缓冲区 确认了 A发送了 ,A剩下 个缓冲区 发送了m5, 剩下 剩下1个缓冲区 发送了 A发送了 后剩下 个缓冲区,暂停 发送了m6后剩下 个缓冲区, 发送了 后剩下0个缓冲区 B确认了 ,并剩下0个缓冲区 确认了m6,并剩下 个缓冲区 确认了 B确认了 ,并剩下 个缓冲区 确认了m6,并剩下4个缓冲区 确认了 表示上 交了1个 交了 个 4 5 6 7 8 9 10 11 12 A没有收 没有收 到ACK 13 14 15 16 可能导 致死锁 Tnbm P509 Fig. 6-16 动态缓冲区的分配 第6章 传输层 传输服务 传输协议的要素 Internet的传输协议 的传输协议 Internet的传输协议 Internet的传输协议 TCP和UDP都是 和 都是Internet提供的传输 都是 提供的传输 层协议 UDP是面向非连接的 UDP是面向非连接的 TCP是面向连接的 是面向连接的 UDP(User Datagram Protocol) Protocol) UDP协议是无连接的数据报协议,它不提供 协议是无连接的数据报协议, 协议是无连接的数据报协议 可靠性服务,但其相应的协议开销也较小、 可靠性服务,但其相应的协议开销也较小、 效率较高 网管协议SNMP使用的传输层协议就是 使用的传输层协议就是UDP 网管协议 使用的传输层协议就是 UDP提供的服务 UDP提供的服务 UDP是面向非连接的,与IP协议相比,它 是面向非连接的, 协议相比, 是面向非连接的 协议相比 唯一增加的能力是提供端口协议, 唯一增加的能力是提供端口协议,以保证 进程通信, 进程通信,传输的可靠性要靠应用程序来 解决, 解决,但效率高 UDP的数据报格式 UDP的数据报格式 0 8 16 31 UDP源端口 源端口 UDP长度 长度 UDP目的端口 目的端口 校验和 Tnbm P526 Fig. 6-23 UDP的头部格式 的头部格式 UDP源端口:UDP端口号,当不需要返回数据时,源 源端口: 端口号, 源端口 端口号 当不需要返回数据时, 端口域置0 端口域置 UDP目的端口:UDP端口号 目的端口: 目的端口 端口号 UDP长度:整个数据段的长度,包括头部和数据部分 长度:整个数据段的长度, 长度 以字节计,最小值为8(仅头部长度) 以字节计,最小值为 (仅头部长度) UDP校验和:可选域,全0为未选,全1表示校验和为 校验和:可选域, 为未选, 表示校验和为0 校验和 为未选 表示校验和为 RPC(Remote Procedure Call) Call) 将网络中的请求-应答交互表示成过程调用形 将网络中的请求 应答交互表示成过程调用形 例如:调用get-IP-address(主机名)将 式,例如:调用 (主机名) 发送一个UDP包给 包给DNS服务器,并等待回答 服务器, 发送一个 包给 服务器 RPC对程序员屏蔽了网络运作的细节 对程序员屏蔽了网络运作的细节 RPC是UDP的一个重要应用 是 的一个重要应用 RTP(Real-Time Transport Protocol) RealProtocol) UDP的另一个重要应用是多媒体数据的传输, 的另一个重要应用是多媒体数据的传输, 的另一个重要应用是多媒体数据的传输 RTP是专门用于多媒体传输的一个协议,它 是专门用于多媒体传输的一个协议, 是专门用于多媒体传输的一个协议 基于UDP协议 基于 协议 RTP在协议栈中的位置 在协议栈中的位置 多媒体应用 RTP 套接字接口 UDP IP 以太网 用户空间 Tnbm P529 Fig. 6-25(a) RTP在协议栈中的位置 在协议栈中的位置 OS内核 内核 RTP的功能 RTP的功能 将多个实时数据流多路复用到一个UDP流上,UDP流能 流上, 将多个实时数据流多路复用到一个 流上 流能 被送给某个地址(单址传输)或多个地址(多址传输) 被送给某个地址(单址传输)或多个地址(多址传输) 每个RTP流的数据包有一个连续的编号,接收方可 每个 流的数据包有一个连续的编号, 流的数据包有一个连续的编号 以根据此编号确定是否有数据包丢失 RTP没有流量控制、差错控制、 RTP没有流量控制、差错控制、应答以及重传机制 没有流量控制 RTP的载荷可以是不同的多媒体信息,如单个的声 的载荷可以是不同的多媒体信息, 的载荷可以是不同的多媒体信息 音流,每种信息允许有多种编码方式, 音流,每种信息允许有多种编码方式,如声音流可 以用GSM、MP3等,编码方式在 以用 、 等 编码方式在RTP的包头上指 的包头上指 出 实时应用的另一个特征是需要时间戳, 实时应用的另一个特征是需要时间戳,时间戳是相对于 流的第一个数据包的,这有助于在接收方消除抖动, 流的第一个数据包的,这有助于在接收方消除抖动,以 及多个流的同步 RTP的头部格式 RTP的头部格式 0 1 2 3 4 7 8 9 15 16 31 版本 P X CC M 载荷类型 时间戳 同步源标记 顺序号 有效的源标记 Tnbm P531 Fig. 6-26 RTP的头部格式 的头部格式 RTP的头部字段 RTP的头部字段 P:指出数据包是否被填充为4字节的整倍数 :指出数据包是否被填充为 字节的整倍数 X:是否有扩展头 : CC:有多少个有效源(0-15) :有多少个有效源( ) M:应用指定的标记位,如表示 :应用指定的标记位,如表示video帧的开始 帧的开始 载荷类型: 载荷类型:指出信息的编码方式 顺序号: 顺序号:RTP包的序号 包的序号 时间戳:由发送源产生, 时间戳:由发送源产生,表示与第一个包的时间间隔 同步源标记:数据包属于哪个流, 同步源标记:数据包属于哪个流,用于多路复用或解 多路复用 有效源标记:用于混合数据源,如果该字段出现, 有效源标记:用于混合数据源,如果该字段出现,则 该混合源是同步数据源, 该混合源是同步数据源,每个分数据源被列在这里 Internet的传输协议 Internet的传输协议 TCP和UDP都是 和 都是Internet提供的传输 都是 提供的传输 层协议 UDP是面向非连接的 UDP是面向非连接的 TCP是面向连接的 是面向连接的 TCP提供的服务 TCP提供的服务 面向连接( 面向连接(Connection Orientation) ) 端到端的服务( 端到端的服务(End – to – End Communication) ) 完全可靠性服务( 完全可靠性服务(Complete Reliability) ) IP协议不提供可靠性服务,而TCP将在 的基础上提供可靠性 协议不提供可靠性服务, 将在IP的基础上提供可靠性 协议不提供可靠性服务 将在 服务并保证数据发送和接收次序一致 全双工服务( 全双工服务(Full Duplex Communication) ) 流接口( 流接口(Stream Interface) ) 可靠的连接建立( 可靠的连接建立(Reliable Connection Startup) ) 完美的连接终止( 完美的连接终止(Graceful Connection Shutdown) ) TCP协议将讨论: TCP协议将讨论: 协议将讨论 TCP服务模型 服务模型 TCP数据段头 数据段头 TCP连接和释放管理 连接和释放管理 TCP传输策略 传输策略 TCP拥塞控制 拥塞控制 TCP定时器管理 定时器管理 TCP服务模型 TCP服务模型 端口port 端口 TCP的TSAP,与某一个应用程序相关 的 , 通用端口(well-known port) 通用端口( ) 其他可由各主机自己定义 套接字socket 套接字 传输层的通信端点, 传输层的通信端点,它由 IP地址 + 端口号 地址 组成 套接字举例 一个套接字允许被多个连接同时使用, 一个套接字允许被多个连接同时使用,即多个 连接可同时连接到同一个套接字上 A C 202.120.26.35 166.1.11.15 connection 1: user1 port 500 连接 连接1 (202.120.26.35, 500)-(166.1.11.15, 25) user2 port 501 连接2 连接 B port 25 connection 2: (202.120.26.35, 501)-(166.1.11.15, 25) connection 3: 202.120.26.37 user3 port 500 连接3 连接 (202.120.26.37, 500)-(166.1.11.15, 25) TCP协议将讨论: TCP协议将讨论: 协议将讨论 TCP服务模型 服务模型 TCP数据段头 数据段头 TCP连接和释放管理 连接和释放管理 TCP传输策略 传输策略 TCP拥塞控制 拥塞控制 TCP定时器管理 定时器管理 TCP数据段头及说明 TCP数据段头及说明 0 4 8 16 31 源端口 序号 确认号 段头长度 目的端口 保留 校验和 码位 窗口大小 紧急指针 可选项( 或更多的 位字) 或更多的32位字 可选项(0或更多的 位字) 数据开始 Tnbm P537 Fig. 6-29 TCP头 头 端口:每个端口对应一个应用程序 端口: 序号: 序号:发送的字节序号 确认号: 确认号:接收到的字节序号 段头长度:段头中包含多少个32位字 段头长度:段头中包含多少个 位字 TCP数据段头及说明 TCP数据段头及说明(续) 保留:以备扩展之用 保留: 码位: 码位: URG ACK PSH RST SYN FIN URG:紧急指针有效 : ACK:确认号有效 : PSH:接收方请求数据一到,立即送往应用程序 :接收方请求数据一到, RST: : 复位由于主机崩溃或其他原因而出现的错误的连接 SYN:用于建立连接 : FIN: 用于断开连接 : 窗口: 窗口:接收方窗口大小 TCP数据段头及说明 TCP数据段头及说明(续) 校验和:包括报头、 校验和:包括报头、数据和伪段头 0 4 8 16 31 源IP地址 地址 目的IP地址 目的 地址 00000000 协议 = 6 TCP数据段长度 TCP数据段长度 Tnbm P539 Fig. 6-30 包括在 包括在TCP校验和中的伪头 校验和中的伪头 紧急指针: 紧急指针:当前序号到紧急位置的偏移量 选项字段:用于提供一种增加额外设置的方法, 选项字段:用于提供一种增加额外设置的方法, 如连接建立时, 如连接建立时,双方说明最大的负载能力 数据: 数据:真正要传输的数据 选项字段 最大数据段长度MSS 最大数据段长度 目的站可接收的最大的数据段长度, 目的站可接收的最大的数据段长度,这个 值在0到65535之间,默认值是536字节 值在 到 之间,默认值是 字节 之间 窗口扩大因子n 窗口扩大因子 新窗口的大小= 新窗口的大小 首部中定义的窗口大小*2窗口扩大因子 首部中定义的窗口大小 窗口扩大因子 TCP协议将讨论: TCP协议将讨论: 协议将讨论 TCP服务模型 服务模型 TCP数据段头 数据段头 TCP连接和释放管理 连接和释放管理 TCP传输策略 传输策略 TCP拥塞控制 拥塞控制 TCP定时器管理 定时器管理 TCP连接管理 TCP连接管理 TCP连接的建立 连接的建立 采用三次握手( 采用三次握手(3-way handshake)的方法 ) 包头中的同步位( 用TCP包头中的同步位(SYN)和结束位(FIN)描 包头中的同步位 )和结束位( ) 述连接建立和终止时的三次握手消息 主机1 主机 主机2 主机 其中 x:主叫方的初始序号 : y:被叫方的初始序号 : 时 间 Tnbm P540 Fig. 6-31(a) 一般情况下 一般情况下TCP连接的建立过程 连接的建立过程 TCP连接管理 TCP连接管理 TCP连接的建立 (续) 连接的建立 连接以端地址 ~ 端地址为标识 即使两边发起同一连接, 即使两边发起同一连接,也不会建立两个连接 主机1 主机 主机2 主机 Tnbm P540 Fig. 6-31(b) 呼叫碰撞的情况 连接释放 ULP A 1 Close to B Connection Closed 8 2 FIN SEQ 151 TCP A SEQ 188,ACK 152 3 FIN SEQ 188;ACK 152 6 7 ACK 189 TCP B ULP B Connection 5 ULP A Closing Closed Closed to B 4 9 TCP关闭操作[7] 关闭操作 ULP:upper layer protocol 连接释放图说明 事件 1 2 3 4 5 6 7 8 9 动 作 TCP A的用户打算关闭它在 的用户打算关闭它在TCP B中对等的上层协议的操作 的用户打算关闭它在 中对等的上层协议的操作 TCP A发送一个 发送一个FIN位置 的段,SEQ=151是上一次操作的继续, 位置1的段 是上一次操作的继续, 发送一个 位置 的段, 是上一次操作的继续 是TCP模块要求传输的下一个序号 模块要求传输的下一个序号 TCP B确认 确认TCP A的FIN SEQ151,它的 确认 的 ,它的SEQ=188、ACK=152 、 TCP B向其用户发出一个 向其用户发出一个close原语 向其用户发出一个 原语 TCP B用户应用程序确认同意关闭 用户应用程序确认同意关闭 TCP B再发出最后一个段,FIN位置 并SEQ=188、ACK=152同上 再发出最后一个段, 位置1并 再发出最后一个段 位置 、 同上 TCP A确认,ACK=189 确认, 确认 TCP A连接关闭 连接关闭 TCP B连接关闭 连接关闭 注:握手用的报文长度仅一个字节 TCP协议将讨论: TCP协议将讨论: 协议将讨论 TCP服务模型 服务模型 TCP数据段头 数据段头 TCP连接和释放管理 连接和释放管理 TCP传输策略 传输策略 TCP拥塞控制 拥塞控制 TCP定时器管理 定时器管理 TCP传输策略 TCP传输策略 TCP使用与数据链路层不同的窗口协议来实 使用与数据链路层不同的窗口协议来实 现流量控制 数据链路层: 数据链路层:在数据链路层的滑动窗口协 议中, 议中,发送窗口的滑动依赖于确认帧的到 达 TCP层:TCP的窗口大小是其缓冲区的尺 层 的窗口大小是其缓冲区的尺 寸,建立连接的双方都将分配一个缓冲区 作为接收数据的存放空间, 作为接收数据的存放空间,并相互通知对 此后, 方,此后,每次对接收数据确认的同时发 布一个窗口公告( 布一个窗口公告(window 零窗口通告 发送方收到一个零窗口通告时, 发送方收到一个零窗口通告时,必须停止发 直到接收方重新通告一个正的窗口, 送,直到接收方重新通告一个正的窗口,但 有两种情况可以除外 发送紧急数据,如允许用户终止( ) 发送紧急数据,如允许用户终止(kill) 远端机上运行进程 发送方可以发送一个字节的数据段通知对 方,重新声明它希望接收的下一字节及窗 口大小, 口大小,以防止窗口公告丢失而导致的死 锁 TCP层流量控制举例 TCP层流量控制举例 发送方事件 发送数据字节1~1000 发送数据字节 发送数据字节1001~2000 发送数据字节 发送数据字节2001~2500 发送数据字节 收到1000的确认 收到 的确认 收到2000的确认 收到 的确认 收到2500的确认 收到 的确认 发送方等待 发送数据字节2501~3500 发送数据字节 发送数据字节3501~4500 发送数据字节 发送方等待 收到3500的确认 收到 的确认 收到4500的确认 收到 的确认 收到4500的确认 的确认 收到 接收方事件 通告窗口=2500 通告窗口 确认1000,窗口 ,窗口=1500 确认 确认2000,窗口 确认 ,窗口=500 确认2500,窗口 确认 ,窗口=0 应用读出2000字节 字节 应用读出 确认2500,窗口 确认 ,窗口=2000 确认3500,窗口 ,窗口=1000 确认 确认4500,窗口 确认 ,窗口=0 应用读出1000字节 字节 应用读出 确认4500,窗口 确认 ,窗口=1000 TCP协议将讨论: TCP协议将讨论: 协议将讨论 TCP服务模型 服务模型 TCP数据段头 数据段头 TCP连接和释放管理 连接和释放管理 TCP传输策略 传输策略 TCP拥塞控制 拥塞控制 TCP定时器管理 定时器管理 TCP拥塞控制 TCP拥塞控制 数据的丢失有两种情况 接收方的容量太小(接收缓冲区) 接收方的容量太小(接收缓冲区) 网络的容量太小(网络带宽) 网络的容量太小(网络带宽) Tnbm P548 Fig. 6-36所示 所示 主机如何知道拥塞 收到ICMP的源抑制报文 的源抑制报文 收到 因报文丢失引起的超时 拥塞窗口 网络拥塞造成数据包丢失, 网络拥塞造成数据包丢失,重发机制进 一步加剧了拥塞 TCP的拥塞控制方案将由于接收方的容量和由于网络 的拥塞控制方案将由于接收方的容量和由于网络 的容量所产生的拥塞问题分别处理, 的容量所产生的拥塞问题分别处理,除了已定义的接 收窗口外,还定义了拥塞窗口, 收窗口外,还定义了拥塞窗口,拥塞窗口的动态调整 一旦发现数据包丢失, 是:一旦发现数据包丢失,则降低重发数据包的速率 接收方承认的接收窗口表示接收缓冲区 的容量 拥塞窗口表示网络的容量 接收窗口和拥塞窗口的大小, 接收窗口和拥塞窗口的大小,两者取其 拥塞窗口的具体实现 拥塞窗口的初始化 拥塞窗口大小的修正 选择发送数据量 取两个窗口的最小值作为可以发送的数据量 拥塞窗口的初始化 连接建立时, 连接建立时,发送方将拥塞窗口的初始大小设置为最 大的数据包长度,并随后发一个最大长度的数据包, 大的数据包长度,并随后发一个最大长度的数据包, 如该数据包在定时器超时前得到了确认, 如该数据包在定时器超时前得到了确认,发送方在原 来的拥塞窗口的基础上再增加一倍长度,发送两个数 来的拥塞窗口的基础上再增加一倍长度, 据包,如两个数据包都得到了确认, 据包,如两个数据包都得到了确认,则再增加一倍长 度,直到数据传输超时或到达接收方的窗口大小为止 当拥塞窗口的大小为n个数据包时,如果发送的 个 当拥塞窗口的大小为 个数据包时,如果发送的n个 个数据包时 数据包都得到了确认, 数据包都得到了确认,那么此时拥塞窗口的大小即为 n个数据包对应的字节数 个数据包对应的字节数 拥塞窗口的具体实现 拥塞窗口的初始化 拥塞窗口大小的修正 选择发送数据量 取两个窗口的最小值作为可以发送的数据量 拥塞窗口大小的修正 除接收窗口和拥塞窗口外, 除接收窗口和拥塞窗口外,拥塞控制时还需 指定一个临界值,临界值的初始值为 指定一个临界值,临界值的初始值为64K, , 如果发生数据传输超时,将临界值设为当前 如果发生数据传输超时, 拥塞窗口的1/2, 拥塞窗口的 ,并使拥塞窗口恢复到最大的 数据段长度, 数据段长度,成功的传输使拥塞窗口按指数 增加(成倍),直到到达临界值, ),直到到达临界值 增加(成倍),直到到达临界值,以后按线 性增加(按最大的数据段长度) 性增加(按最大的数据段长度) 拥塞窗口动态调整举例 假定原来拥塞窗口为64KB,但已超时 , 假定原来拥塞窗口为 最大的数据段长度为1024(1K) 最大的数据段长度为 拥 44 塞 40 窗 36 口 32 (KB) 28 24 20 16 12 8 4 0 临界值1 临界值 临界值2 临界值 0 2 4 6 8 10 12 14 16 18 20 22 24 传输号 Tnbm P550 Fig. 6-37 Internet拥塞算法的一个实例 拥塞算法的一个实例 TCP协议将讨论: TCP协议将讨论: 协议将讨论 TCP服务模型 服务模型 TCP数据段头 数据段头 TCP连接和释放管理 连接和释放管理 TCP传输策略 传输策略 TCP拥塞控制 拥塞控制 TCP定时器管理 定时器管理 TCP定时器管理 TCP定时器管理 “ 保活 ”定时器 当一连接长时间超时时, 当一连接长时间超时时,所设定的 “ 保活 ”定时器超时,超时一方会发 定时器超时, 送一个探测报文检查对方是否存在, 送一个探测报文检查对方是否存在, 如没有得到响应, 如没有得到响应,则终止连接 重发定时器 持续定时器 数据重发定时器 TCP在发送一个数据段的同时,启动一个数 在发送一个数据段的同时, 在发送一个数据段的同时 据重发定时器, 据重发定时器,如果在定时器超时前该数据 段被确认, 段被确认,则关闭该定时器 如果在确认到达之前定时器超时, 如果在确认到达之前定时器超时,则需要重 发该数据段(并且该定时器重新开始计时) 发该数据段(并且该定时器重新开始计时) 问题是超时间隔应该设为多长? 问题是超时间隔应该设为多长 与数据链路层点对点的情况不同, 与数据链路层点对点的情况不同,在TCP层,源站点与 层 目的站点之间的网络距离是随机变化的, 目的站点之间的网络距离是随机变化的,其数据传输时 间的离散性很大, 间的离散性很大,线路的状态更是瞬息万变 所以, 所以,重发定时器的超时时间不宜设定为固定大小 链路层和TCP层的延时分布比较 链路层和TCP层的延时分布比较 0.3 概 率 0.2 T 0.3 概 率 0.2 T1 T2 0.1 0.1 0 0 10 20 30 40 往返时间( ) 往返时间(ms) 50 0 0 10 20 30 40 往返时间( ) 往返时间(ms) 50 Tnbm P551 Fig. 6-38 (a)数据链路层中确认到达时间的概率密度 数据链路层中确认到达时间的概率密度 (b) TCP层中确认到达时间的概率密度 层中确认到达时间的概率密度 延时分布比较说明 对于数据链路层, 对于数据链路层,由于所预计的延迟基本上是准确的 (即误差很小),所以只要定时器设定值大于预计的 即误差很小),所以只要定时器设定值大于预计的 ), 确认延迟时间即可,如图6-33(a)所示 确认延迟时间即可,如图 所示 TCP所面临的是完全不同的情况,端到端的连接可能 所面临的是完全不同的情况, 所面临的是完全不同的情况 远隔重洋,需经过很多路由器的存储转发, 远隔重洋,需经过很多路由器的存储转发,途经路由 器的实际情况又是动态变化的,所以TCP确认返回所 器的实际情况又是动态变化的,所以 确认返回所 需时间的概率密度函数更接近于图6-33(b)所示 所示 需时间的概率密度函数更接近于图 超时后的适应性重发 计算新的往返时间估计值 TCP不使用固定的重发定时器,而是根据对 不使用固定的重发定时器, 不使用固定的重发定时器 网络性能的不断测定, 网络性能的不断测定,主要是对远程的确认 报文作延迟分析,不断调整超时间隔的动态 报文作延迟分析, 算法, 算法,使用一种称为自适应的重发定时器 RTT(Round-Trip Timer) ( ) 超时后的适应性重发(续) 自适应重发时间的确定 自适应的重发时间, 自适应的重发时间,将尽可能避免因延时较大而进行 的错误重发,并尽可能提高系统的吞吐率,同时, 的错误重发,并尽可能提高系统的吞吐率,同时,对 处于不同网络距离(近程或远程) 处于不同网络距离(近程或远程)的两台计算机的重 发时间作动态的调整 RTT = αRTT0 + (1 - α)M0 其中: 其中:RTT0:前一次计算得到的重发定时值 M0:前一次测量得到的往返时间 α:修正因子,前一次的RTT值的权值 修正因子,前一次的 值的权值 通常取α (通常取α = 7/8) ) 选择重发超时时限 超时时限固定为βRTT 超时时限固定为 在最初的程序实现中, 总为 总为2, 在最初的程序实现中,β总为 ,但经验表明 常量是很不灵活的, 常量是很不灵活的,因为当发生变化时它便 不能很好地适应 偏差值方法 偏差值D 偏差值 =αD0 + ( 1 -α) RTT0 - M0 超时值 = RTT + 4*D TCP定时器管理 TCP定时器管理 “ 保活 ”定时器 当一连接长时间超时时, 当一连接长时间超时时,所设定的 “ 保活 ”定时器超时,超时一方会发 定时器超时, 送一个探测报文检查对方是否存在, 送一个探测报文检查对方是否存在, 如没有得到响应, 如没有得到响应,则终止连接 重发定时器 持续定时器 持续定时器 如接收方向发送方发出一个窗口为零的确认, 如接收方向发送方发出一个窗口为零的确认,当接 收方的上层处理了一部分缓冲区数据后, 收方的上层处理了一部分缓冲区数据后,接收方更 新窗口大小并向发送方再发一个确认分组( 新窗口大小并向发送方再发一个确认分组(包括新 的窗口公告),但该分组丢失,此时双方将相互等 的窗口公告),但该分组丢失, ),但该分组丢失 待,出现死锁 为防止死锁,当持续定时器超时, 为防止死锁,当持续定时器超时,发送方将向接收 方发一探测报文(仅一字节) 方发一探测报文(仅一字节) ,接收方的应答报文 这正是上面所说: 将避免相互等待(这正是上面所说:即使在发送方接到一 个零窗口通告时,也允许发送一个字节的数据报询问对方) 个零窗口通告时,也允许发送一个字节的数据报询问对方) 作业 习题: 习题 13, 15, 19, 20, 21

http://wendevick.net/fuwuyuanyu/805.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有