传输控制协议TCP.ppt_第1页
传输控制协议TCP.ppt_第2页
传输控制协议TCP.ppt_第3页
传输控制协议TCP.ppt_第4页
传输控制协议TCP.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

第第7 7章章 传输控制协议传输控制协议TCP TCP 要求: 1. 掌握TCP的可靠性机制:确认、重传、序号; 2. 掌握TCP的流控和提高传输效率策略:滑动窗口机 制; 3. 掌握TCP连接的建立与关闭协议:三次握手; 4. 掌握TCP的报文段格式; 5. 掌握TCP的拥塞控制技术; 6. 掌握TCP避免糊涂窗口综合症的技术; 7. 了解紧急数据发送和强迫数据发送。 问题?问题? lIP协议的特点是什么? 无连接 不保证可靠性 尽最大努力传输 l应用程序如果要得到高可靠性服务,有哪些途径? 在IP层上增加一层功能模块 由应用程序自身完成可靠性功能 lUDP能否满足应用程序的需求? 7.1 7.1 概述概述 1.可靠性: 防丢失:确认与重传; 防重复:报文段序号; 2.传输效率、流量控制:滑动窗口机制; 3.拥塞控制:加速递减与慢启动技术; 4.建立连接:三次握手协议; 5.关闭连接:改进的三次握手协议。 要实现可靠的数据流传输服务, 必须解决哪几个问题? 面向数据流; 虚电路连接; 有缓冲的传输; 无结构的数据流; 全双工连接。 可靠传输服务有哪些特点? 7.2 TCP7.2 TCP的特点的特点 7.3 TCP连接 1.建立连接 :三次握手 功能: 1. 同意连接协商,做 好传输数据的准备; 2.协商各自报文段ISN( 初始序列号,不能为 1); 3. 协商MSS(只有 SYN报文段能协商 MSS)。 说明: SYN报文段占用初始 序号,发送数据的第一 字节序号为ISN+1。 接收ACK 客户端服务器 报文段 发送SYN seq=x REQUEST 接收SYN 发送SYN seq=y,ACK x+1 ACCEPTED 接收SYN+ACK 发送ACK y+1 CONFIRM 关于关于ISNISN和和MSSMSS lISN 不能取1,为什么? ISN的设置方法是有一定规律的。 lMSS 为什么要选择MSS? 如果连接的两端在同一个物理网络中,TCP协议软件 能计算出合适的MSS; 如果连接的两端不在同一个物理网络中,则把路径上 最小的MTU除去首部后的数据大小作为MSS. 选择合适的MSS非常困难:太小,网络利用率低;太 大,会降低网络性能。 2.关闭连接:改进的三次握手 说明: FIN报文段占用一 个序号;单纯的ACK 报文段不占用序号。 TCP提供了半关闭 能力:连接的一端在结 束它的发送后还能接收 来自另一端数据。 有些编程接口提供 close来关闭TCP连接, 提供shutdown加特殊参 数来实现半关闭。 网点1网点2 接收ACK 接收ACK 发送FIN seq=x 接收FIN ACK x+1 发送FIN seq=y ACK x+1 接收FIN +ACK 发送ACK y+1 3. TCP连接异常关闭 异常关闭:出现异常情况使得应用程序或网络软件 中断连接。 连接复位 RST:发起端发RST报文段,双方立即 停 止传输,并退出连接。 4. 端口、端点和连接 (1) 端口(21、23、25、53、79、80、88、139、 161) (2) 端点 一对整数:(host IP,port)标识通信一方的一个 应用程序。 (3) 连接 一对端点:表示通信双方应用程序间的一条虚电路。 主动打开 去请求 被动打开 等待来 (4)说明 一台机器上的一个TCP端口可被多个连接共享; TCP、UDP可用相同的端口号,但不会冲突。 一个DOS命令:Netstat Active Connections Proto Local Address Foreign Address State TCP koukou:1056 40:https ESTABLISHED Netstat o:列出与每个端口相关的进程 Netstat r: 显示路由表 7.4 提供可靠性 1. 防丢失 带重传的肯定确认技术 接收方收到 数据后向源站发 确认(ACK); 设置定时器 ,源站在限定时 间内未收到ACK ,则重发。 数据发送方数据接收方 接收确认 发送分组 接收分组 发送确认 接收确认 发送分组 接收分组 发送确认 超时重传 两个问题两个问题 l如何识别和处理重复的数据? 序号 抛弃 l定时器时限设置多长? 2. 2. 防重复和乱序防重复和乱序 v报文段重复产生的原因? “假“丢失:确认丢失或确认延迟(超时)到达, 致使发送方重传造成的。 v解决方法: 为每一分组赋予一个序号,用以检测重复。 序号同时保证了分组间的正确顺序。 确认时通过确认号指明哪些分组已经收到。(累 计确认) 序号与确认号序号与确认号 序号 (seq) lseq1=ISN lseqn+1= seqn+第n个报文段的长度(以字节计) 确认号(ACK) l确认号 = 期望接收的下一个报文段的序号 可提高效率的捎带累计确认技术可提高效率的捎带累计确认技术 l什么是累计确认? 只确认前面连续收到的报文 l什么是捎带确认? 把对上一个报文的确认信息放到发给发送方 的数据报文中捎带回去。 3. RTT3. RTT与重传定时器与重传定时器 对于超时重传的情况,如何设置重传定时器的时限? 时限设置的过大过小会出现什么问题? 网络性能不断变化,定时时限应动态调整 两个概念: RTT:往返时间,报文段发出到收到确认信息间的 时间段。 自适应重传算法:监视每个连接的性能,由此推算 出合适的定时时限。当连接的性能变化时,随时修改定 时时限。 重传定时时限的计算方法重传定时时限的计算方法 重传定时时限的计算方法: 早期的方法 改进的方法 Karn算法和定时器补偿 (1) 早期的方法 R:RTT的估计值 (之前RTT的加权平均值) M:本次测量的RTT值 RTO:定时时限 修改估计值: R R + (1-)M (0ssthresh时,使用拥塞避免算法; l当cwnd=ssthresh时,既可以使用慢启动算法,也可 以使用拥塞避免算法。 拥塞窗口cwnd 每个连接都有一个拥塞窗口,该窗口大小以字节为单位,但是 增加和减少以MSS为单位; 初始大小:1个MSS; 慢启动算法 思想:新连接开始或拥塞解除后,都仅以一个最大报文段长度 作为拥塞窗口cwnd的初始值。此后,每收到一个确认,cwnd增 加一个MSS。 拥塞 避免算法 当cwnd增加到ssthresh的一半时,进入“拥塞避免”状态。 思想:窗口中的所有报文段都被确认后,才将cnwd增加一个 MSS。 加速递减技术 指数级递减:出现超时重传时,将ssthresh值设为当前拥塞窗口 的1/2,拥塞窗口恢复为1个MSS大小; 指数退避:对保留在发送窗口中的报文段,将重传时限加倍 。 TCP拥塞控制技术 慢开始和拥塞避免算法的实现举例-1 当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用 字节而使用报文段。 慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 发送端的发送窗口不能超过拥塞窗口和接收端窗口中的最小值。我们假定 接收端窗口足够大,因此现在发送窗口的数值等于拥塞窗口的数值。 慢开始和拥塞避免算法的实现举例-2 在执行慢开始算法时,拥塞窗口的初始值为 1,发送 第一个报文段 M0。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 慢开始和拥塞避免算法的实现举例-3 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 发送端收到 ACK1 (确认 M0,期望收到 M1)后,将拥塞窗口 从 1 增大到 2,于是发送端可以接着发送 M1 和 M2 两个报文段 。 慢开始和拥塞避免算法的实现举例-4 接收端发回 ACK2 和 ACK3。发送端每收到一个对新 报文段的确认 ACK,就把发送端的拥塞窗口加 1。现 在发送端的拥塞窗口从 2 增大到 4,并可发送 M4 M6 共 4个报文段。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 慢开始和拥塞避免算法的实现举例-5 发送端每收到一个对新报文段的确认 ACK,就把发送 端的拥塞窗口加 1,因此拥塞窗口 随着传输次数按指 数规律增长。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 慢开始和拥塞避免算法的实现举例-6 当拥塞窗口增长到慢开始门限值 ssthresh 时(即当 CongWin = 16 时),就改为执行拥塞避免算法,拥 塞窗口按线性规律增长。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 ssthresh = 16 慢开始慢开始 线性规律增长 拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 慢开始和拥塞避免算法的实现举例-7 假定拥塞窗口的数值增长到 24 时,网络出现超时(表 明网络拥塞了)。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 慢开始和拥塞避免算法的实现举例-8 更新后的 ssthresh 值变为 12(即发送窗口数值 24 的一半) ,拥塞窗口再重新设置为 1,并执行慢开始算法。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 慢开始和拥塞避免算法的实现举例-9 当 CongWin = 12 时改为执行拥塞避免算法,拥塞窗口按线 性规律增长,每经过一个往返时延就增加一个 MSS 的大小。 2468101214161820220 0 4 8 12 16 20 24 传输次数 拥塞窗口 进入拥塞避免 发生超时 指数规律增长 线性规律增长 ssthresh = 16 慢开始慢开始拥塞避免拥塞避免 更新后的 ssthresh = 12 进入拥塞避免 80KB 超时 64KB ssthresh 40KB ssthresh 7.7 TCP报文 1. 报文段和序号:报文段是TCP软件间传输数据的基 本单元,每个报文段都有一个序号。 (1)选取初始序号 (2)第n+1段的序号 = 第n段序号 + 第n段数据区字节数( 相当于每个字节都有一个序号) 源端口目标端口 序号 确认号 首部长度保留码元比特 窗口 校验和紧急指针 选项(若有)填充 数据 首部长度:4字节计数,最大15,TCP首部长度20-60 序号:当前报文的序号 确认号:希望接收的对方下一报文段序号(已成功接收 到的数据字节序+1) 说明: (1)序号和确认序号在一起使得确认可捎带进行。 (2)TCP采用累计确认策略。 (3) TCP采用经受时延的确认(时延一般为200ms)。 缺点:发送方无法收到所有成功传输的报文段的确认 信息,对往返时间样本的精确测量带来影响。 窗口:通告对等端缓冲区大小,使发送方修改窗口的 大小,以便进行收发双方的流量控制。 问题:初始窗口大小如何确定? 默认值,在建立连接时互相通告 校验和计算:加入伪首部,必须(UDP可选) 源IP 目标IP 0协议TCP长度 码元比特(标识报文段的目的与内容): URG 紧急 ACK 确认 PSH 强迫 RST 连接 复位 SYN 序号 同步 FIN 字节流 同步 带有确认建立连接异常关闭连接正常关闭连接 选项: 第一版TCP:定义了选项表结束、无操作、MSS(最 大报文段长度。 选项表结束 Kind=0(1byte) MSSKind=2(1byte) len=4(1byte)MSS(2byte) MSS过小:效率低 MSS过大:考虑分片,丢失可能性增大 MSS接近路径MTU时为最佳(由于路径改变,很难) 。 说明:只有SYN报文能协商MSS,默认536字节 无操作 Kind=1(1byte)功能:使得选项达到4字节的整数倍 选项: 第二版TCP(rfc1323):增加了窗口扩大因子和时间戳。 窗口扩大因子 Kind=3 len=4移位数 功能:将TCP窗口定义从16bit扩大到32bit。 移位数 = R:窗口大小 = 65535 2R 说明: 只能出现在一个SYN报文段中; 主动建立连接的一方发送这个选项,被动方收到该 选项后才能发此选项; 每个方向上的扩大因子可以不同; 时间戳选项: kind=8len=10时间戳值(4 byte)时间戳回显应答(4 byte) 时间戳:发送方填 时间戳回显应答:接收方确认复制发回 功能:更好地估算RTT 防止回绕的序号 问题:如果接收方发送了一个对两个报文段的确 认,那么应该复制哪一个报文的时间戳字段呢? 解决:TCP为每个连接保留一个时间戳数值。 1. TCP设置两个变量: (1)tsrecent:每个连接的时间戳数值; (2)lastack: 最后发送的ACK的确认序号; 2. 当包含lastack的报文段到达时,其中的时间 戳被保存至tsrecent; 3. 无论何时发送确认,tsrecent将被写入时间 戳回显应答字段,确认序号则被保存到 lastack。 分析: 1. 若ACK被接收方延迟,则回显的是第一个报文段。 例:若包含11024和10252048字节的两个报文段到达 ,则: lastack为1025,回显时间戳为11024的时戳。 原因:发送方在进行重传超时时间的计算时,必须将延 迟的ACK也考虑在内。 2. 若收到的报文失序,则丢失的报文段到达时,它的时 间戳被回显。 例:收到报文的顺序为11024-20494072-10252048 ,则处理情况如下: (1)确认号为1025,回显时间戳为11024的时戳; (2)确认号为1025,回显时间戳为11024的时戳; (3)确认号为4073,回显时间戳为10252048的时戳; 结果:造成RTT估计过高,比过低好 7.8 7.8 紧急数据和强迫数据发送紧急数据和强迫数据发送 1. 紧急数据发送和带外数据 带外数据:源站不能按字节流的顺序而需要立即发给 接收方并及时处理的数据(普通数据流中的紧急数据)。 1 URG位 数据区 紧急数据 紧急指针 接收方收到URG报文段,立即把紧急数据交应用程序 处理,然后再处理普通数据流。 通常,紧急数据从数据区最前端开始。但有些系统只 传送1字节紧急数据,可位于数据区任意地方。 2. 强迫数据发送 应用背景: 通常,TCP为提高网络利用率,在缓冲区中 积累够一个最大报文段容量的数据后才发送 。 在交互环境或实时性要求高的场合,每条命 令(甚至每个字符)希望及时传送。TCP提 供推(PUSH)操作,以强迫发送当前数据流 中的数据而不必等待缓冲区满。 应用方式: 发送方将PSH置“1”,以通知接收方尽快把该 报文段数据交应用程序。 1. 重传定时器: 设定丢失重传的时间间隔 。 2. 坚持定时器 在接收方发出0窗口通告后,发送方为了防止死锁 发生,用一个坚持定时器周期性地向接收方发送窗口 探察报文, 防止“0”窗口通告后窗口恢复通告丢失后 造成死锁。 3. 保活定时器(间隔:2小时) 在服务器端检测半开放的连接。 如果一个给定的连接在两个小时内没有任何动作, 则服务器会向客户端发送一个探察报文段,根据响应 情况进行处理。 7.97.9 TCPTCP的定时器的定时器 客户机可能的四种状态: 客户机正常工作,并从服务器可达:2小时后保活 定时器复位;若期间有通信,通信后2小时再复位; 客户机崩溃:服务器连续发10个探察报文,回应超 时时间间隔设置为75秒,若始终没有回应,则终止连 接; 客户机崩溃后重新启动:服务器收到RST回应报文 ,终止连接; 客户机正常工作,但从服务器不可达:同状态2。 1. IP欺骗:核心:ISN估计 7.11 TCP攻击实例 A:目标机B:被伪装机 H:黑客机 H冒充B攻击A H冒充B向A发送SYN报文 A向B回应SYN+ACK报文 B发现错误,向A发RST A发现错误 假设A死,攻击步骤: (1)H冒充B向A发送SYN报文,ISNh (2)A向B回应SYN+ACK(ACK ISNh+1,SYN ISNA), 白发 (3)H假冒B回应ACK到A(ACK ISNa+1) 问题:ISNa=?(难点) 解决:掌握ISN增长的规律 RFC793:ISN是32比特的

温馨提示

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

评论

0/150

提交评论