1 / 65

第五章

第五章. 运 输层. 黑白纵横三千里. 内. 容. 第一节 传输服务. 经天纬地一点通. 提供给上层的服务. 传输服务原语. Berkeley 套接字. 套接字编程实例: Internet 文件服务器. 第二节 用户数据报协议 UDP. UDP 协议概述; UDP 数据报、 UDP 校验. 实时传输协议. 第三节 传输控制协议 TCP. TCP 最主要特点. TCP 服务模型. TCP 协议. TCP 段首部. TCP 连接建立、连接释放、连接管理模型. TCP 滑动窗口. TCP 计时器管理. TCP 拥塞控制. 传. 输 服务.

kali
Download Presentation

第五章

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第五章 运输层

  2. 黑白纵横三千里 内 容 第一节 传输服务 经天纬地一点通 提供给上层的服务 传输服务原语 Berkeley套接字 套接字编程实例:Internet文件服务器 第二节用户数据报协议UDP UDP协议概述;UDP数据报、UDP校验 实时传输协议 • 第三节传输控制协议TCP TCP最主要特点 TCP服务模型 TCP协议 TCP段首部 TCP连接建立、连接释放、连接管理模型 TCP滑动窗口 TCP计时器管理 TCP拥塞控制

  3. 输服务 5.1.1 提供给上层的服务 提供给上层的服务 • 传输层的最终目标是向其用户——一般是指应用层的进程,提供有效、可靠且价格合理的服务。 • 为了达到这一目标,传输层利用了网络层所提供的服务。 • 传输实体:传输层中完成上述工作的实体。 • 传输实体可能在操作系统内核中,或在一个单独的用户进程内,也可能包含在网络应用的程序库中,或是位于网络接口卡上。

  4. 网络层、传输层、应用层的逻辑关系

  5. 在网络层,有两种网络服务:面向连接、无连接在网络层,有两种网络服务:面向连接、无连接 在传输层,也有两种服务:面向连接的传输服务,无连接的传输服务 两层的面向连接服务在很多方面类似: 都包括三个阶段:建立连接、数据传输、释放连接 寻址和流量控制方式也类似。 两层的无连接服务也类似。 • 为什么要区分这两层? • 由于用户无法对子网加以控制,因此他们便不能通过换用更好的路由器或增强数据链路层的纠错能力来解决网络层服务质量低劣问题。 • 有了传输层,用于各种网络的应用程序便能采用一个标准的原语集来编写,而不必担心不同的子网接口和不可靠的数据传输。传输层起着将子网的技术、设计和各种缺陷与上层相隔离的关键作用。

  6. 输服务 5.1.2 传输服务原语 传输服务原语 • 传输服务原语允许传输用户(如应用程序)访问传输服务。 • 每种传输服务均有各自的访问原语。 • 虽然传输服务与网络服务类似,但也存在一些显著差别: • 网络服务倾向于将实际网络提供的服务模型化。由于网络可能会丢失数据分组,所以网络服务一般不太可靠。相反,面向连接的传输服务则是可靠的。虽然实际的网络传输可能存在差错,但在不可靠的网络之上提供可靠的服务正是传输层要实现的目标。 • 另一方面,传输层提供的服务也可能不可靠,但这种情况发生的概率很小。

  7. 网络层与传输层的另一区别:服务对象不同 网络服务只用于传输实体,用户或程序很少能看到网络服务,但可以看到传输原语。

  8. 一个实例:一台服务器与多台远程客户的应用例子。一个实例:一台服务器与多台远程客户的应用例子。 首先,服务器执行一条侦听(LESTEN)原语,一般地是通过调用一个库例程,从而引发一系统调用以阻塞服务器直至一客户服务请求出现。 当一客户试图与服务器对话时,它便执行一条连接(CONNECT)原语。传输实体在执行这条原语时要阻塞该客户并向服务器发送一个数据分组。 客户的连接请求TPDU被传送到服务器。当该TPDU到达后,传输实体检查服务器是否阻塞于侦听状态,若是,则唤醒服务器并向发出连接请求的客户回送一个接受连接TPDU;当该TPDU到达后,客户被唤醒,连接即告建立。 连接建立后,就可用SEND,RECEIVE原语交换数据。

  9. 连接的释放:非对称,对称 • 非对称释放:任何一方均可执行DISCONNECT原语,向对方传输实体发送释放连接的TPDU,一旦该TPDU到达,连接即被释放。 • 对称释放:连接的每一方单独关闭,相互独立。当一方执行了DISCONNECT后,意味着它不再发送数据,但仍能接收数据。只有当连接的双方均执行了DISCONNECT原语时,才能释放连接。

  10. 输服务 5.1.3 Berkeley套接字 Berkeley套接字

  11. 输服务 5.1.4 套接字编程实例:Internet文件服务器 套接字编程实例 套接字应用过程实例

  12. 客户端 服务器端 取主机IP地址 将协议名转换成内部的二进制表示 将协议名转换成内部的二进制表示 创建一个套接字 创建一个套接字 将该套接字与本地协议端口相连 将该套接字与服务器相连 置等待消息方式 接收 接收下一连接请求 发送 关闭 关闭 第一节 传输服务 第二节 用户数据报协议udp 第三节 传输控制协议tcp

  13. 户数据报协议UDP 5.2.1 UDP协议概述;UDP数据报、UDP校验 UDP协议概述 • UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。 • 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。 • 发送数据之前不需要建立连接 • UDP 的主机不需要维持复杂的连接状态表。 • UDP 用户数据报只有8个字节的首部开销。 • 网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。

  14. 端口是用报文队列来实现的 TFTP 客户 TFTP 服务器 应 用 层   入队列 入队列 出队列 出队列 运 输 层 UDP 端口 51000 UDP 端口 69 UDP 用户数据报

  15. 户数据报协议UDP 5.2.2 实时传输协议 实时传输协议 • 实时传输协议RTP在协议栈中的位置

  16. RTP会话(RTP Session)指一组参与者(participants)使用RTP/RTCP协议进行通信。 音频会议: 每个参与者都会得到IP多播组地址和一对标识RTP会话连接的UDP端口号,一个用于RTP, 一个用于RTCP。参与者都可以发送音频RTP分组流,它们属于同一个RTP会话, 信息源用RTP分组首部中的同步源标识符 SSRC来标识。同一SSRC的所有分组都使用同样的定时和序号空间,这样便于接收端重组和同步接收到的分组序列。

  17. RTP分组格式时间戳: 能够表征实时数据时间属性。接收端使用时间戳可以知道应当在什么时间还原哪一个数据块,从而消除时延抖动。时间戳还可以用于声音和图像的同步。 第一节 传输服务 第二节 用户数据报协议udp 第三节 传输控制协议tcp

  18. • 输控制协议TCP 5.3.1 TCP最主要特点 TCP最主要特点 • 面向连接 • 仅支持一对一(点对点)通信,每连接用两个端点标识。 • 可靠交付 • 全双工通信 • 面向字节流

  19. 21 0 20 1 10 9 19 2 3 13 12 11 H 8 H 5 4 7 6 TCP面向流的概念 发送方 接收方   表示 TCP 报文段的首部 H 应用进程 应用进程 表示序号为 x 的数据字节 x 字节流 字节流 从接收缓存 读取字节 把字节写入 发送缓存 TCP TCP 加上 TCP 首部 构成 TCP 报文段 18 17 16 15 14 发送 TCP 报文段 H TCP 连接

  20. 面向数据流的传输 无结构字节流:没有边界,内容任意 虚电路连接 尽管IP网络是无连接的,但在TCP的端点上,却可看作是面向连接的通信 —— 端到端连接 可靠投递服务特点 IP网络 TCP TCP

  21. 有缓冲的传送 —— 提高传输效率 应用进程:使用自己认为适宜的任何大小的数据片(最小1字节) TCP协议软件:根据网络情况选择适当的收发缓冲区(合并/分割) Push:强制滞留数据的发送 全双工服务 捎带 Piggybacking Data Acknowledgment

  22. 采用面向连接的通信方式 滑动窗口协议,以提高通信性能 捎带确认方式 未使用显示确认,减少报文种类 TCP只有一种报文格式,可完成: 建立、拆除连接 数据传输。单报文净荷大小直接受制于MSS,间接受制于MTU,发送的未确认的数据总量受制于对方缓存和网络拥塞情况。 确认、流控、窗口滑动 TCP可靠性保证

  23. 端口、端点概念与方式与UDP完全一样 连接:TCP上通信双方抽象的虚电路连接 TCP端口、端点、连接 80 16250 Port: 80 202.115.12.6 202.115.12.34 Endpoint: (202.115.12.6, 80) Connection: (202.115.12.6, 80) and (202.115.12.34, 16250)

  24. • 输控制协议TCP 5.3.2 TCP服务模型 TCP服务模型 端口port TCP的TSAP,与某一个应用程序相关 通用端口(well-known port) 其他可由各主机自己定义 套接字socket 传输层的通信端点,它由IP地址 + 端口号组成

  25. 一个套接字允许被多个连接同时使用,即多个连接可同时连接到同一个套接字上一个套接字允许被多个连接同时使用,即多个连接可同时连接到同一个套接字上 套接字举例 A 202.120.26.35 user1port500连接1 user2port501 C 166.1.11.15connection1: (202.120.26.35,500)-(166.1.11.15,25) connection2: (202.120.26.35,501)-(166.1.11.15,25) connection3: port 25 连接2 B 202.120.26.37 user3port500 (202.120.26.37,500)-(166.1.11.15,25) 连接3

  26. • 输控制协议TCP 5.3.3 TCP协议 TCP协议 TCP协议概述 • 为应用进程提供可靠的、端到端的、面向连接的字节流通信的协议,由RFC793正式定义。 • 特点: (1) 提供面向连接的服务,但不提供广播或多播服务。 (2) 提供可靠的服务,使用确认机制来检查数据是否安全、完整地到达。 (3) 面向字节流。 (4) 提供全双工通信。

  27. 流交付服务 • 在UDP中,应用程序把预先定义好边界的报文发送给UDP进行交付,UDP对这些报文的每一个添加自己的首部,传递给IP协议传输; • 在TCP中,则允许进程以字节流的形式传递数据。依靠缓存来实现。

  28. • 输控制协议TCP 5.3.4 TCP段首部 端口:每个端口对应一个应用程序 序号:发送的字节序号 确认号:接收到的字节序号 段头长度:段头中包含多少个32位字 TCP段首部 TCP数据段头及说明 0 4 8 16 31 源端口 目的端口 序号 确认号 码位 段头长度 保留 校验和 窗口大小 紧急指针 可选项(0或更多的32位字) 数据开始 TCP头

  29. 保留:以备扩展之用 码位: URG ACK PSH RST SYN FIN URG:紧急指针有效 ACK:确认号有效 PSH: 请求接收方,数据一到,立即送往应用程序 RST: 复位由于主机崩溃或其他原因而出现的错误的连接 SYN: 用于建立连接 FIN: 用于断开连接 窗口:接收方窗口大小

  30. 校验和:包括报头、数据和伪段头 0 4 8 16 31 源IP地址 目的IP地址 协议=6 TCP数据段长度 00000000 TCP校验和中的伪头 紧急指针:当前序号到紧急位置的偏移量 选项字段:用于提供一种增加额外设置的方法,如连接建立时,双方说明最大的负载能力 数据:真正要传输的数据

  31. 最大数据段长度MSS 目的站可接收的最大的数据段长度,这个 值在0到65535之间,默认值是536字节 窗口扩大因子n 新窗口的大小= 选项字段 窗口扩大因子 首部中定义的窗口大小*2

  32. • 输控制协议TCP 5.3.5 TCP连接建立、连接释放、连接管理模型 TCP连接建立 通信子网的不可靠性通信子网中存在着延时和分组的丢失,以及由于延时和丢失而带来的重复分组由于通信子网的尽力而为的传输原则,一个早已超时的分组最终还是到达了目的端,所以有必要将分组的生命周期限制在一个适当的范围内连接建立时,如何处理过期分组,保证连接的唯一性是连接建立过程中首要考虑的问题常用的方法是: 三次握手法

  33. 正常的连接建立过程 正常连接的三次握手过程 主机1发出连接请求序号为 x(seq=x),主机2应答接受主机 1的连接请求,并声明自己的序 列号为y(seq=y,ACK=x),主机 1收到确认后发送第一个数据 TPDU并确认主机2的序列号 主机1 主机2 CR(s eq=x) y,A ) CK=x (seq= ACC (seq=x,ACK=y),至此,整个 连接建立过程正常结束,数据 传输已正式开始 CR:Connection Request(连接请求) ACC:Connection Accepted(接受连接) t DATA x,AC (a)正常操作 (seq= K=y) 采用三次握手方法建立的正常情况

  34. 出现延迟的重复TPDU时三次握手的工作过程 非正常的连接建立过程 主机1 主机2 来自一个已经释放连接的主机1的 延迟重复的连接请求,该TPDU在 主机1毫不知晓的情况下到达主机 2,主机2通过向主机1发送一个接 受连接请求的TPDU来响应该 TPDU,并声明自己的序号为 y(seq=y,ACK=x),主机1收到这个 确认后感到莫名其妙并当即拒绝, 主机2收到了主机1 的拒绝才意识到 自己受到了延时的重复TPDU的欺 旧的重复 eq=x) y,A ACC CT(A ) CR(s ) CK=x (seq= t REJE CK=y 骗并放弃该连接,据此,延时的重 复请求将不会产生不良后果 (b)重复的CR突然出现 采用三次握手建立的第二种情况

  35. 非对称释放 一方中止连接,则连接即告中断 缺陷:可能导致数据丢失 对称释放 A提出中止请求,B同意即中止 问题:B如何知道A 收到了它的确认? 释放连接

  36. 一方中止连接,则连接即告中断 非对称释放 当连接建立后,主机1发 送了一个数据TPDU并正 主机1 主机2 确抵达主机2,接着,主 机1发送了第二个数据 TPDU,然而,主机2在 收到第二个TPDU之前先 突然发出了 DISCONNECT(释放连 接请求),结果是连接立 即被释放,数据被丢失 CR ACC DATA DATA DR 在一个断开请求 后没有提交数据 突然释放连接将造成数据丢失

  37. A提出中止请求,B同意即中止 • 对称释放方式适用于每个用户进程有固定数量的数据需要发送,而且清楚地知道何时发送完毕的情况 • 其他情况下,决定所有工作是否已经完成,连接是否应该释放,可能是没有把握的 • 可以假想一种协议:A说:“ 我发送完了,你呢?”如果B响应:“ 我也发送完了,再见,”A收到了B的确认,连接便可以被安全释放 对称释放

  38. 三次握手的正常情况 最后的确认TPDU丢失 应答丢失 应答丢失以及后续的DR丢失 对称释放的几种情况

  39. 三次握手的正常情况 对称释放1 主机1在结束数据传输后决定 释放连接,于是发送DR并启动 计时器,主机2在收到主机1 的 主机2 主机1 发送DR并 启动计时器 DR DR后同意释放连接,也发送 DR并启动计时器,主机1 在计 时器没有超时前收到主机2 的 DR,便正式释放连接并发送 发送DR并 启动计时器 DR 释放连接 发送ACK ACK,主机2也在计时器没有 超时前收到主机1 的ACK,于 是也释放了连接,至此整个数 ACK 释放连接 据传输过程,包括建立连接、 传输数据和释放连接的过程正 常结束 三次握手的连接正常释放情况

  40. 最后的确认TPDU丢失 对称释放2 主机1 发送DR并 启动计时器 释放连接 发送ACK 主机2 发送DR并 启动计时器 ┇ ┇ ┇ ┇ (超时) 释放连接 主机1在结束数据传输后决定 释放连接,于是发送DR并启 动计时器,主机2在收到主机 1 的DR后同意释放连接,也 发送DR并启动计时器,主机 1 在计时器没有超时前收到主 机2 的DR,便正式释放连接 并发送ACK,然而主机2在计 时器超时后还未收到主机1 的 DR DR ACK 丢失 ACK,但是由于已经超时, 于是也释放了连接 最后的确认TPDU丢失的情况

  41. 对称释放3 应答丢失 主机1在结束数据传输后决定 释放连接,于是发送DR并启 主机1 主机2 动计时器,主机2在收到主机 1 的DR后同意释放连接,也 发送DR并启动计时器,然 而,主机1 在计时器超时后 还未收到主机2 的DR,于是 又重新发送DR并启动计时 器,下面便是一个正常的三 发送DR并 启动计时器 (超时) 发送DR并 启动计时器 释放连接 发送ACK DR 丢失 DR DR ACK 发送DR并 启动计时器 发送DR并 启动计时器 释放连接 次握手,并最后正常释放连 接,即整个数据传输过程正 常结束 应答丢失的情况

  42. 应答丢失以及后续的DR丢失 对称释放4 主机1 主机2 主机1在结束数据传输后决定释放 连接,于是发送DR并启动计时 器,主机2在收到主机1 的DR后 发送DR并 启动计时器 ┇ DR 发送DR并 启动计时器 同意释放连接,也发送DR并启动 计时器,然而,紧接着的一段时 间内,线路遇到了灾难性的干 扰,无论是哪一方的超时重发的 TPDU都不能到达对方,最终,接 收方计时器的超时而也释放连 ┇ ┇ (超时) 发送DR并 启动计时器 ┇ ┇ ┇ (N个超时) 释放连接 丢失 ┇ ┇ ┇ ┇ (超时) 释放连接 丢失 接,发送方经过n次重发和超时后 只能无奈地放弃努力并释放连接 应答丢失以及后续的DR丢失

  43. 在TcP连接管理有限状态机个用到的状态 每个连接都从CLOSED状态开始。当它执行了一个被动的打开操作(LISTEN),或者一个主动的打开操作(CONNECT)的时候,它就离开CLOSED状态。如果另一端执行了相应的操作,则连接被建立起来,当前状态变成ESTABLISHED。连接的释放过程就可以由任何一方发起。当释放完成的时候,状态又回到CLOSED。

  44. TcP连接管理有限状态机

  45. • 输控制协议TCP 5.3.6 TCP滑动窗口 TCP滑动窗口 • 窗口 • 发送方在收到确认前,其发送缓冲区中可以发送的数据流长度 • 单位:报文或字节 • 滑动 • 随着确认的不断到达,窗口也不断的向后移动 sender 0 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 10 11 12 13 14 15 16 Window = 5 ACK1 ACK4 receiver

  46. 发送窗口 发送缓冲区中可以发送的数据流长度 应用数据可一次1或多字节送交至TCP发送缓冲区 发送窗口随确认过程滑动 已发未确认 —— 等待确认或重发 可以发送 —— 当前仍未发出,其数据将切割成适当的报文段后发送 TCP滑动窗口机制——发送窗口 Sliding window 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 已发送 并确认 可以 发送 已发送 未确认 不能 发送 指针

  47. 接收缓冲区 对接收的报文段进行字节流排序 上层可以一次1字节或多字节提取字节流 下层(IP层)一个、一个报文段提交给TCP TCP的接收缓冲区 接收缓冲区 已提交 已排序 未提交 零散段 部分排序,中间有空缺 可用缓冲区

  48. 发送窗口大小动态可变 接收方通告当前可用接收缓冲区大小 发送方用该通告值调整发送窗口大小 优点:更加有效的传输,同时还可控制数据流量 极端情况:接收方通告的可用缓冲区=0 发送方停止发送 重新开始发送的条件 收到窗口值不为0的通告 试探性发送 —— 预防通告丢失造成的死锁 带外数据 TCP的动态可变窗口

  49. 发送端重传等待确认的数据 依据当前发送窗口,重新切割和重传报文段 传输往返时延可变,需动态改变超时时限 动态可变窗口对重传的影响:重传报文与原报文不一致 窗口值缩小,报文长度会减小,反之,会增大 接收复原 离散复原(流序号起重要作用) TCP滑窗讨论:超时重传

  50. 发送缓存、发送窗口、接收缓存 发送方不一定要发送整个窗口大小的数据 窗口大小由接收方调整,实现流量控制 大窗口增加流量 小窗口减少流量 零窗口暂停发送 接收方可在任何时候发送确认 可能的问题 窗口机制不会立即起作用(网络缓冲) 无法确切知道和防止网络中间的拥塞 TCP滑窗讨论:流量控制

More Related