1.2k likes | 1.36k Views
计算机网络. 第 6 章 运输层 郭庆北 Ise_guoqb@ujn.edu.cn 2009-02-25. 第 6 章 运输层. *6.1 运输层协议概述 * 6.2 TCP/IP 体系中的运输层 6.2.1 运输层的功能 6.2.2 运输层中的两个协议 * 6.3 用户数据报协议 UDP 6.3.1 UDP 概述 6.3.2 UDP 用户数据报的首部格式. 第 6 章 运输层(续). 6.4 传输控制协议 TCP *6.4.1 TCP 概述
E N D
计算机网络 第 6 章 运输层 郭庆北 Ise_guoqb@ujn.edu.cn 2009-02-25
第 6 章 运输层 *6.1 运输层协议概述 *6.2 TCP/IP 体系中的运输层 6.2.1 运输层的功能 6.2.2 运输层中的两个协议 *6.3 用户数据报协议 UDP 6.3.1 UDP 概述 6.3.2 UDP 用户数据报的首部格式
第 6 章 运输层(续) 6.4 传输控制协议 TCP *6.4.1 TCP 概述 *6.4.2 TCP 报文段的首部 *6.4.3 TCP 的数据编号与确认 *6.4.4 TCP 的流量控制与拥塞控制 *6.4.5 TCP 的重传机制 6.4.6 采用随机早期丢弃 RED 进行拥塞控制 *6.4.6 TCP 的运输连接管理 6.4.8 TCP 的有限状态机 6.4.9 TCP 的有限状态机
6.1 运输层协议概述 • 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 面向信息处理 应用层 用户功能 运输层 网络层 面向通信 网络功能 数据链路层 物理层
运输层为相互通信的应用进程提供了逻辑通信 应用进程 应用进程 AP4 AP1 AP2 5 4 3 2 1 AP3 5 4 3 2 1 端口 端口 运输层提供应用进程间的逻辑通信 IP 层 主机 A 主机 B 路由器 1 路由器 2 AP1 AP3 LAN1 LAN2 WAN AP2 AP4 IP 协议的作用范围 运输层协议 TCP 和 UDP 的作用范围
应用进程之间的通信 • 两个主机进行通信实际上就是两个主机中的应用进程互相通信。 • 应用进程之间的通信又称为端到端的通信。 • 应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。 • “运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。
运输层协议和网络层协议的主要区别 应用进程 应用进程 … … 因 特 网 IP 协议的作用范围 (提供主机之间的逻辑通信) TCP 和 UDP 协议的作用范围 (提供进程之间的逻辑通信)
6.2 TCP/IP 体系中的运输层6.2.1运输层的主要功能 • 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。 • 运输层还要对收到的报文进行差错检测。 • 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。
运输层与其上下层之间的关系的 OSI 表示法 主机 A 主机 B 运输服务用户 (应用层实体) 运输服务用户 (应用层实体) 应用层 运输层服务访问点 TSAP 层接口 运输协议 运输层 运输实体 运输实体 层接口 网络层 (或网际层) 网络层服务访问点 NSAP
运输层向上提供可靠的和不可靠的逻辑通信信道 发 送 进 程 接 收 进 程 发 送 进 程 接 收 进 程 ? 应 用 层 数据 数据 数据 数据 运 输 层 全双工可靠信道 不可靠信道 使用 TCP 协议 使用 UDP 协议
运输层的主要功能 • Addressing • Connection Establishment • Connection Release • Flow Control and Buffering • Multiplexing • Crash Recovery
Addressing端口的概念 • 端口就是运输层服务访问点 TSAP。 • 端口的作用就是让应用层的各种应用进程都能将其数据通过端口向下交付给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。 • 从这个意义上讲,端口是用来标志应用层的进程。
IP 数据报 IP 数据报 端口在进程之间的通信中所起的作用 接收方 发送方 应用进程 应用进程 应 用 层 端口 端口 运 输 层 TCP 复用 UDP 复用 UDP 分用 TCP 分用 UDP 用户数据报 UDP 用户数据报 TCP 报文段 TCP 报文段 网 络 层 IP 分用
端口 • 端口用一个 16 bit 端口号进行标志。 • 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。
两类端口 • 一类是熟知端口,其数值一般为 0~102 3。当一种新的应用程序出现时,必须为它指派一个熟知端口。 • 另一类则是一般端口,用来随时分配给请求通信的客户进程。
IP 地址 端口号 1500 131.6.23.13 插口(socket) 131.6.23.13, 1500 socket • TCP 使用“连接”(而不仅仅是“端口”)作为最基本的抽象,同时将 TCP 连接的端点称为插口(socket),或套接字、套接口。 • 插口和端口、IP 地址的关系是:
同一个名词 socket有多种不同的意思 • 应用编程接口API称为 socket API, 简称为 socket。 • socket API 中使用的一个函数名也叫作socket。 • 调用 socket 函数的端点称为 socket。 • 调用 socket函数时其返回值称为 socket描述符,可简称为 socket。 • 在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。
Addressing(续) 如何来指明? 你能否举个例子? http://www.ujn.edu.cn:80 • 当一个应用程序希望与一个远端应用程序建立连接时,它必须指定是与哪个应用程序相连。 (端口寻址问题) • 接收端一般采用的方法:定义进程侦听连接请求的传输地址。 • TSAP、NSAP和它们之间的连接如图所示。
Addressing(续) TSAPs, NSAPs and transport connections.
Addressing(续) • 要想和对方交流,首先发送方要知道对方的IP地址和端口号。 • 发送方主机如何知道接收方应用进程的端口号? • 解决办法: • 1. 不变的端口可能适用于少数从不改变的关键服务,该端口号为广大网络用户了解。如Web服务端口。
Addressing(续) • 2. 初始连接协议 (1)进程服务器,统一侦听所有进程端口。 (2)名录服务器,记录端口与服务的映射,首先访问名录服务器获得服务的端口,然后再根据获得的端口进行访问。 • 3. 对于自己写的客户/服务器程序,已知端口号,客户端指定即可。
Addressing(续) How a user process in host 1 establishes a connection with a time-of-day server in host 2.
Connection Establishment 可能的影响是什么? 如何处理重复分组? • 建立连接时可能出现的问题 问题产生的主要原因是由于子网中存在着延迟的重复分组可能影响连接的建立。 • 如何识别重复分组,解决方法: 1. 废弃使用过的传输地址。 2. 为每一个连接分配一个连接标识符,当每个连接被释放后,各传输实体可以更新一张表,表中列出所有过时的连接。
Connection Establishment • 如何删除过时分组,解决方法: • 分组生命期的限制: 1. 受限制的子网设计:路由器记录转发过的分组序号,防止分组循环; 2. 在每个分组内设置一个站段计数器:每次转发站段计数器加1,丢弃超值分组; 3. 对每个分组加上生命时间,要求同步。 • T的概念:实际最长的生命期的小数倍数
Connection Establishment • 如何来处理滑动窗口的初始序号? • Tomlinson引入三次握手(three-way hand shake) • 三次握手过程也是初始序号的过程。
Connection Establishment Three protocol scenarios for establishing a connection using a three-way handshake. CR denotes CONNECTION REQUEST. (a) Normal operation, (b) Old CONNECTION REQUEST appearing out of nowhere. (c) Duplicate CONNECTION REQUEST and duplicate ACK.
Connection Release • 终止连接的两种方式:非对称释放和对称释放 • 非对称释放:是电话系统动作方式;当一方挂机后,连接即告中断。对称释放将连接按照两个独立的单向连接来处理,要求每一方分别释放连接。 • 非对称释放很突然,因而可能会导致丢失数据
Connection Release • 连接释放时防止数据丢失的策略: • 采用对称释放方式,每个方向独立释放本方的连接。对称释放方式适用于每个用户进程有固定数量的数据需要发送,而且清楚地知道何时发送完毕的情况。
Connection Release Abrupt disconnection with loss of data.
Connection Release The two-army problem. 问:对称式释放是否可保证两端都释放? 问:蓝军是否会发起攻击?
Connection Release Four protocol scenarios for releasing a connection. (a) Normal case of a three-way handshake. (b) final ACK lost. 6-14, a, b
Connection Release (c) Response lost. (d) Response lost and subsequent DRs lost. 6-14, c,d
流量控制和缓冲控制 • 传输层中的流量控制问题在某些方面与数据链路层中的相同,但在另外一些方面,则是有区别的。 • 基本相似之处:两层中均需要采用滑动窗口或其他机制,以防止快的发送方发送数据的速度超过了慢速接收方的接收限度。 • 主要区别:路由器通常只有相对较少的连接线路,而主机则可以有很多个连接。
流量控制和缓冲控制(续) • 1. 缓冲区的分配: • 对于发送方如果网络服务不是可靠的,那么发送方就必须像在数据链路层一样缓存所有发送的TPDU;然而,在可靠的网络服务下,可采取其他的折衷方案。对于接受方可采用动态缓冲管理。 • 源端缓冲方案和目的端缓冲方案的最佳折衷,对于低速的突发性信息,最好在发送端进行数据缓冲;对于高速的信息传输,最好在接收端进行数据缓存。
流量控制和缓冲控制(续) • 2. 缓冲区大小的问题: • (1) 固定大小的缓冲区; • (2) 可变大小的缓冲区; • (3) 为每个连接预备一个很大的循环缓冲区。
流量控制和缓冲控制(续) • Chained fixed-size buffers. • Chained variable-sized buffers. • One large circular buffer per connection.
流量控制和缓冲控制(续) • 动态缓冲区管理: • 它实际上是一个可变大小的窗口。最初,发送方根据自己预计的需要申请一定数量的缓冲区。然后接收方尽自己的可能满足发送方的要求。发送方每发送一个TPDU ,必须减少其分配数,当分配数为0时,便停止发送数据。而接收方则是从相反方向的数据传送中分别将确认和新的缓冲区分配数捎带回去。 • 为了解决死锁问题,每台主机定期向每个连接发送控制TPDU,报告确认和缓冲区的状态。
流量控制和缓冲控制(续) Dynamic buffer allocation. The arrows show the direction of transmission. An ellipsis (…) indicates a lost TPDU.
Multiplexing • 在传输层中对多路复用技术的需要表现在很多方面。 • 考虑价格因素:长时间保持虚电路的接通但不充分利用是十分不利的,于是使不同的传输连接复用到同一网络连接上便很有吸引力。(向上多路复用) • 采取的做法:由传输层根据传输连接的目的地将它们分为不同的组,并将每个分组映射到最小数目的网络连接上。
Multiplexing(Next) • 考虑到传输技术因素:当用户需要高带宽的连接时,可让传输层接通多个网络连接,以循环轮转的策略在这些连接上分配传输信息。(向下多路复用)
Multiplexing(Next) (a) Upward multiplexing. (b) Downward multiplexing.
Crash Recovery • 主机和路由器易遭受崩溃,那么就存在着从崩溃恢复的问题。 • 网络和路由器的崩溃(传输实体完全在主机内部) • (1)网络层提供数据报服务的崩溃恢复,通过TPDU副本恢复。 • (2)网络层提供面向连接服务的崩溃恢复,建立新的虚电路,恢复未收到的数据。 • 主机的崩溃
Crash Recovery(Next) Different combinations of client and server strategy.
6.2.2 运输层中的两个协议 TCP/IP的运输层有两个不同的协议: (1) 用户数据报协议 UDP (User Datagram Protocol) (2) 传输控制协议 TCP (Transmission Control Protocol)
TCP 与 UDP • 两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU (Transport Protocol Data Unit)。 • TCP 传送的数据单位协议是 TCP 报文段(segment) • UDP 传送的数据单位协议是 UDP 报文或用户数据报。
TCP/IP 体系中的运输层协议 应用层 运输层 UDP TCP IP 与各种网络接口
TCP 与 UDP • UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。 • TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。
还要强调两点 • 运输层的UDP用户数据报与网际层的IP数据报有很大区别。IP数据报要经过互连网中许多路由器的存储转发,但UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的。 • TCP报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。
6.3 用户数据报协议 UDP 6.3.1 UDP 概述 • UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。 • 虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。 • 发送数据之前不需要建立连接 • UDP 的主机不需要维持复杂的连接状态表。 • UDP 用户数据报只有8个字节的首部开销。 • 网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。
端口是用报文队列来实现 TFTP 客户 TFTP 服务器 应 用 层 入队列 入队列 出队列 出队列 运 输 层 UDP 端口 51000 UDP 端口 69 UDP 用户数据报