1、计算机网络技术,第五章 传输层电子科技大学计算机学院、软件学院,计算机网络技术,电子科大计算机学院,软件学院,目录,5.1 传输层功能 5.2 传输层服务 5.3 传输层寻址 5.4 用户数据报协议UDP 5.5 传输控制协议TCP 5.6 工程实例,计算机网络技术,电子科大计算机学院,软件学院,5.1 传输层功能,传输层提供了不同主机上应用程序进程之间的端到端的逻辑通信 所谓“端到端”(end to end)通信,即发送端和接收端之间的通信,计算机网络技术,电子科大计算机学院,软件学院,5.1 传输层功能,传输层的主要功能有: (1) 分割与重组数据:将应用层的消息分割成若干子消息并封装为报
2、文段。 (2) 按端口号寻址:标识不同的应用进程,实现多个应用进程对同一个IP地址的复用。 (3) 连接管理:完成端到端通信链路的建立、维护和管理。 (4) 差错控制和流量控制 总之,传输层要向应用层提供通信服务的可靠性, 避免报文的出错、丢失、延迟时间紊乱、重复、乱 序等现象。,计算机网络技术,电子科大计算机学院,软件学院,5.2 传输层服务,传输层主要提供两种服务 一种是面向连接的服务,由TCP协议实现,它是一种可靠的服务; 一种是无连接的服务,由UDP协议实现,是一种的不可靠服务。,计算机网络技术,电子科大计算机学院,软件学院,面向连接的服务,过程分为三步:(1)建立连接;(2)数据传输
3、;(3)释放连接。,计算机网络技术,电子科大计算机学院,软件学院,面向连接的服务,面向连接服务的特点 (1)在服务进行之前必须建立一条逻辑链路后再进行数据传输,传输完毕后,再释放连接。在数据传输过程,好象一直占用了一条这样的逻辑链路。 (2)由于所有的报文都在这个管道内传送,因此报文是按序到达目的地的,即先发送的报文先到达。 (3)通过可靠传输机制保证报文传输的可靠性,报文不易丢失。 (4)由于需要管理和维护连接,因此协议复杂,通信效率不高。 适合于对数据的传输可靠性非常高的场合,如文件传输、网页浏览、电子邮件等,计算机网络技术,电子科大计算机学院,软件学院,无连接的服务,无连接的服务就是通信
4、双方不需要事先建立一条通信线路 把每个带有目的地址的报文分组送到网络上,由网络(如路由器)根据目的地址为分组选择一条恰当的路径传送到目的地,计算机网络技术,电子科大计算机学院,软件学院,无连接服务,无连接服务的特点 (1)数据传输之前不需要建立连接; (2)每个分组都携带完整的目的节点地址,各分组在网络中是独立传送的; (3)分组的传递是失序的,即后发送的分组有可能先到达目的地;( 4)可靠性差,容易出现报文丢失的现象,但是协议相对简单,通信效率较高。 无连接的UDP是网络层“尽最大努力投递”服务在传输层的进一步扩展,无法保证报文能否正确到达目的地 适用于局域网或光纤通信;连续的大数据量的传输
5、并能容忍一定程度的数据丢失的应用 ;多播应用,计算机网络技术,电子科大计算机学院,软件学院,5.3 传输层端口,端口就是应用进程的地址,16bit正整数 给应用进程分配一个传输层的地址目的是为了实现在传输层对同一个IP地址的多路复用与多路分解。,计算机网络技术,电子科大计算机学院,软件学院,5.3 传输层端口,现实例子: 一栋写字楼中,有多个公司,每个公司都和外界有信函联系,每个公司占据一层楼(或房间号) 每个公司相当于应用层的进程 楼层号(或房间号)是传输层的端口地址 写字楼的地址则相当于网络层的IP地址 公司都使用写字楼的地址和外界通信 外界的信件到达写字楼后,再由相关人员按照楼层号或房间
6、号投递到相应的公司,计算机网络技术,电子科大计算机学院,软件学院,5.3 传输层端口,端口只具有本地意义,即端口号是为了标志本主机应用层中的各个进程,因此两个不同主机的应用进程可以使用相同的端口 端口分为两类:熟知端口(0-1023)和一般端口 常用的熟知端口有:,计算机网络技术,电子科大计算机学院,软件学院,5.4用户数据报协议UDP,UDP概述 UDP的数据报格式 UDP的应用,计算机网络技术,电子科大计算机学院,软件学院,UDP概述,UDP协议由RFC768定义,是无连接的,即通信双方并不需要建立连接,这种通信显然是不可靠的。但是由于UDP简单,数据传输速度快、开销小。 UDP的优势 (
7、1)无需建立连接和释放连接,从而减少了连接管理开销。而无需建立连接也减少了发送数据之前的时延。(2)UDP数据报只有8个字节的首部开销,比TCP的20个字节的首部要短得多。 (3)由于UDP没有拥塞控制,因此UDP的传输速度很快,即使网络出现拥塞也不会降低发送速率。这对实时应用如IP电话,视频点播等是非常重要的。,计算机网络技术,电子科大计算机学院,软件学院,UDP应用实例,下图是一个典型的UDP应用例子DNS DNS是将域名地址转换为IP地址的常见UDP应用,DNS使用UDP传送报文,但DNS服务器和DNS客户所使用的端口是不一样的。DNS服务器进程是一直在运行着,其熟知端口是53,在此端口
8、上等待DNS请求的到来。,计算机网络技术,电子科大计算机学院,软件学院,UDP的数据报格式,用户数据报UDP的报文格式由两部分构成:首部和数据 各字段意义如下:(1)源端口:即本主机应用进程的端口号;(2)目的端口:目的主机应用进程的端口号;(3)长度:UDP用户数据报的长度;(4)检验和:用于检验UDP用户数据报在传输中是否出错,计算机网络技术,电子科大计算机学院,软件学院,UDP校验和计算,在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。 伪首部并不是UDP用户数据报真正的首部,仅用于计算检验和,既不向下传送也不向上递交。UDP计算机检验和的方法和计算IP数据报首部检验和的
9、方法相似。但网络层只校验IP分组首部,不对数据进行校验。而UDP则是首部和数据一起检验,计算机网络技术,电子科大计算机学院,软件学院,UDP的应用,由于UDP无需建立、简单高效且开销小的的特点,因此得到了广泛的应用 流式多媒体这类数据流量大而连续,且能容忍数据丢失的应用 多播应用 如果既想利用UDP简单高效的特性,又想提供一定程度上的传输保障,则可以通过在应用层增加相应的可靠传输机制来完成。,计算机网络技术,电子科大计算机学院,软件学院,5.5传输控制协议TCP,TCP概述 可靠传输原理 TCP报文段格式 TCP连接管理 TCP的可靠传输 TCP流量控制 TCP拥塞控制,计算机网络技术,电子科
10、大计算机学院,软件学院,TCP概述,TCP协议由RFC793定义,它是面向连接的,需要经历建立连接、数据通信和断开连接三个阶段。 这里的“连接”并不是电路交换中的物理连接,也不是像虚电路那样的逻辑连接 它的连接状态信息完全保存在两个端系统中,即网络上的路由器并不知道哪两个端系统建立了TCP连接。 TCP连接是全双工的,即通信双方可以同时发送和接收数据。例如主机H1和H2通信,建立TCP连接后,H1向H2发送数据时,也能接收来自H2的数据。 TCP的数据传输是可靠的,它具有重传、确认等可靠机制,一旦数据丢失或出错,那么发送方将重新发送数据,确保数据的可靠到达。 相比于UDP,TCP还提供流量控制
11、、拥塞控制机制,用于控制发送方的发送速率。,计算机网络技术,电子科大计算机学院,软件学院,可靠传输原理,传输不可靠的根源在于底层物理信道的误码率,其不可靠程度取决于误码率的大小。这种底层物理信道的不可靠性就需要上层的可靠传输协议来弥补。 可靠传输的基本协议(1)理想的传输协议 (2)基本停等协议(3)增加序号机制的停等协议(4)增加超时机制的停等协议,计算机网络技术,电子科大计算机学院,软件学院,理想的传输协议,基本假设:物理信道不会出错;网络层总是准备好发送数据;数据链路层处理速度无限快 显然,这是一种理想的数据传输,因为物理信道不会出错意味着本协议无需进行校验、纠错;而网络层和数据链路层的
12、假设意味着无需进行流量控制和保序等操作。,计算机网络技术,电子科大计算机学院,软件学院,基本停等协议,基本假设如下:物理信道会出错 ;网络层总是准备好发送数据;数据链路层处理速度有限 物理信道此时会出错,需要有校验功能,数据链路层处理速度有限,意味着发送方不能无限度的发送数据,必须要等到接收方确认(ACK) 才能继续发送。一旦收到错误的确认,就要重新发送数据。,计算机网络技术,电子科大计算机学院,软件学院,增加序号机制,基本假设和第2个协议相同 在具有确认机制的可靠传输协议中, 仅仅一个模糊的确认是不够的,因为有重发数据的存在 接收方无法分辨收到的数据是新发的数据还是重新发送的数据 需要给发送
13、的数据编号,称为序号。有了序号后,就能够有目的的确认。接收方也就不会混淆新发帧和重发帧了。,计算机网络技术,电子科大计算机学院,软件学院,增加超时机制,物理信道除了会出错外,还有可能发送数据丢失的现象。 数据一旦丢失,就必须要进行重传。 要引入一个超时(Timeout)机制,当在定时器到期之前收到了来自接收方的确认,就取消定时器发送下一个数据。若定时器超时后仍未收到确认,则认为数据传输丢失(当然也有可能是确认信息丢失),发送方将重新发送数据。,计算机网络技术,电子科大计算机学院,软件学院,带确认、序号和超时机制的停等协议,具有确认、序号和超时机制的停等协议已经可以比较好的进行数据的可靠传输了,
14、计算机网络技术,电子科大计算机学院,软件学院,带确认、序号和超时机制的停等协议,计算机网络技术,电子科大计算机学院,软件学院,滑动窗口协议提高数据传输率,停等协议能够正确的工作,但是它的效率非常低下 滑动窗口协议为接收方定义了一个接收窗口,用以容纳允许接收的帧序号 ;发送方定义了一个发送窗口,用以容纳已经发送但尚未收到确认的帧序号 假设整个圆周所容纳帧的序号总数为N 接收窗口外的帧表示已经接收过的帧或者对方尚未发出的帧; 接收窗口内的下界帧是是接收方期望收到的下一帧。当接收方收到接收窗口以外的帧时,丢弃此帧,但要发送重复的确认帧。,计算机网络技术,电子科大计算机学院,软件学院,滑动窗口协议提高
15、数据传输率,在正常情况下,接收方总是收到接收窗口下界帧,去掉帧头帧尾提取出分组交给网络层,然后将接收窗口向前滚动一格(即上下界帧加1并对N求模),同时发送确认帧。 在不正常的情况下,接收窗口下界帧因为丢失、出错或延迟等原因而导致“尚未收到下界帧(序号i),就收到了窗口内非下界帧(序号j)”的情况出现。为了能按序提交数据给网络层,必须把这些帧缓存起来,并发送确认帧。 当下界帧(序号i)到达时,收方将从i到m序号的帧对应的分组按序交网络层,并释放相应缓冲区,接收窗口向前滚动(mi1) mod N格,并发送确认帧,其中m是缓冲区中与i相邻帧序号集合中的最晚序号。,计算机网络技术,电子科大计算机学院,
16、软件学院,接收窗口例子,帧序号空间N=8,接收窗口大小w=6,计算机网络技术,电子科大计算机学院,软件学院,发送窗口例子,序号空间N=8,发送窗口最大为w=4,并假设发送方连续发送0,1,2,3号帧,计算机网络技术,电子科大计算机学院,软件学院,回退N步法GBN协议,在GBN协议中,接收窗口大小为1,而发送窗口大于1。因此接收方的下界帧只有一个,相当于接收方只能按序接收数据 发送窗口为4,接收方收到0,1号帧后返回ACK 0和ACK 1确认帧。发送方收到ACK 0和ACK 1后可以继续发送4,5号帧。 假设2号帧在传输过程中丢失,因此接收方无法收到2号帧。若此时3号帧到达,接收方认为这是个非窗
17、口内的帧,因此丢弃此帧,并再次发送ACK 1,表明已经收到1号帧以前的数据,下面需要2号帧。 当3,4,5号帧到达时,接收方都将返回ACK 1。发送方收到重复的ACK 1时,知道接收方还未收到2号帧,因此发送方重新从2号帧开始,发送2,3,4,5号帧,即回退了N步发送数据,计算机网络技术,电子科大计算机学院,软件学院,选择性重传协议SR协议,GBN协议的效率较低,尤其是当发送窗口很大的时候。而选择性重传则可以提高传输效率。 在SR协议中,发送窗口和接收窗口都大于1。接收窗口在收到非下界帧的时候,不会将数据丢弃,而是缓存起来,并发送它对期望帧的确认。,计算机网络技术,电子科大计算机学院,软件学院
18、,SR协议,SR的接收窗口尺寸应满足N/2,其中N为序号空间的大小 若接收窗口尺寸N/2,那么在非下界帧均先到,下界帧最后到时,接收窗口将一次性向前滚动N/2个号,则滚动前后将有一部分窗口是重叠的,计算机网络技术,电子科大计算机学院,软件学院,TCP报文段格式,TCP报文段为首部和数据,计算机网络技术,电子科大计算机学院,软件学院,源端口和目的端口 各占2个字节,用于应用进程的寻址 序号 占4个字节,不是给每个TCP报文编号,而是给每个字节编号 序号字段的值指的是本报文段所发送的数据的第一个字节的序号 确认号 占4个字节,期望收到对方的下一个报文段数据中第一个字节的序号 首部长度 占4bit,
19、就是TCP报文段首部的长度,以4字节为单位,计算机网络技术,电子科大计算机学院,软件学院,保留 占6bit,保留为今后使用,但目前应置为0 紧急比特U(Urgent,URG) URG为1紧急指针有效,它表示从本报文段的起始字符开始,到紧急指针指出的序号之间的部分为紧急数据 确认比特A(Acknowledgement, ACK) 只有ACK=1时确认号字段才有效。当ACK=0时,确认号无效 推送比特P(PuSH,PSH) 为1表示带有PUSH标志的数据 重置比特R(ReSeT,RST) 为1表示出现主机崩溃等严重错误,当TCP软件收到此报文段时,必须立即释放连接,计算机网络技术,电子科大计算机学
20、院,软件学院,同步比特S(SYNchronization,SYN) 在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段 终止比特F(FINa1,FIN) 用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完毕,并要求释放传输连接 窗口大小 占2字节,窗口字段用来控制对方发送的数据量,用于流量控制 校验和 占2个字节。检验和字段检验的范围包括首部和数据这两部分,需要伪首部 选项 长度可变。TCP只规定了一种选项,即最大报文段长度MSS,默认536字节,计算机网络技术,电子科大计算机学院,软件学院,TCP连接管理,TCP的连接管理有三个阶段,即连接建立
21、、数据传送和连接释放。 TCP采用三次握手(three-way handshake)建立连接,即发送方和接收方之间要经历3次交互。防止已失效的连接请求报文段突然又传送到了主机H2,因而产生错误,计算机网络技术,电子科大计算机学院,软件学院,TCP连接管理,TCP释放连接的过程与连接建立的过程类似,释放连接需要经历四次握手。双方都必须给对方发出一个断开连接的请求报文并对之确认,计算机网络技术,电子科大计算机学院,软件学院,TCP的可靠传输,TCP则提供可靠的数据传输服务,确保收发双方的数据传输按序、可靠、正确的传输。 校验和、确认、滑动窗口协议、序号以及超时机制是确保数据可靠传输的基本技术 在T
22、CP首部中,校验和字段用于检查TCP报文段是否在传递的过程中出错 序号字段用于对字节流中的每一个字节编号,使接收方能分辨收到的报文是新报文还是重复的报文 通过确认号字段,发送方知道接收方目前已经接收了哪个序号之前的数据,并根据此信息决定发送的下一个报文段中第一个字节的序号 对某个序号的重复确认还用于报文的快速重传,计算机网络技术,电子科大计算机学院,软件学院,TCP的确认机制,TCP的确认机制涉及到首部中的确认号字段。该字段是接收方希望收到发送方的下一个报文段中第一个字节的序号。发送方看到这个确认的序号,它就知道接收方已经正确接收了该序号之前的数据。 为了提高效率,降低网络开销,可以采取捎带确
23、认,如下图(b)所示。,计算机网络技术,电子科大计算机学院,软件学院,TCP的确认机制,累积确认 :接收方不必每个报文都要发送ACK报文 。 推迟确认:TCP规定,一个ACK报文可以推迟500ms发出。若500ms内有其他的报文到达,那么只需发送一个累积确认;若没有报文到达,必须立刻发送一个ACK报文。,计算机网络技术,电子科大计算机学院,软件学院,TCP的确认机制,重复的确认(或冗余确认) 重复的确认发生在网络传输出现异常的情况 网络延迟很大时和接收方收到失序的报文时,计算机网络技术,电子科大计算机学院,软件学院,TCP的超时机制,发送方每发送一个TCP报文,将为该报文设置一个定时器,同时将
24、报文缓存。在定时器到期之前若收到接收方的确认信息,则将取消定时器,并将缓存的报文删除。 超时机制的关键是定时器的超时时长 定时器时间若太长,发送方必须要等待很长时间接收对方的ACK报文,耗费主机资源,同时也降低了通信双方的交互性和传输效率。 定时器时间若设置太短,又容易导致过早超时的现象。,计算机网络技术,电子科大计算机学院,软件学院,TCP的超时机制,定时器的时间间隔和网络的往返时延(Round Trip Time,RTT)有关 往返时延表示从发送端发送数据开始,到发送端收到来自接收端的确认(接收端收到数据后便立即发送确认)总共经历的时延 TCP采用Jacobson提出的算法来估算往返时间R
25、TT, RTT的计算公式如下: RTT= (old_RTT)(1-)SAMPLE 其中称为修正因子,表示RTT与历史值的相关程度。对于TCP而言,一般取为0.875较为合适。,计算机网络技术,电子科大计算机学院,软件学院,TCP的快速重传机制,超时重传机制存在的一个问题是超时时间间隔(Timeout)往往太长 当一个报文丢失时,发送方需要等待很长的超时时间才重发丢失的分组,这增加了端到端延时。TCP采取了一种快速重传的机制 即发送方一旦收到三个重复的ACK报文,就立刻重发报文,而不必等到定时器到期。,计算机网络技术,电子科大计算机学院,软件学院,流量控制,流量控制就是控制发送方的发送速率不会超
26、过接收方从缓冲区中处理数据的速率。TCP使用滑动窗口机制来实现流量控制,滑动窗口接收方根据自己接收数据的能力来限制发送方数据的传输。 TCP对每个通信方都有一个接收窗口(Receive Window)参数,当发送方收到TCP报文段时,从窗口字段中它可以获知接收方目前可以接收的数据量,根据这个值来调整发送方的发送速率。,计算机网络技术,电子科大计算机学院,软件学院,流量控制,糊涂窗口综合症是指接收方向发送方通告只有少量的接收缓冲区可用空间,导致发送方传送多个短报文段的情况。 例如接收方接收缓冲区已用完,如果应用程序从缓冲区读走一个字符(例如在Telnet运用时,就有这种情况),接收缓冲区可用空间
27、为1字节 接收方就通过报文段向发送方通告一个字节的接收窗口,于是发送方就发送一个字节数据的报文段 接收方又发送一个确认报文段。由于报文段是封装在IP分组中的,发送一个报文段至少需要40字节的TCP首部和IP首部。因此,为了传送一个字节,需要三个报文段。 糊涂窗口综合症的危害是:(1)浪费网络通信容量 (2)带来不必要的计算负担 避免糊涂窗口综合症可以采用推迟通知和组块技术,计算机网络技术,电子科大计算机学院,软件学院,TCP拥塞控制,拥塞:到达网络中某些路由器的分组数量过多过快,使得路由器来不及处理,从而导致分组丢失、分组延迟增大乃至整个网络性能下降的现象,严重时网络甚至完全崩溃瘫痪。 造成拥
28、塞的原因 路由器和主机的输入部分的处理速度慢 网络的局部或整体带宽容量小会加快拥塞的发生,计算机网络技术,电子科大计算机学院,软件学院,TCP拥塞控制,拥塞控制的目的是为了减缓网络中的拥塞现象,本质是控制发送方减少发送到网络上的分组数量,即降低发送方的发送速率 拥塞控制 vs. 流量控制 拥塞控制是网络全局性的问题,它涉及到网络中所有主机的收发行为 流量控制只与某对特定的发送方和接收方之间的通信有关,是一个局部性的问题 常用的拥塞控制方法有两种:网络辅助的拥塞控制和端到端的拥塞控制。 TCP就是采用的是端到端的拥塞控制方法 慢启动(Slow Start)阶段 拥塞避免(Congestion A
29、voidance)阶段,计算机网络技术,电子科大计算机学院,软件学院,TCP拥塞控制慢启动阶段,发送方以一个低速率发送数据 (通常设置为一个MSS ) 如果发送方发出的报文得到了对方的确认,那么发送方认为网络能够承受这样的发送速率,因此它将发送速率加倍 若此报文又收到确认,则再次将发送速率加倍 ,如此反复 一旦拥塞窗口(当前发送速率)超过了临界窗口,那么拥塞窗口值被设置为临界窗口的大小,然后进入拥塞避免阶段。,计算机网络技术,电子科大计算机学院,软件学院,TCP拥塞控制拥塞避免阶段,执行AIMD算法 在拥塞避免阶段,发送方发出报文得到确认后,发送速率线性递增,即拥塞窗口大小增加一个MSS 增大
30、到一定程度时(数据丢失) ,拥塞窗口需减半(乘性递减),快速降低发送速率 若下一个报文收到了确认,则拥塞窗口又线性递增,增加一个MSS 如此反复,使得拥塞窗口的变化呈现出锯齿形的形状,计算机网络技术,电子科大计算机学院,软件学院,TCP拥塞控制,拥塞控制机制总结: (1)TCP连接建立时,拥塞窗口设置为1个MSS大小(CW=1),并进入慢启动阶段,每收到接收方的确认,拥塞窗口加倍 。(2)在拥塞避免阶段,每收到一个报文的确认,拥塞窗口线性增加,直到出现报文丢失。报文一旦丢失,临界窗口变为当前拥塞窗口的一半(TW=CW/2),并如(3)一样调整拥塞窗口大小。 (3)出现报文丢失后,若是由于超时事
31、件而判断报文丢失,则拥塞窗口降为1个MSS,重新开始慢启动阶段;若是由于收到三个重复的ACK的事件而判断的报文丢失,则拥塞窗口将为当前拥塞窗口的一半(CW=CW/2),然后执行AIMD算法。,计算机网络技术,电子科大计算机学院,软件学院,5.6 工程实例,传输层报文实例 网络编程及实例,计算机网络技术,电子科大计算机学院,软件学院,传输层报文实例,UDP报文,计算机网络技术,电子科大计算机学院,软件学院,传输层报文实例,TCP报文,计算机网络技术,电子科大计算机学院,软件学院,网络编程模型,套接字便于网络应用程序使用TCP/IP的网络服务,大部分系统都提供了一组基于TCP或者UDP的应用程序编程接口(API) 常用套接字API Socket():创建套接字 Bind():为套接字绑定IP地址和端口 Listen():服务器端侦听客户端的连接请求 Connect():客户端连接服务器 Accept():服务器端接受客户端的请求 Send()和recv():收发数据,主用用于TCP套接字 Sendto()和recvfrom():收发数据,主要用于UDP套接字 Close():关闭套接字,释放资源,计算机网络技术,电子科大计算机学院,软件学院,网络编程模型,UDP编程模型,计算机网络技术,电子科大计算机学院,软件学院,TCP编程模型,