870 likes | 1.09k Vues
计算机网络 C omputer N etwork. 2014年10月23日. 课程目录. 第 1 章 概述 第 2 章 物理层与数据通信基础 第 3 章 数据链路层 第 4 章 局域网 第 5 章 网络层 第 6 章 网络互联技术 第 7 章 传输层 第 8 章 应用层 第 9 章 网络管理与信息安全 第 10 章 网络新技术专题. 第 7 章 传输层. 7.1 传输层概述 7.2 互联网传输协议. 7.1 传输层概述. 7.1.1 提供给高层的服务 7.1.2 服务质量 7.1.3 多路复用技术. 主机 A.
E N D
计算机网络Computer Network 2014年10月23日
课程目录 第1章 概述 第2章 物理层与数据通信基础 第3章 数据链路层 第4章 局域网 第5章 网络层 第6章 网络互联技术 第7章 传输层 第8章 应用层 第9章 网络管理与信息安全 第10章 网络新技术专题 计算机网络--刘桂江
第7章 传输层 7.1 传输层概述 7.2 互联网传输协议 计算机网络--刘桂江
7.1 传输层概述 7.1.1 提供给高层的服务 7.1.2 服务质量 7.1.3 多路复用技术 计算机网络--刘桂江
主机 A 主机 B 传输服务用户 (应用层实体) 传输服务用户 (应用层实体) 应用层 传输层服务访问点 TSAP 层接口 传输协议 传输层 传输实体 传输实体 层接口 网络层 网络层服务访问点 NSAP 7.1.1 提供给高层的服务 完成传输层功能的硬件或软件 传输层与其上下层之间的关系 • 传输层向高层提供两种类型的服务:面向连接的传输服务和无连接的传输服务。 计算机网络--刘桂江
7.1.2 服务质量 • 传输层服务质量是指在两节点之间表现出来的某些传输连接的特征,是传输层性能的度量,反映了传输质量及服务的可用性。 • 传输层服务质量参数表 • 传输层服务质量不是由单方面决定的,一般它需要连接的双方有一个协商的过程。 计算机网络--刘桂江
TSAP 应用层 应用层 NSAP 传输层 传输层 网络层 网络层 至路由器 至路由器 7.1.3 多路复用技术 (a)向上多路复用 (b)向下多路复用 • 向上复用的使用往往是出于费用上的考虑;向下复用的目的是为了提高吞吐量。 计算机网络--刘桂江
7.2互联网传输协议 7.2.1 TCP简介 7.2.2 TCP服务模型 7.2.3 TCP协议 7.2.4 TCP报文段头 7.2.5 TCP连接管理 7.2.6 TCP传输策略 7.2.7 TCP流量控制和拥塞控制 7.2.8 TCP计时器 7.2.9 UDP协议简介 计算机网络--刘桂江
7.2.1 TCP简介 • TCP(传输控制协议)是TCP/IP体系中面向连接的传输层协议,它提供全双工的服务。 • TCP提供差错控制和排序的功能,提供可靠的端到端字节流的传输服务。 计算机网络--刘桂江
7.2.2 TCP服务模型(1 /5) • TCP是使用连接来进行通信的。当一个应用进程希望与另一个远程的应用进程建立连接的时候,除了要知道对方的主机地址外,它还必须知道要连接到对方哪个应用进程上,从而实现端到端的通信。 应用进程 应用进程 AP4 AP1 AP2 AP3 端口 5 4 3 2 1 5 4 3 2 1 端口 传输层提供应用进程间的逻辑通信 IP 层 传输层提供端到端的服务 计算机网络--刘桂江
7.2.2 TCP服务模型(2 /5) • 在传输层上通常使用的方法是为那些能够监听连接请求的进程定义TSAP;在Internet中,这些访问点就被称为端口。同样,在网络层上的访问点被称为NSAP。IP地址就是NSAP的特例。 NSAP、TSAP和传输连接之间的关系 计算机网络--刘桂江
7.2.2 TCP服务模型(3 /5) • 客户机上的应用进程如何知道服务器上的服务器进程是被关联到某个特定端口上的呢? 常用的方法有两种: (1)对于一些少数且关键的服务器进程(例如Web服务器),它们被连接请求的频率高,而且一旦连接上以后维持的时间一般也比较长,则将这些典型服务器进程与熟知的TSAP永久地关联起来。且这些关键服务进程和对应的熟知TSAP往往被罗列在某个文件中。 (2)采用名字服务器或目录服务器。 计算机网络--刘桂江
为了区分不同主机中的进程,TCP/IP协议簇将主机的IP地址与端口结合起来,定义为通信的一个端点,称之为套接字。为了区分不同主机中的进程,TCP/IP协议簇将主机的IP地址与端口结合起来,定义为通信的一个端点,称之为套接字。 套接字、端口和IP地址的关系是: IP 地址 端口号 (16位) 25 128.10.2.3 128.10.2.3 25 套接字 7.2.2 TCP服务模型(4/5) 套接字(socket) 计算机网络--刘桂江
7.2.2 TCP服务模型(5 /5) 三类端口 (1)熟知端口,其数值为0~1023。这一类端口由ICANN负责分配给一些常用的应用层程序固定使用。 (2)登记端口,其数值为1024~49151。这类端口是ICANN控制的,使用这个范围的端口必须在ICANN登记,以防止重复。 (3)动态端口,其数值为49152~65535。这类端口是留给客户进程选择作为临时端口。 计算机网络--刘桂江
7.2.3 TCP协议 在TCP协议中需要关注的几个问题: (1)TCP连接上的每个字节都是有编号的,即都有它自己独有的32位序列号。 (2)TCP报文段的结构 (3)滑动窗口协议 (4)错序问题 计算机网络--刘桂江
7.2.4 TCP报文段头 • 一个TCP报文段分为首部和数据两部分。TCP首部由固定首部和可选的附加选项组成。 • TCP数据部分理论上长度最多可达65495个字节。 • 无任何数据的TCP报文段也是合法的,它通常被用于确认或控制消息。 • TCP的全部功能都体现在它首部中各字段的作用。 计算机网络--刘桂江
TCP报文段首部结构图 32 bit 比特0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节的 固定首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 TCP 首部 TCP 数据部分 TCP 报文段 发送在前 IP 首部 IP 数据部分 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 源端口和目的端口——各占2个字节。端口是传输层与应用层的服务接口,它们分别与源IP地址和目的IP地址一起标识一个TCP连接的两个端点,传输层的复用和分用功能都要通过端口才能实现。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 确认序号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 数据偏移——占4bit,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位不是字节而是 32 bit字(即4字节为计算单位)。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 保留字段——占 6 bit,保留为今后使用,但目前都置为 0。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 紧急比特 URG ——紧急标志位。当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 确认比特 ACK ——确认标志位。当ACK=1时表明报文段中确认序号字段有效,这时可以理解当前发送的报文段为确认报文;当ACK=0时表明确认序号字段无效。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 推送PSH (Push) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 复位RST (Reset) ——复位标志。当RST=1时表明TCP连接中出现严重差错(例如主机崩溃),这时必须释放当前连接然后再重新建立一个新的传输连接。另外RST置1还可以用来拒绝接收一个非法报文段,或拒绝建立一个连接。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 同步SYN ——建立连接标志。建立连接过程中,在客户端发出请求建立连接的报文段中:SYN=1,ACK=0;在服务器端表示接收建立连接的报文段中:SYN=1,ACK=1;所以可用SYN来区分与建立连接有关的报文段,而用ACK进一步区分是连接请求还是连接接收。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 终止FIN (Final) ——释放连接标志。当FIN=1时表示此报文段的发送方的数据发送已经结束,并要求释放传输连接。注意这是个单方面请求释放连接,即仍然还允许对方发送数据过来。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 窗口大小字段 ——占 2 字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 检验和——占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。 计算机网络--刘桂江
在计算检验和时,临时把“伪首部”和TCP报文段连接在一起,得到一个临时的TCP报文段。检验和就针对这个临时的TCP报文段来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。在计算检验和时,临时把“伪首部”和TCP报文段连接在一起,得到一个临时的TCP报文段。检验和就针对这个临时的TCP报文段来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。 TCP报文段伪首部结构图 计算机网络--刘桂江
TCP计算检验和的具体方法: 在发送方,首先是把全零放入检验和字段,再把伪首部以及TCP报文段看成是由许多16位的字串接起来。若TCP报文段的数据部分长度不是4N(N为正整数)字节的整数倍,则要填充全零字串在后面直至长度为4N字节。然后按二进制反码计算出这些16位字的和,将此和的二进制反码写入检验和字段后,发送该TCP报文段。 在接收方,把收到的TCP报文段增加伪首部(以及可能的填充全零字节)一起,按二进制反码计算出这些16位字的和。当无差错时其结果应为全1;否则就表明出现传输错误,接收方应丢弃这个错误的TCP报文段(当然也可以上交给应用层,但附上出现了差错的警告)。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中,紧急数据一共有多少个字节。它和紧急标志位URG配合使用。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 附加选项字段 —— 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS (Maximum Segment Size)。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。” 附加选项是可选的,如果主机没有使用这个选项,则缺省使用MSS的默认值是536。另外,一个连接两个方向上的最大数据段长度MSS可以不相同。 计算机网络--刘桂江
比特 0 8 16 24 31 源 端 口 目 的 端 口 序 号 20 字节 固定 首部 确 认 序 号 TCP 首部 数据 偏移 U R G A C K P S H R S T S Y N F I N 窗 口 大 小 保 留 检 验 和 紧 急 指 针 附 加 选 项 (长 度 可 变) 填 充 填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。 计算机网络--刘桂江
7.2.5 TCP连接管理(1 /8) 1.建立TCP连接 TCP协议中使用三次握手方法建立连接。 ACK=0 1、防止可能发生的死锁 2、防止已失效的连接再次传到被连接的主机 三次握手法 为何不用两次握手方法建立连接? 计算机网络--刘桂江
7.2.5 TCP连接管理(2 /8) 2.释放TCP连接 • 释放连接有两种方式:非对称释放和对称释放。 • (1)非对称释放 A A 主机 主机 B B 主机 主机 连接建立 连接建立 DATA 1 DATA 1 发送第一 发送第一 个数据 个数据 ACK ACK 发送确认 发送确认 该方法较为粗暴,可能会导致数据丢失。 发送第二 发送第二 DATA 2 DATA 2 撤消连接 撤消连接 个数据 个数据 在一方断开连接后不再 接收数据,数据丢失 时间 时间 时间 时间 计算机网络--刘桂江
7.2.5 TCP连接管理(3 /8) (2)对称释放方法 A 主机 B 主机 释放请求即 FIN=1 seq =x , A 不再发送 ACK=1 seq =y ack =x + 1 通知主机 , , 数据 进程并发 送确认 半关闭状态 ack =x + 1 FIN=1 , seq =y+1 , 释放请求即 B 也不再发 + ACK=1 seq =x+1 ack =y 2 , , 发送确认 送数据 关闭状态 时间 时间 计算机网络--刘桂江
7.2.5 TCP连接管理(4 /8) 不过,对称释放协议并不总是可以正确地工作。它存在两军队问题。 两军队问题 用“断开连接”来代替军队的“发起进攻” 。如果任何一方一定要在确定另一方已经做好了断开连接的准备之后才准备断开连接的话,那么,断开连接的操作将永远都不可能发生。 计算机网络--刘桂江
7.2.5 TCP连接管理(5 /8) *3.有限状态机 建立连接和释放连接所要求的步骤可以用一个有限状态机来表达。该状态机有11种状态,在每一种状态中,都存在一些合法的事件。当合法事件发生的时候,可能需要采取某个动作;当其他事件发生的时候,则报告一个错误。 计算机网络--刘桂江
7.2.5 TCP连接管理(6 /8) TCP有限状态机中存在的状态 计算机网络--刘桂江
7.2.5 TCP连接管理(7/8) 每个连接都从CLOSED状态开始。当它执行了一个被动的打开操作(LISTEN),或者一个主动的打开操作(CONNECT)的时候,它就离开CLOSED状态。如果另一端执行了相对应的操作,则连接被建立起来,当前状态变成ESTABLISHED;连接的释放过程可以由任何一方发起,当释放完成的时候,状态又回到了CLOSED。 计算机网络--刘桂江
TCP的有限状态机 计算机网络--刘桂江
7.2.6 TCP传输策略(1 /5) • TCP 协议是面向字节流的。TCP 将所要传送的报文看成是字节组成的数据流,并使每一个字节对应于一个序号。 • 在连接建立时,双方要商定初始序号。TCP 每次发送的报文段的首部中的序号字段数值表示该报文段中的数据部分的第一个字节的序号。 • TCP 发送的确认报文段是对接收到的数据的最高序号表示确认。接收端返回的确认序号是已收到的数据的最高序号加 1。也就是说,确认序号表示接收端期望下次收到的数据中的第一个数据字节的序号。 计算机网络--刘桂江
7.2.6 TCP传输策略(2 /5) TCP传输的可靠就是由于使用了序号和确认机制: 在TCP发送一个报文段时,它同时也在自己的重传队列中存放一个副本,并启动一个计时器。若收到该报文段的确认,则删除此副本;若在计时器超时之前没有收到确认,则重传此报文段的副本。TCP的确认并不保证数据已由应用层交付给了端用户,而只是表明在接收方的TCP收到了发送方所发送的报文段。 计算机网络--刘桂江
7.2.6 TCP传输策略(3 /5) TCP的发送和确认机制 在发送方,TCP一般是根据以下三种基本机制来控制报文段的发送时机。第一种机制是TCP维持一个变量,它等于接收方确认报文段中的最大报文长度MSS,这个数值给出了接收方的最大数据接收能力,因此只要发送方发送缓存从发送进程中得到的数据已达到MSS字节时,就组装成一个TCP报文段,然后发送出去。第二种机制是当发送方的应用进程指明要求发送一个报文段时,即使用了TCP的推送(PUSH)操作,则TCP立即将这个报文段单独发送出去。第三种机制是当发送方的一个计时器期限到了,这说明某一个已发送出去的报文段在规定时限之内没有收到确认,于是发送方就把该计时器所对应的报文段副本从重传队列中取出再次发送出去。 计算机网络--刘桂江
7.2.6 TCP传输策略(4 /5) 在接收方,当接收方的接收缓存已经装满数据,就会返回一个确认,并设置窗口(WIN)的值为0,这时发送方是不能够再正常地发送数据段了。但这里有两种意外情形允许发送方继续发送报文段。第一,紧急数据仍可以发送,例如要中断远程机器上运行的某一个进程。第二,发送方可以发送一个1字节的数据段,要求接收方重申窗口大小及下一个准备接收的数据字节序号。这是避免当一个返回窗口信息的确认丢失之后发生死锁的情形。 计算机网络--刘桂江
7.2.6 TCP传输策略(5/5) Nagle算法 Clark算法(糊涂窗口综合症) Nagle算法和Clark算法针对糊涂窗口综合症的解决方案是相互补充的。Nagle算法试图解决由于发送方每次向TCP只传送一个字节而引起的问题;Clark算法则试图解决由于接收方每次从TCP流中只读取一个字节而引起的问题。这两种算法都是有效的,而且可以一起工作。它们要达到的目标是:发送方不要发送太小的数据段,接收方也不要请求太小的数据段。 计算机网络--刘桂江
RecvWindow 网络来的数据 用户进程 空闲缓冲区 缓冲的TCP数据 RecvBuffer 7.2.7 TCP流量控制和拥塞控制(1/14) 1.TCP流量控制 • TCP 采用大小可变的滑动窗口进行流量控制。窗口大小的单位是字节。 计算机网络--刘桂江
7.2.7 TCP流量控制和拥塞控制(2/14) • 在 TCP 报文段首部的窗口(WIN)字段写入的数值就是当前给对方设置的发送窗口数值的上限。 • 发送窗口在连接建立时由双方商定。但在通信的过程中,接收端可根据自己的资源情况,随时动态地调整对方的发送窗口上限值(可增大或减小)。 计算机网络--刘桂江