计算机网络07传输层.ppt
计算机网络原理第七章第七章 运输层运输层信息管理学院 车 银 超学习重点学习重点n运输层的模型运输层的模型 n运输层的功能运输层的功能nTCP/IPTCP/IP体系中的运输层体系中的运输层nTCPTCP和和UDPUDP运输层概述 n运输层向它上面的应用层提供通信服务。物理层网络层运输层应用层数据链路层运输层提供应用进程间通信54321运输层主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 层LAN1AP1AP2AP454321IP 协议的作用范围运输层协议 TCP 和 UDP 的作用范围AP3应用进程之间的通信n两个主机进行通信实际上就是两个主机中的应用进程互相通信。n又称为端到端的通信。n运输层的一个很重要的功能就是复用和分用。运输层和网络层的区别 应用进程应用进程IP 协议的作用范围(主机之间)TCP 和 UDP的作用范围(进程之间)因 特 网运输层的主要功能n为应用进程之间提供端到端的通信。n复用、解复用。n还要对收到的报文进行差错检测。n根据需要,有两种不同的运输服务,即可靠的和不可靠的。可靠和不可靠通信?应用层运输层发送进程接收进程接收进程数据数据全双工可靠数据数据使用 TCP使用 UDP不可靠发送进程(1)用户数据报协议 UDP(User Datagram Protocol)(2)传输控制协议 TCP(Transmission Control Protocol)TCP/IP的两个运输层协议TCPUDPIP应用层与各种网络接口运输层nUDP 的数据单位是 UDP 报文或用户数据报。n TCP 的数据单位是 TCP 报文段(segment)。TCP 与 UDP nUDP 在传送数据之前不需要建立连接。对方在收到UDP报文后,不需要确认。虽然UDP不提供可靠交付,但在某些情况下仍是一种有效的工作方式。nTCP 则提供面向连接的服务。由于提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。还要强调两点nUDP 数据报与IP数据报有很大区别。IP 数据报要经过许多路由器的转发,但 UDP 用户数据报是在运输层的端到端的逻辑信道中传送的。nTCP 报文段是在运输层的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。端口的概念n端口就是运输层服务访问点。n端口的作用就是让应用层的各种应用进程能将其数据通过端口向下给运输层,以及让运输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程。n从这个意义上讲,端口是用来标志应用进程的。端口的作用应用层运输层网络层TCP 报文段UDP用户数据报应用进程TCP 复用IP 复用UDP 复用TCP 报文段UDP用户数据报 应用进程端口端口TCP 分用UDP 分用IP 分用发送方接收方端口n端口用一个 16 bit 端口号进行标志。n端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。n在因特网中不同计算机的相同端口号是没有联系的。两类端口n知名端口,一般为 01023。当一种新的应用程序出现时,必须为它指派一个知名端口。n一般端口,用来随时分配给请求通信的客户进程。用户数据报协议 UDPnUDP 只在 IP 之上增加了很少的功能,即端口的功能和差错检测的功能。n虽然UDP只提供不可靠的交付,但在某些方面有其特殊的优点。n发送数据之前不需要建立连接n主机的UDP不需要维持复杂的连接状态表。nUDP 报文只有8个字节的首部开销。n对某些实时应用是很重要的。端口是用报文队列来实现UDP 端口 2000UDP 端口 69出队列入队列出队列入队列TFTP 服务器TFTP 客户UDP 用户数据报应用层运输层UDP 用户数据报的格式 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报44112122222数 据首 部UDP 用户数据报伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报44112122222数 据首 部UDP 用户数据报首部有 8 个字节,由 4 个字段组成。伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据报44112122222数 据首 部UDP 用户数据报伪首部仅仅是为了计算检验和。特点特点n没有确认机制没有确认机制n不对报文排序不对报文排序n没有超时机制没有超时机制n没有控制流量没有控制流量n没有拥塞控制没有拥塞控制使用使用UDP的应用程序要承担可靠性方面的全部工的应用程序要承担可靠性方面的全部工作作丢弃、乱序丢弃、乱序传输控制协议 TCP端口发送 TCP 报文段TCPTCP接收缓存发送缓存报文段报文段报文段端口发送端接收端向发送缓存写入数据块从接收缓存读取数据块应用进程应用进程TCP TCP 提供的服务提供的服务nTCP提供可靠的、面向连接的数据传送服务。它既适用于可靠的网络服务环境,也适用于不可靠的网络服务环境。n为达到可靠传送的目的,TCP将数据发送后须等待对方的确认应答。若超时后仍未收到应答,则需重发。n接收方收到对方发来的报文后,经检查无错,无重复,才放入缓冲区队列。TCP首部20 字节的固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FIN32 bitSYNRSTPSHACKURG比特 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充源端口和目的端口各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充序号占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号指的是本报文段所发送的数据的第一个字节的序号。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认号占 4 字节,是期望收到的下一个数据的第一个字节的序号。TCP 的数据编号与确认nTCP传输的数据是字节流,每个字节对应一个序号,建立连接时双方协商初始序号。nTCP的确认是对接收到的数据的最高序号的确认,返回的确认序号是收到的最高序号加1。n传送数据时,捎带确认序号。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充数据偏移占 4 bit,它指出 TCP 报文段的数据部分距离报文段的起始处有多远。单位不是字节而是 4 字节。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充保留字段占 6 bit,保留为今后使用,但目前应置为 0。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急比特 URG 当 URG 1 时,表明报文段中有紧急数据,接收方应尽快交付(相当于高优先级的数据)。此时,紧急指针有效。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充确认比特 ACK 只有当 ACK 1 时确认号才有效。当 ACK 0 时,确认号无效。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充推送比特 PSH(PuSH)接收方 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充复位比特 RST(reset)当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充同步比特 SYN 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充终止比特 FIN(FINal)用来释放一个连接。当FIN 1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充窗口 占 2 字节。用来控制发送方的流量,单位为字节。接收方根据设置的缓存大小确定自己的接收窗口,然后通知对方,以确定对方的发送窗口。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充紧急指针 占 16 bit。指出本报文段中的紧急数据的最后一个字节的序号。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS(Maximum Segment Size)。MSS 告诉对方 TCP:“我一次能接收的报文段的数据部分的最大长度。”MSS 是 TCP 报文段中的数据部分的最大长度。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充填充字段 这是为了使整个首部长度是 4 字节的整数倍。报文段的发送n报文段发送的时机:发送数据达到MSS时,组装TCP报文段,并发送。发送进程(例telnet)要求推送操作时,立即发送。发送计时器时间到。发送方在规定时间没有收到确认,则重发未被确认的报文n确认、超时重传报文段的接收n接收方收到有差错的报文段,丢弃n接收方收到重复报文段,丢弃,但发回确认消息n报文未按序号,TCP没有做明确规定n将不按序的报文丢弃n暂存于接收缓存,待所缺序号报文段收齐后再一起上交应用层TCP 连接的管理n三个阶段:建立连接、传送数据和释放连接。n连接建立过程中要解决以下三个问题:确知对方的存在。双方协商一些参数(如最大报文段长度,窗口大小,服务质量等)。资源分配(如缓存、连接表)。客户/服务器方式nTCP 的连接是采用客户/服务器方式。n主动主动发起发起连接的应用进程叫做客户(client)。n被动被动等待等待连接的应用进程叫做服务器(server)。三次握手建立 TCP 连接 SYN,SEQ=x主机 B(服务器)SYN,ACK,SEQ=y,ACK=x 1ACK,SEQ=x+1,ACK=y 1确认确认主机 A(客户)连接请求四次握手释放 TCP 连接FIN,SEQ=uACK,ACK=u 1ACK,SEQ=u+1,ACK=v 1A 不再发送数据FIN,ACK,SEQ=v,ACK=u+1主机 B主机 A确认确认B不再发送数据