《计算机网络——传输层协议及分析.ppt》由会员分享,可在线阅读,更多相关《计算机网络——传输层协议及分析.ppt(80页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第六章第六章传输层协议及分析传输层协议及分析1/21/202311.OSI体系结构中的传输层2.Internet体系中的传输层1/21/202326.1 OSI体系结构中的传输层传输层位于开放系统互连模型中的第四层,是整个网络层次中非常重要的层次之一,它是衔接由物理层、数据链路层及网路层构成的通信子网和包含会话层、表示层及应用层的资源子网的桥梁,起到承上启下的作用。传输层对高层用户起到了屏蔽作用,使高层用户的同等实体在交互过程中不会受到下层数据通信技术细节的影响。1/21/20233从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最
2、低层。物理层网络层传输层应用层数据链路层面向信息处理面向通信用户功能网络功能1/21/20234传输层为相互通信的应用进程提供了逻辑通信 54321传输层提供应用进程间的逻辑通信应用进程应用进程IP 层AP1AP2AP4端口端口54321AP3主机 A主机 B路由器 1路由器 2AP1LAN2WANAP2AP3AP4LAN1IP 协议的作用范围传输层协议 TCP 和 UDP 的作用范围1/21/20235应用进程之间的通信两个主机进行通信实际上就是两个主机中的应用进程互相通信。应用进程之间的通信又称为端到端的通信。传输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交
3、到传输层,再往下就共用网络层提供的服务。传输层提供应用进程间的逻辑通信,这里“逻辑通信”的意思是:传输层之间的通信好像是沿水平方向传送数据。但事实上这两个传输层之间并没有一条水平方向的物理连接。1/21/20236传输层协议和网络层协议的主要区别 应用进程应用进程IP 协议的作用范围(提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)因 特 网1/21/20237端口的概念端口就是运输层服务访问点 TSAP。端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。从这个
4、意义上讲,端口是用来标志应用层的进程。1/21/20238端口在进程之间的通信中所起的作用 应用层传输层网络层TCP 报文段UDP用户数据报应用进程TCP 复用IP 复用UDP 复用TCP 报文段UDP用户数据报 应用进程端口端口TCP 分用UDP 分用IP 分用发送方接收方1/21/20239端口 端口用一个 16 bit 端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。1/21/202310两类端口 一类是熟知端口,其数值一般为 01023。当一种新的应用程序出现时,必须为它指派一个熟知端口。另一类则是一般端
5、口,用来随时分配给请求通信的客户进程。1/21/202311插口(socket)TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为插口(socket),或套接字、套接口。插口和端口、IP 地址的关系是:IP 地址131.6.23.13 端口号1500 131.6.23.13,1500插口(socket)1/21/202312传输层与其上下层之间的关系的 OSI 表示法 传输实体传输实体传输协议传输层层接口 传输服务用户(应用层实体)传输服务用户(应用层实体)层接口 网络层(或网际层)应用层主机 A主机 B传输层服务访问点TSAP网络层服务访问点NSAP1
6、/21/202313OSI标准中,网络被分为A、B、C三类:A类:无网络层重建完善服务的网络B类:有网络层重建完善服务的网络C类:不可靠的服务OSI规定了传输层提供5类协议:0类:最简单类,适用于可靠型网络1类:与0类大致相同,提供了崩溃恢复2类:同0类一样针对A类子网设计,但允许多个传输共用一个网络连接3类:综合了1类和2类的特点,既可以提供多路复用又可以从网络层重建中恢复,并提供显示流控。4类:服务质量最高,最复杂,针对C类网络设计。1/21/2023146.2 Internet体系中的传输层在Internet网络上,传输层有两个并列的协议,一个是TCP,一个是UDP。TCP即传输控制协议
7、,它是面向连接的,可提供高可靠的服务,相当于OSI传输层中的TP4。UDP即用户数据报协议,它是面向无连接的,可提供高效率的服务,相当于OSI传输层中的TP0。1/21/202315传输层向上提供可靠的和不可靠的逻辑通信信道?应用层传输层发送进程接收进程接收进程数据数据全双工可靠信道数据数据使用 TCP 协议使用 UDP 协议不可靠信道发送进程1/21/2023166.2.1 TCP协议1.TCP的主要功能l完成对数据报的确认、流量控制和网络拥塞的处理l数据报自动检测、提供错误自动重发功能l将多条路径传送的数据报按照原序排列,并对重复数据进行择取l控制超时重发、自动调整超时值l提供自动回复丢失
8、数据的功能1/21/2023172.TCP的数据传送过程TCP是一种面向数据流的协议,操作过程分为三个阶段:建立TCP连接、传送数据和结束TCP连接。应用层传输层网络层网络接口层Ethernet用户报文TCP数据报IP数据报以太帧用户数据用户数据数 据FTPH数 据TCPHIPH TCPHTCPHIPH以太帧头FTPH数 据FTPH数 据FTPH数 据TCP的报文传送目的地址 源地址帧头包类型包数 据CRC校验1/21/2023183.TCP数据报的格式 TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度
9、可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充发送在前1/21/202319信源端口和信宿端口字段各占 2 字节。端口标识了相连接的两端的端口号,在OSI术语中称为TSAP地址(传输层服务服务点)。TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充1/21/202320序列号字段占 2 字节。指出了当前段中数据在发送数据流中的位置。TCP首部2
10、0 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充1/21/202321确认号字段占 2 字节。指出本机希望接收的下一个数据字节的序号。TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充1/21/202322数据偏移字段占4个bit。指出该TCP报文中数据的起始位置(以4个字节为单位)。
11、TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充1/21/202323保留字段占6个bit。暂时未使用。TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充1/21/202324TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧
12、急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急比特 URG 当 URG 1 时,表明紧急指示符字段有效。它指从当前的数据号开始,向后数多少个字节才能找到紧急数据。1/21/202325TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认比特 ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。1/21/202326TCP首部20 字节
13、的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充推送比特 PSH(PuSH)接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。1/21/202327TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充复位比特 RST(ReSeT)当
14、RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立传输连接。1/21/202328TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充同步比特 SYN 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。连接请求设置SYN=1和ACK=0,表示不再使用捎带确认字段。如果连接应答确实捎带了确认,则置SYN=1和ACK=1。1/21/202329TCP首部20 字节的固定
15、首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充终止比特 FIN(FINal)用来释放一个连接。当FIN 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。1/21/202330TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口字段占 2 字节。描述在确认之后还可以传送的字节数,
16、用于解决流量控制问题。1/21/202331TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充检验和字段占 2 字节。简单将所有数据按16位长的字加起来,再取和的反码。1/21/202332TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急指示符占 2 字节。表示紧急数据
17、的位置,它通过PSH位的PUSH操作能够得到及时传送的数据。1/21/202333TCP首部20 字节的固定首部信宿端口数据偏移检 验 和选 项 (长 度 可 变)信源端口序列号紧急指示符窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项和填充字段 选项字段长度可变,用于各种情况,例如在建立连接过程中传送缓存区大小等。填充字段用于这两个字段的长度之和为4字节的整数倍,填充时可全部用0。1/21/202334TCP 的数据编号与确认 TCP 协议是面向字节的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。
18、在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。TCP 的确认是对接收到的数据的最高序号表示确认。接收端返回的确认号是已收到的数据的最高序号加 1。因此确认号表示接收端期望下次收到的数据中的第一个数据字节的序号。1/21/202335TCP 的流量控制与拥塞控制1.滑动窗口的概念TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方
19、的发送窗口上限值(可增大或减小)。1/21/202336收到确认即可前移1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送端要发送 900 字节长的数据,划分为 9 个 100 字节长的报文段,而发送窗口确定为 500 字节。发送端只要收到了对方的确认,发送窗口就可前移。发送 TCP 要维护一个指针。每发送一个报文段,指针就向前移动一个报文段的距离。1/21/202337发送端已发送了 400 字节的数据,但只收到对前 200 字节数据的确认,同时窗口大小不变。现在发送端还可发送 300 字节。收到确认即可前移
20、1002003004005006007008009001012013014015016017018011可发送不可发送指针1002003004005006007008009001012013014015016017018011发送窗口可发送不可发送指针发送窗口前移已发送并被确认已发送但未被确认1/21/202338发送端收到了对方对前 400 字节数据的确认,但对方通知发送端必须把窗口减小到 400 字节。现在发送端最多还可发送 400 字节的数据。1002003004005006007008009001012013014015016017018011已发送并被确认已发送但未被确认可发送不可发
21、送指针1002003004005006007008009001012013014015016017018011已发送并被确认可发送不可发送指针发送窗口前移发送窗口缩小1/21/202339利用可变窗口大小进行流量控制双方确定的窗口值是 400 SEQ=1SEQ=201SEQ=401SEQ=301SEQ=101SEQ=501ACK=201,WIN=300ACK=601,WIN=0ACK=501,WIN=200主机 A主机 B允许 A 再发送 300 字节(序号 201 至 500)A 还能发送 200 字节A 还能发送 200 字节(序号 301 至 500)A 还能发送 300 字节A 还能发
22、送 100 字节(序号 401 至 500)A 超时重发,但不能发送序号 500 以后的数据允许 A 再发送 200 字节(序号 501 至 700)A 还能发送 100 字节(序号 501 至 700)不允许 A 再发送(到序号 600 的数据都已收到)SEQ=201丢失!1/21/2023402.慢开始和拥塞避免发送端的主机在确定发送报文段的速率时,既要根据接收端的接收能力,又要从全局考虑不要使网络发生拥塞。因此,每一个 TCP 连接需要有以下两个状态变量:接收端窗口 rwnd(receiver window)又称为通知窗口(advertised window)。拥塞窗口 cwnd(con
23、gestion window)。1/21/202341接收端窗口 rwnd 和拥塞窗口 cwnd(1)接收端窗口 rwnd 这是接收端根据其目前的接收缓存大小所许诺的最新的窗口值,是来自接收端的流量控制。接收端将此窗口值放在 TCP 报文的首部中的窗口字段,传送给发送端。(2)拥塞窗口 cwnd(congestion window)是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。1/21/202342发送窗口的上限值发送端的发送窗口的上限值应当取为接收端窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定:发送窗口的上限值 Min rwnd
24、,cwnd 当 rwnd cwnd 时,是接收端的接收能力限制发送窗口的最大值。当 cwnd 3),则将 cwnd 设置为 ssthresh+n MSS。(4)若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。(5)若收到了确认新的报文段的 ACK,就将 cwnd 缩小到 ssthresh。1/21/202360TCP 的重传机制重传机制是 TCP 中最重要和最复杂的问题之一。TCP 每发送一个报文段,就对这个报文段设置一次计时器。只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。1/21/202361往返时延的方差很大由于 TCP 的下层是一个互连网环境,IP 数据
25、报所选择的路由变化很大。因而运输层的往返时延的方差也很大。时间数据链路层运输层T1T2T3往返时延的概率分布1/21/202362 往返时延的自适应算法 记录每一个报文段发出的时间,以及收到相应的确认报文段的时间。这两个时间之差就是报文段的往返时延。将各个报文段的往返时延样本加权平均,就得出报文段的平均往返时延 RTT。每测量到一个新的往返时延样本,就按下式重新计算一次平均往返时延 RTT:平均往返时延RTT (旧的RTT)(1 )(新的往返时延样本)在上式中,0 1。1/21/202363参数 的选择若 很接近于 1,表示新算出的平均往返时延 RTT 和原来的值相比变化不大,而新的往返时延样
26、本的影响不大(RTT 值更新较慢)。若选择 接近于零,则表示加权计算的平均往返时延 RTT 受新的往返时延样本的影响较大(RTT 值更新较快)。典型的 值为 7/8。1/21/202364超时重传时间 RTO(RetransmissionTime-Out)计时器的 RTO 应略大于上面得出的 RTT,即:RTO RTT 这里 是个大于 1 的系数。若取 很接近于1,发送端可及时地重传丢失的报文段,因此效率得到提高。但若报文段并未丢失而仅仅是增加了一点时延,那么过早地重传反而会加重网络的负担。因此 TCP 原先的标准推荐将 值取为 2。1/21/202365往返时延 RTT?往返时间的测量相当复
27、杂 TCP 报文段 1 没有收到确认。重传(即报文段 2)后,收到了确认报文段 ACK。如何判定此确认报文段是对原来的报文段 1 的确认,还是对重传的报文段 2 的确认?发送一个TCP 报文段超时重传TCP 报文段收到 ACK时间12往返时延 RTT?是对哪一个报文段的确认?1/21/202366Karn 算法 在计算平均往返时延 RTT 时,只要报文段重传了,就不采用其往返时延样本。这样得出的平均往返时延 RTT 和重传时间就较准确。1/21/202367修正的 Karn 算法 报文段每重传一次,就将重传时间增大一些:新的重传时间 (旧的重传时间)系数 的典型值是2。当不再发生报文段的重传时
28、,才根据报文段的往返时延更新平均往返时延 RTT 和重传时间的数值。实践证明,这种策略较为合理。1/21/202368随机早期丢弃 RED(Random Early Discard)使路由器的队列维持两个参数,即队列长度最小门限 THmin 和最大门限 THmax。RED 对每一个到达的数据报都先计算平均队列长度 LAV。若平均队列长度小于最小门限 THmin,则将新到达的数据报放入队列进行排队。若平均队列长度超过最大门限 THmax,则将新到达的数据报丢弃。若平均队列长度在最小门限 THmin 和最大门限THmax 之间,则按照某一概率 p 将新到达的数据报丢弃。1/21/202369RED
29、 将路由器的到达队列划分成为三个区域 从队首发送最小门限 THmin最大门限 THmin数据报到达平均队列长度 Lav排队丢弃以概率 p 丢弃1/21/202370丢弃概率 p 与 THmin 和 Thmax 的关系 最小门限 THmin最大门限 THmax平均队列长度 Lav数据报丢弃概率 p1.00pmax当 LAV Thmin 时,丢弃概率 p=0。当 LAV Thmax 时,丢弃概率 p=1。当 THmin LAV THmax时,0 p 1。例如,按线性规律变化,从 0 变到 pmax。1/21/202371瞬时队列长度和平均队列长度的区别 队列长度时间瞬时队列长度平均队列长度1/21
30、/202372TCP 的运输连接管理运输连接的三个阶段 运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。连接建立过程中要解决以下三个问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。1/21/202373客户服务器方式 TCP 的连接和建立都是采用客户服务器方式。主动发起连接建立的应用进程叫做客户(client)。被动等待连接建立的应用进程叫做服务器(server)。1/21/202374用三次握手建立 TCP 连接
31、 SYN,SEQ=x主机 BSYN,ACK,SEQ=y,ACK=x 1ACK,SEQ=x+1,ACK=y 1被动打开主动打开确认确认主机 A连接请求1/21/202375建立 TCP 连接A 的 TCP 向 B 发出连接请求报文段,其首部中的同步比特 SYN 应置为 1,并选择序号 x,表明传送数据时的第一个数据字节的序号是 x+1。B 的 TCP 收到连接请求报文段后,如同意,则发回确认。B 在确认报文段中应将 SYN 置为 1,其确认号应为 x 1,同时也为自己选择序号 y。A 收到此报文段后,向 B 给出确认,其确认号应为 y 1。A 的 TCP 通知上层应用进程,连接已经建立。当运行服
32、务器进程的主机 B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程,连接已经建立。1/21/202376TCP 连接释放的过程 FIN,SEQ=xACK,SEQ=y,ACK=x 1ACK,SEQ=x+1,ACK=y 1应用进程释放连接A 不再发送报文FIN,ACK,SEQ=y,ACK=x+1主机 B主机 A通知主机应用进程应用进程释放连接B 不再发送报文确认确认1/21/2023776.2.2 UDP协议 用户数据报协议UDP是一种简单的、面向数据报的传输层协议1.UDP协议的格式 UDP协议主要用于不要求数据发送确认或者只传送少量数据的应用程序中,它是一种无连接的协议。UDP提供了
33、区分协议端口的能力。协议端口:为了区分在同一个IP地址上的不同应用或不同数据传输过程而设定的进程标志,称为端口号。1/21/202378UDP数据报中的各字段的含义如下:1)源端口号:发送端进程的UDP端口号2)目的端口号:接收进程的UDP端口号3)长度:以字节为单位的整个报文的长度4)校验和:整个报文的校验和,为0时表示没有提供校验和源端口号源端口号目的端口号目的端口号32 位位数据数据 长度长度校验和校验和1/21/2023792.UDP的数据传送 发送端:UDP软件组织一个数据报并将其交给IP软件 接收端:UDP软件首先对所接受的数据包的信宿端口进行检验以考察是否与当前所使用的端口匹配。若匹配,则放入相应的队列中;若不匹配,则丢弃并向源端回送一个ICMP报文说明此报文的端口不可到达,另外还要考察队列的排队状况。1/21/202380