计算机网络 第六章传输层.ppt_第1页
计算机网络 第六章传输层.ppt_第2页
计算机网络 第六章传输层.ppt_第3页
计算机网络 第六章传输层.ppt_第4页
计算机网络 第六章传输层.ppt_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

第六章传输层 传输服务传输协议一个简单的传输协议因特网传输协议 传输层 整个协议层次结构的核心 传输层位于面向通信的低三层和面向信息处理的高三层之间 为高层用户提供独立于具体网络的 经济 有效和可靠的端到端数据传输服务 在osi参考模型中 底下4层为传输服务的提供者 transportserviceprovider 上面3层是传输服务的用户 transportserviceuser osi参考模型 6 1传输服务 传输层提供两种类型的服务 面向连接的传输服务 无连接的传输服务 传输服务的必要性 可靠的服务 用户不能控制通信子网来满足自己所需的网络服务 只能在网络层上增加一个属于用户自己的传输层来保证所需的传输服务 统一的接口 由于传输服务是独立于网络服务的 应用程序便能采用一个标准统一的传输服务原语来调用各种不同的网络服务 服务质量 接口定义等五花八门 传输层与上下层的逻辑关系 传输协议数据单元 tpdu tpdu transportprotocoldataunit 表示对等传输层间传递的数据单元 用户将报文封装在tpdu中交给网络层进行处理 服务质量qos qualityofservice 传输层的主要功能可看成是增强网络层提供的服务质量 服务质量的好坏是由一组服务质量参数来衡量的 主要有 连接建立延迟 connectionestablishmentdelay 建立一个连接所需的时间 连接建立失败的概率 connectionestablishmentfailureprobability 在指定的最大连接建立延迟内未能建立连接的可能性 吞吐率 throughput 一个连接上每秒钟传输的用户数据的字节数 传输延迟 transitdelay 用户报文从源端发送到目的端所需的时间 残余误码率 residualerrorratio 丢失或错乱报文的百分比 保护 protection 要求传输层提供保护 以防止未经授权的第三方窃听或篡改用户报文 优先级 priority 能指示被服务的连接的优先级别 恢复 resilience 传输层释放一个连接的可能性 以上服务质量参数一般是传输用户和传输层在建立连接时通过选项协商 optionnegotiation 而设定的 传输服务原语 传输服务原语是传输用户用来访问传输服务的接口 每种传输服务均有各自的访问原语 伯克利套接字 berkeleysocket 下表为面向连接的tcp中的套接字原语 面向连接的套接字通信 连接的建立 服务器端 执行socket 创建一个新的套接字通信端点并为其分配表空间 执行bind为套接字分配一个本地地址和名字 执行listen表示服务器进程愿意接受连接请求 并指定连接等待队列的最大长度 执行accept 阻塞服务器进程 等待客户的连接请求 一旦客户的连接请求到达 传输实体即为其创建一个新的具有相同属性的套接字 并产生一个进程或线程在新套接字上处理该连接 然后服务器进程回到原来的套接字上继续监听连接请求 客户端 执行socket 创建一个新的套接字通信端点 不需bind 执行connect 阻塞连接请求者并主动开始建立连接的进程 当服务器的应答到来后 客户进程被唤醒 连接即告建立 连接建立后 双方都可使用send和receive在已有的连接上发送和接收数据 连接的释放是对称的 当双方都执行了close后 连接即被释放 面向连接的套接字通信示意图 6 2传输协议 传输层协议与网络层提供的服务质量有很大关系 网络层提供的服务越完善 传输层协议就越简单 反之 传输层协议越复杂 子网根据其提供的服务质量的差异可以分为三类 a类 可提供完善的数据传输服务 分组的丢失 重复和错序等情况极少出现 可忽略不计 有些局域网可提供接近a类的服务 b类 单独的分组丢失很少发生 但网络层会因为内部拥塞或软 硬件故障等原因而时常发出n reset原语 传输层协议要纠正由于重置而出现的混乱 建立新的网络连接 重新同步 恢复正常传输 使传输服务用户对网络层出现的重置一无所知 大多数广域网属于此类 c类 这类子网提供的传输服务最不可靠 会出现分组丢失和重复 还可能出现重置 提供数据报服务的广域网 无线分组交换网 以及互联网均属此类 传输层协议与网络服务质量的关系 根据网络层提供的服务质量 iso osi把传输层协议分为5类 传输层协议与数据链路层协议的比较 传输层协议和数据链路层协议非常相似 都必须进行顺序控制 差错控制 流量控制等工作 但由于运行的环境不同 两者的具体操作是大不相同 传输层的端到端之间经过一个复杂的 具有存储能力的通信子网 使得其在寻址 连接的管理 控制协议等方面都非常复杂 寻址 用传输服务访问点tsap transportserviceaccesspoint 和网络服务访问点nsap networkserviceaccesspoint 来描述传输地址和网络地址 寻址的两个问题 客户进程如何获知服务器进程的传输地址tsap 客户传输实体如何从目的传输地址获得目的网络地址nsap 一 服务器传输地址tsap的定位 有两个途径 众所周知的地址 对于一些经常使用的服务 可为其指定固定的传输地址 印在手册或指南上广为传播 对临时不常用的地址 有两种方法 初始连接协议 initialconnectionprotocol 使用称为名字服务器 nameserver 或目录服务器 directoryserver 的特殊服务器进程 初始连接协议 如unix中的inetd 服务器 机器 上运行一个具有众所周知传输地址的特殊的进程服务器 processserver 作为各种服务器 进程 的代理 名字服务器或目录服务器 客户进程从众所周知的名字服务器中通过对服务的名字 已注册到名字服务器 进行查找 即可获得相应的服务器进程的传输地址 二 目的网络地址nsap的定位 传输地址tsap为层次型地址 hierachicaladdress nsap可直接来自于tsap 如tcp ip的传输地址由网络地址和端口号组成 传输地址tsap为平面型地址空间 flataddressspace 需要名字服务器将tsap转换成nsap 在某些场合下 如lan中 可采用广播方式询问目的机器的nsap 建立连接 connectionestablishment 由于通信子网的不可靠性和存储能力 造成不可预知的延迟 使得可靠地建立传输连接变得十分困难 一些解决的方法有 给每个连接分配一个唯一的连接标识 每个传输实体将用过的连接标识记在表中 以区别新旧连接 限制分组的寿命 为每个分组设置一个寿命域 计数器 每隔一定的时间寿命减1 减至0时就丢弃分组 可以设定一个时间t 根据不同的协议 为分组最大寿命的若干倍 当一个分组发送后 经时间t 所有和该分组有关的分组就全不存在了 这大大简化了问题 为每台主机设置一个一直运转的计时时钟 二进制计数器 位数足够大 每隔一定时间加1 当建立连接时 用时钟的低k位作为本连接的初始序号 此后的发送序号按序递增 不再参考计数器值 但发送序号不能进入禁止区 时间和初始序号之间的线性关系 基于时钟的方法解决了数据tpdu的延迟重发问题 其前提条件是双方已建立了传输连接 知道对方的初始序号 但由于控制tpdu也会延迟 造成建立传输连接的复杂 可采用三次握手 three wayhandshake 的方法加以解决 释放传输连接有两种方式 非对称释放 asymmetricrelease 任何一方发出断连请求即可终止连接 容易造成数据丢失 对称释放 symmetricrelease 一条连接的两个方向被看成是两个单独的连接 一方发出断连请求表明它的数据已发送完毕 但仍可以在连接上接收对方的数据 只有双方都发出了断连请求 连接才被终止 释放连接 connectionrelease 三次握手连接释放法 为了可靠地终止连接 一方在发出断连请求后 必须收到对方的断连请求 响应 才能终止连接 实际上做不到 实际中采用的三次握手连接释放法不是绝对可靠的 但已令人足以满意了 考虑后面图中的第4种情况 若主机2一次都没有收到主机1的断连请求 就不会释放连接 形成一个半开的连接 half openconnection 导致失败 为了清除半开的连接 协议规定任何一方在一给定的时间内没有收到连接上的任何tpdu 就自动释放连接 每个传输实体都设置一个定时器 只要发送tpdu就复位定时器 一旦定时器超时就自动发送一个哑 dumb tpdu 以防止连接长时间没有数据传输而被对方终止 若哑tpdu丢失 则对方释放连接 稍候本方也释放连接 三次握手连接释放的四种情况 流量控制和缓冲策略 传输层虽然和数据链路层一样都采用了滑动窗口协议等机制来实现流量控制 但由于传输层上 主机 的连接数多且不定 而中间通信子网的传输能力有限 不可能为每条连接分配固定数量的缓冲区 由于发送流量涉及到接收端的接收能力和通信子网的传输能力 因此必须从这两个方面来讨论传输层上的流量控制 发送流量应该取接收端和通信子网所能允许的流量值中的较小值 从接收能力出发 传输层连接须对收发双方动态地分配缓冲区数量 发送端应向接收端申请所需的缓冲空间 接收端一侧 接收端也应能根据情况决定为发送端预留多少空间 动态可变 通过确认及时告知发送端 以便调整发送流量 死锁问题 由于包含缓冲区分配数的控制tpdu 确认 可能会丢失 从而造成死锁 解决方法 每台主机应定期向每个连接发送控制tpdu 随着内存价格大幅度下降 可以为主机配置大容量的内存 基本上可解决收发缓冲匮乏的问题 动态缓冲的分配管理 从子网能力出发 发送方采用可动态调整窗口大小的滑动窗口协议来匹配网络的承载能力 发送方定期地监视网络的传输能力c 网络每秒钟可传输的tpdu数量 和循环时间r 从发出tpdu到收到其确认为止所需的时间 然后计算出发送窗口的大小 cr c可以简单地通过计算在某段时间间隔内确认的tpdu数除以时间间隔来决定 测量时应尽快发送数据 r可以从发送端精确获得 一般取某段时间内的平均值 多路复用 multiplexing 向上多路复用 upwardmultiplexing 将去往相同目的节点的不同传输连接复用到同一条网络连接上 使它们共同承担一条网络连接的通信费用 按时 为了实现向上多路复用 每个主机应能将各传输连接按目的主机进行分组 并将它们映射到最少数量的网络连接上 每个网络连接上的传输连接数应适中 向下多路复用 downwardmultiplexing 为一条传输连接建立多条网络连接 传输实体按一定顺序在各个网络连接上并行发送数据 从而提高了数据的整体传输速率 物理线路须有足够大的容量 两种多路复用示意图 崩溃恢复 一个主机通过执行一个操作和返回一个确认作为收到一个tpdu的响应 但当一台主机从一次崩溃中恢复时 他如何知道在此之前已执行了多少操作和发送了多少返回的确认 从第n层崩溃中恢复只能由第n 1层来完成 并且只有在第n 1层保留有足够的状态信息的情况下才能完成 6 3一个简单的传输协议 一个简单易懂而又贴近实际的传输层协议实例面向连接的服务原语 传输实体 网络层的分组 连接的状态 每个连接总是处于下面7种状态之一 有限状态机 状态图示 6 4因特网传输协议 有两个主要的协议 面向连接的tcp transmissioncontrolprotocol 协议无连接的udp userdataprotocol 协议 tcp协议 tcp是专门设计用于在不可靠的internet上提供可靠的 端到端的字节流 非报文流 通信的协议 发送方tcp实体将应用程序的输出流分为不超过64k字节 实际通常为1500字节 的数据片段 piece 并将每个数据片段封装在一个ip分组中发送出去 接收方tcp实体根据字节序号 32位 将接收到的各个数据片段组装成连续的字节流交给应用程序 tcp服务是通过收发双方分别创建的称为套接字 socket 包含ip地址和端口号 之间的连接来获得的 所有的tcp连接都是全双工的点到点的连接 不支持组播和广播 tcp的基本数据单元 tcp实体交换数据的基本单元 tpdu 称作数据段 segment 每个数据段包含一个固定的20字节的头 还可加一个可选部分 和若干数据字节 其总长度可在建立连接时通过互相声明自己所能接收的最大段长mss maximumsegmentsize 来选定或双方使用一个缺省的mss 536字节 但mss的选取应使得每个段封装成ip分组后 其长度不超过ip分组的载荷能力 65535字节 及相应网络的最大传输单元mtu maximumtransferunit 一个段超过网络的mtu限制时会被分段 fragmentation 每个小分段 分组 都有tcp头 20字节 和ip头 20字节 增加了系统的总开销 tcp数据段的头 源端口和目的端口用来标识本地和对方的应用进程 端连接点 端口号加上其主机的ip地址构成一个48比特的tsap sequencenumber指示tcp段中第一个字节的序号 建立一个新的tcp连接时 syn标志为1 该域是主机为该连接选择的初始序号 连接建立后发送的第一个字节将具有的序号为sequencenumber 1 由于全双工 每个连接的端点都必须单独维持一个序号 acknowledgementnumber表示发送该tcp段的主机准备从对方接收的下一个字节序号 即该序号之前的字节已全部正确收到 headerlength指示tcp头的长度 以4字节为单位 最大值为15 60字节 urg标志指示urgentpointer域是否有效 urgentpointer用来指示紧急数据距当前字节序号的偏移字节数 当接收方收到一个urg为1的段后 立即中断当前正在执行的程序 根据urgentpointer找到段中的紧急数据 优先进行处理 ack标志为1时表示acknowledgementnumber中是一个有效的应答序号 psh标志为1时表示接收方收到数据后应尽快交给应用程序 而不是等接收缓冲区满后再递交 rst标志为1时表示复位一个连接 通常在主机崩溃后复位连接 也可表示拒绝建立一个连接或拒绝接收一个非法的段 syn标志为1时表示建立一个连接 fin标志为1时表示数据发送结束 但仍可继续接收另一个方向的数据 windowssize表示发送方可以发送的字节数 为0时表示接收缓冲区满 用于tcp的流量控制 checksum对tcp头 tcp数据域及tcp伪头 pseudoheader 12字节长 其中的内容来自于ip分组的头 进行校验 选项用于提供一种增加额外设置的方法 在常规的tcp头中并不包括 重要的选择有 mss选项 设定能接受的最大tcp载荷能力 窗口比例选项 可扩大窗口尺寸 选择重发选项等 tcp数据段的头结构 tcp数据段的伪头结构 tcp采用三次握手的方法建立连接 服务器方执行listen和accept原语 被动监听 客户方执行connect原语 产生一个syn为1和ack为0的tcp段 表示连接请求 服务器方的传输实体接收到这个tcp段后 首先检查是否有服务进程在所请求的端口上监听 若没有 回答rst置位的tcp段 若有服务进程在所请求的端口上监听 该服务进程可以决定是否接受该请求 在接受后 发出一个syn置1和ack置1的tcp段表示连接确认 并请求与对方的连接 发起方收到确认后 发出一个syn置0和ack置1的tcp段表示给对方的连接确认 若两个主机同时试图建立彼此间的连接 则只能建立一条连接 初始连接序号的选择采用基于时钟的方案 每隔4微妙初始连接序号加1 分组的最长寿命为120秒 tcp采用对称释放法释放连接 tcp的全双工连接可看成一个双单工的连接 每个单工连接都独立地释放 通信双方必须都向对方发送fin 1的tcp段并得到对方的应答 连接才能被释放 有四个阶段 可以将第一个ack数据段和第二个fin数据段合并 从而变为三次握手 为防止半连接 必须使用定时器计时 对fin数据段的应答在两个最大分组生命期内未到达 就释放连接 对方也会超时释放 建立和释放连接过程中的11种状态 tcp连接管理有限状态机 tcp传输策略 tcp的窗口管理机制基于确认和可变窗口大小 窗口大小为0时 正常情况下 发送方不能再发tcp段 但有两个例外紧急数据可以发送 为防止死锁 发送方可以发送1字节的tcp段 以便让接收方重新声明确认号和窗口大小 如何改进传输层的性能 策略1 发送方缓存应用程序的数据 等到形成一个比较大的段再发出 策略2 在没有可能进行 捎带 的情况下 接收方延迟发送确认段 tcp传输策略 策略3 使用nagle算法 当应用程序每次向传输实体发出一个字节时 传输实体发出第一个字节并缓存所有其后的字节直至收到对第一个字节的确认 然后将已缓存的所有字节组段发出并对再收到的字节缓存 直至收到下一个确认 策略4 使用clark算法解决傻窗口症状 sillywindowsyndrome 傻窗口症状 当应用程序一次从传输层实体读出一个字节时 传输层实体会产生一个一字节的窗口更新段 使得发送方只能发送一个字节 解决办法 限制收方只有在具备一半的空缓存或最大段长的空缓存时 才产生一个窗口更新段 tcp的拥塞控制 由于当前网络传输介质的可靠性越来越高 所以tcp实体认为超时就是网络拥塞造成的 可根据超时来判断是否发生拥塞 出现拥塞的两种情况快网络小缓存接收者慢网络大缓存接收者导致网络拥塞的两个潜在因素是 网络能力和接收能力 tcp处理第一种拥塞的措施在连接建立时声明最大可接受段长度 利用可变滑动窗口协议防止出现拥塞 tcp处理第二种拥塞的措施发送方维护两个窗口 可变发送窗口和拥塞窗口 按两个窗口的最小值发送 拥塞窗口依照慢启动 slowstart 算法和拥塞避免 congestionavoidance 算法变化 拥塞控制算法 慢启动 slowstart 算法 建立连接时 拥塞窗口被初始化成该连接支持的最大段长度 发送一个最大长度的段 若没有超时 则对拥塞窗口加倍扩大 发送两个最大长度的段 重复此过程 直至最终达到设定的临界值或发生超时 internet的拥塞控制算法 初始设置临界值 threshold 为64kb 若发生超时 将临界值设为当前拥塞窗口的1 2 并将拥塞窗口恢复为最大段长度 执行慢启动算法 直至拥塞窗口达到临界值 此后要求拥塞窗口按线性增加 每次只增加一个最大段长度 直至最终达到接收窗口大小或发生超时 若超时再将临界值设为当前拥塞窗口的

温馨提示

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

评论

0/150

提交评论