• 1. 第 5 章 运输层传输层所使用的主要端口号 传输服务和服务质量 UDP协议的报文格式 TCP协议的报文格式及连接传输管理 TCP的流量控制与拥塞控制
  • 2. 5.1 运输层协议概述 5.1.1基本概念 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
  • 3. 运输层为相互通信的应用进程提供了逻辑通信 5 4 3 2 1运输层提供应用进程间的逻辑通信主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 层LAN1AP1AP2AP4端口端口5 4 3 2 1IP 协议的作用范围运输层协议 TCP 和 UDP 的作用范围AP3
  • 4. 运输层协议和网络层协议的主要区别 应用进程…应用进程…IP 协议的作用范围 (提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围 (提供进程之间的逻辑通信)因 特 网
  • 5. 运输层的主要功能 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。 运输层还要对收到的报文进行差错检测。 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。
  • 6. TCP/IP 的运输层有两个不同的协议: (1) 用户数据报协议 UDP (User Datagram Protocol) (2) 传输控制协议 TCP (Transmission Control Protocol)运输层的两个主要协议
  • 7. 两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。 TCP 传送的数据单位协议是 TCP 报文段(segment) UDP 传送的数据单位协议是 UDP 报文或用户数据报。 TCP 与 UDP
  • 8. TCP/IP 体系中的运输层协议 TCPUDPIP应用层与各种网络接口运输层
  • 9. TCP 与 UDP UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。 TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
  • 10. 5.1.2 运输层的端口 为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。 解决这个问题的方法就是在运输层使用协议端口号(protocol port number),或通常简称为端口(port)。 虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成
  • 11. 软件端口与硬件端口在协议栈层间的抽象的协议端口是软件端口。 路由器或交换机上的端口是硬件端口。 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址。
  • 12. TCP 的端口 端口用一个 16 位端口号进行标志。 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。
  • 13. 三类端口 熟知端口,数值一般为 0~1023。 登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。 客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
  • 14. 5.2 传输服务和服务质量 5.2.1 传输服务 传输服务包括两种类型:面向连接的传输服务和无连接的传输服务。 面向连接的传输包括3个阶段:建立连接、数据传输和释放连接
  • 15. 传输层的服务质量(Qusality of Service,QoS)可以用来衡量传输层的总体性能 衡量服务质量QoS的主要性能指标有: (1)连接建立延迟 (2)连接建立失败的概率。 (3)吞吐率: (4)传输延迟: 5.2.2 服务质量
  • 16. (5)残余误码率。 (6)安全保护。 (7)优先级。 (8)恢复功能
  • 17. 5.3 用户数据报协议 UDP 5.3.1 UDP 概述 UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。
  • 18. UDP 的主要特点 UDP 是无连接的,即发送数据之前不需要建立连接。 UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。 UDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。 UDP 支持一对一、一对多、多对一和多对多的交互通信。 UDP 的首部开销小,只有 8 个字节。
  • 19. 面向报文的 UDP发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。 应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。 接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。 应用程序必须选择合适大小的报文。
  • 20. UDP 是面向报文的 IP 数据报的数据部分IP 首部IP 层UDP 首部UDP 用户数据报的数据部分运输层应用层报文应用层
  • 21. 5.3.2 UDP 的首部格式 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报
  • 22. UDP 基于端口的分用 IP 层UDP 数据报到达端口 2端口 3端口 1UDP 分用
  • 23. 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是两个字节。
  • 24. 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报字节44112122222字节发送在前数 据首 部UDP 用户数据报在计算检验和时,临时把“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
  • 25. 计算 UDP 检验和的例子 10011001 00010011 → 153.19 00001000 01101000 → 8.104 10101011 00000011 → 171.3 00001110 00001011 → 14.11 00000000 00010001 → 0 和 17 00000000 00001111 → 15 00000100 00111111 → 1087 00000000 00001101 → 13 00000000 00001111 → 15 00000000 00000000 → 0(检验和) 01010100 01000101 → 数据 01010011 01010100 → 数据 01001001 01001110 → 数据 01000111 00000000 → 数据和 0(填充) 10010110 11101101 → 求和得出的结果 01101001 00010010 → 检验和 153.19.8.104171.3.14.1112 字节 伪首部8 字节 UDP 首部7 字节 数据填充按二进制反码运算求和 将得出的结果求反码全 0 17 15 1087 13 15 全 0 数据 数据 数据 数据 数据 数据 数据 全 0
  • 26. 5.4 传输控制协议 TCP 5.4.1 TCP 的概述TCP 是面向连接的运输层协议。 每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。 TCP 提供可靠交付的服务。 TCP 提供全双工通信。 面向字节流。
  • 27. TCP 首部20 字节的 固定首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I N32 位S Y NR S TP S HA C KU R G位 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部发送在前5.4.2 TCP 报文格式
  • 28. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
  • 29. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 30. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 31. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。
  • 32. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充保留字段——占 6 位,保留为今后使用,但目前应置为 0。
  • 33. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充紧急 URG —— 当 URG  1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
  • 34. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充确认 ACK —— 只有当 ACK  1 时确认号字段才有效。当 ACK  0 时,确认号无效。
  • 35. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充推送 PSH (PuSH) —— 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 36. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充复位 RST (ReSeT) —— 当 RST  1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • 37. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充同步 SYN —— 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
  • 38. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充终止 FIN (FINis) —— 用来释放一个连接。FIN  1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 39. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充窗口字段 —— 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
  • 40. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
  • 41. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G位 0 8 16 24 31填 充紧急指针字段 —— 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
  • 42. TCP 首部20 字节 固定 首部目 的 端 口数据 偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留F I NS Y NR S TP S HA C KU R G比特 0 8 16 24 31填 充选项字段 —— 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” MSS (Maximum Segment Size) 是 TCP 报文段中的数据字段的最大长度。 数据字段加上 TCP 首部 才等于整个的 TCP 报文段。
  • 43. 5.4.3 TCP 的运输连接管理 运输连接的三个阶段 运输连接就有三个阶段,即:连接建立、数据传送和连接释放。 连接建立过程中要解决以下三个问题: 要使每一方能够确知对方的存在。 要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。 能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。 采用三次握手的目的是为了防止已失效的连接请求报文段突然又传送到了主机B所产生的错误
  • 44. 客户服务器方式 TCP 连接的建立都是采用客户服务器方式。 主动发起连接建立的应用进程叫做客户(client)。 被动等待连接建立的应用进程叫做服务器(server)。
  • 45. 用三次握手建立 TCP 连接 SYN = 1, seq = xCLOSEDCLOSED主动打开被动打开AB客户服务器A 的 TCP 向 B 发出连接请求报文段,其首部中的 同步位 SYN = 1,并选择序号 seq = x,表明传送 数据时的第一个数据字节的序号是 x。
  • 46. 用三次握手建立 TCP 连接 SYN = 1, seq = xCLOSEDCLOSED主动打开被动打开AB客户服务器SYN = 1, ACK = 1, seq = y, ack= x  1 B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。 B 在确认报文段中应使 SYN = 1,使 ACK = 1, 其确认号ack = x  1,自己选择的序号 seq = y。
  • 47. SYN = 1, seq = xACK = 1, seq = x + 1, ack = y  1CLOSEDCLOSED主动打开被动打开AB客户服务器SYN = 1, ACK = 1, seq = y, ack= x  1 A 收到此报文段后向 B 给出确认,其 ACK = 1, 确认号 ack = y  1。 A 的 TCP 通知上层应用进程,连接已经建立。
  • 48. SYN = 1, seq = xACK = 1, seq = x + 1, ack = y  1CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器SYN = 1, ACK = 1, seq = y, ack= x  1 B 的 TCP 收到主机 A 的确认后,也通知其上层 应用进程:TCP 连接已经建立。
  • 49. TCP将单向地关闭这个连接。其过程如下
  • 50. 5.4.4 TCP的流量控制与拥塞控制1.流量控制 指让发送方的发送速率能让接收方来得及接收。TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。 TCP采用滑动窗口机制解决两个重要问题:传输效率和流量控制。
  • 51. 5.4.4 TCP的流量控制与拥塞控制TCP的滑动窗口在 TCP 报文段首部的窗口字段写入的数值就是当前给对方设置的发送窗口数值的上限。 发送窗口的大小在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。
  • 52. (本页无文本内容)
  • 53. (本页无文本内容)
  • 54. 为了在传输层进行拥塞控制,1999年公布的因特网建设标准定义了以下四种算法:慢开始、拥塞避免、快重传和快恢复。
  • 55. 2.拥塞控制 TCP 连接需要有以下两个状态变量: 接收端窗口 rwnd (receiver window) 又称为通知窗口(advertised window)。 拥塞窗口 cwnd (congestion window)
  • 56. 2.拥塞控制 (1)设定慢启动的门限窗口,并初始化拥塞窗口为1。 (2)设定发送窗口 发送窗口=min[接收端窗口,拥塞窗口] (3)发送端收到了对所有发出报文段的确认,就在下一次发送时将拥塞窗口加倍。 (4)当拥塞窗口>=门限窗口时,拥塞窗口按线性增长,否则,执行拥塞避免算法。 (5)如果出现超时,那么将超时处的窗口值大小的一半作为新的慢启动门限窗口的值,同时拥塞窗口的大小变为1。 (6)接着再循环进行。