第3章 运输层.ppt
《第3章 运输层.ppt》由会员分享,可在线阅读,更多相关《第3章 运输层.ppt(162页珍藏版)》请在一课资料网上搜索。
1、,1,第 3 章 运输层,主要内容: 运输层服务 运输层和网络层的关系 两个实体如何可靠地通信 拥塞控制技术,位于应用层和网络层之间。 为主机上的应用进程提供直接的通信服务。 接受网络层提供的服务,2,3.1 运输层服务 3.2 复用与分解 3.3 无连接传输: UDP 3.4 可靠数据传输的原理 3.5 面向连接的传输: TCP 3.6 拥塞控制的原理 3.7 TCP拥塞控制 小结,主要章节,3,3.1 运输层服务,运输层协议: 为运行在不同主机上的应用进程提供逻辑通信功能(主机好像直接相连)。即端到端传输。 进程之间使用逻辑通信功能彼此发送报文,无需考虑具体物理链路。,应用层 运输层 网络
2、层 数据链路层 物理层,网络层 数据链路层 物理层,应用层 运输层 网络层 数据链路层 物理层,网络层 数据链路层 物理层,网络层 数据链路层 物理层,网络层 数据链路层 物理层,网络层 数据链路层 物理层,逻辑端到端传输,进程,进程,4,运输层协议运行在端系统,不在路由器中。 发送方:将应用进程的报文划分成若干段,封装后传给网络层。 接收方:将网络层上传的报文段,重新装配为报文,传向应用层。 路由器只根据网络层字段而动作。,3.1.1 运输层和网络层的关系 3.1.2 运输层概述,5,3.1.1 运输层和网络层的关系,运输层位于网络层上。 网络层提供主机之间的逻辑通信。 运输层为运行在不同主
3、机上的进程之间提供逻辑通信; 依赖、强化网络层服务,6,家庭通信类比,两个家庭的多个堂兄弟姐妹之间互相通信。 每家有一个孩子负责收发邮件,分别为Ann和Bill。 每封信通过传统的邮政服务发送。 邮政服务为两个家庭间提供逻辑通信:将信件从一家送往另一家。 Ann和Bill为堂兄弟姐妹之间提供逻辑通信:向兄弟姐妹收取或交付信件。 Ann和Bill是端到端交付过程的一部分(即端系统部分),是邮件服务。,7,与网络术语对比,应用报文 = 信 进程 = 多个孩子 运输协议 = Ann和Bill 网络层协议 = 邮政服务(运输车),主机 = 家庭,8,说明,Ann和Bill 在各自家里工作,不参与邮件分
4、拣及传递: 运输层协议工作在端系统中,将来自应用进程的报文移动到网络边界(网络层),不考虑报文在网络核心如何传递; 中间路由器既不处理也不识别运输层加在报文上的任何信息。 Ann和Bill 外出,其他人接替工作,服务方式、效果可能不同。 计算机网络中有多种运输层协议,每种协议为应用程序提供不同的服务模型。,9,说明, Ann和Bill能够提供的服务要受到邮政服务提供服务的限制。 运输层协议所能提供的服务受底层网络协议服务模型的限制。如,时延和带宽保证。 某些特定服务既使底层网络协议不提供,运输层协议也能提供。 如,当底层网络协议是不可靠的(分组丢失、混乱和重复),运输层同样能为应用程序提供可靠
5、的传输服务。,10,3.1.2 因特网运输层概述,因特网运输层协议: UDP(用户数据报协议):为应用程序提供不可靠、无连接的服务。 TCP(传输控制协议):为应用程序提供可靠的、面向连接的服务。 术语: 报文段(segment):运输层分组。 数据报(datagram):网络层分组。,11,因特网网络层,IP(网际协议):为主机之间提供逻辑通信。 IP服务模型:尽力交付服务。 尽最大的努力在通信的主机之间交付报文段,但不保证按序交付或数据的完整性。属于不可靠服务。 IP地址:主机的网络层地址。每台主机有一个。,12,UDP和TCP的服务模型,将两个端系统间IP的交付服务扩展为运行在两个端系统
6、上的进程之间的交付服务。 即主机间交付扩展到进程间的交付。 可提供完整性检查。 UDP是不可靠服务。 TCP提供可靠数据传输及拥塞控制。,运输层的多路复用与分解,13,3.2 多路复用与分解,将网络层所提供的主机到主机交付服务扩展到在主机上运行的应用程序到应用程序的交付服务。 主机上可以有多个应用进程运行。 当运输层从底层网络接收数据时,应能正确地定向到相应的一个进程(套接字),数据报,14,套接字,从网络向进程传递数据,或从进程向网络传递数据的门户。 运输层和应用进程通过套接字来传递数据。 主机上的套接字可以有多个,每个套接字都有惟一的标识符(格式取决于UDP或TCP)。,= 进程,= 套接
7、字,15,多路复用与分解过程,多路复用(发送主机): 从不同套接字收集数据块,并为每个数据块封装上首部信息,生成报文段,传递到网络层。 多路分解(接收主机): 将报文段中的数据交付到正确的套接字。即接收方运输层从报文段的多个字段中,识别出套接字,并将报文段定向到该套接字。 例图3-2,进程P3向进程P1发送。,16,主机1,主机2,主机3,主机1:运输层收集套接字输出的数据,形成运输层报文段,将其传递给下面的网络层(多路复用) 主机2:运输层将从其网络层收到的报文段多路分解后通过相应的套接字交给其上的P1进程。,例图3-2,进程P3向进程P1发送。,17,目的主机的分解过程,当报文段到达主机时
8、,运输层检查报文段中的目的端口号,将其定向到相应的套接字。 报文段中的数据通过套接字进入其所连接的进程。,18,报文段格式,端口号:主机上的每个套接字分配一个端口号。16位(065535)。 01023为周知端口号,保留给固定的应用程序。 开发一个新应用时,需选择一个端口号。,源端口 #,目的端口 #,32 bits,应用数据 (报文),其他首部字段,TCP/UDP 段格式,19,1、无连接的多路复用与分解,创建UDP套接字:两种方法 自动为该套接字分配一个端口号。如 DatagramSocket mySocke = new DatagramSocket() 从102465535的号码中分配一
9、个主机尚未使用的UDP端口号。 直接为套接字指定一个特定的端口号。 如 DatagramSocket mySocke = new DatagramSocket (19157) 客户机端:自动分配端口号 服务器端:分配一个特定的端口号。若使用“周知协议”,必须分配一个相应的周知端口号。,20,发送方多路复用: 运输层创建一个报文段(数据、源端口号、目的端口号) 传递到网络层; 网络层将该报文段封装到IP报文中,并尽力交付给接收主机,接收方多路分解: UDP报文段到达接收方 通过报文段中的目的端口号,将报文段定向(多路分解)到相应的套接字 并交给相应进程。,21,例,Client IP:B,cli
10、ent IP: A,server IP: C,SP 提供 “返回地址”,9157,6428,5775,两对通信:AC、BC,22,例,主机A中的一个进程向主机B中的另一进程发送一个应用程序数据块。,19157,46428,主机A的多路复用: 运输层创建一个报文段(数据、源端口号、目的端口号) 传递到网络层; 网络层将该报文段封装到IP报文中,并尽力交付给接收主机,主机B的多路分解: UDP报文段到达接收方,主机B通过检查该报文段中的目的端口号,将报文段定向(多路分解)到相应的套接字,并交给相应进程。,23,说明,UDP套接字组成: 二元组(目的IP地址,目的端口号) 具有不同源套接字,但具有相
11、同目的套接字的UDP报文段,可通过相同套接字定向到相同的目的进程(多对一)。 源端口号的用途:目的方回发报文段中的“返回地址”。,24,2、面向连接的多路复用与分解,TCP套接字: 四元组 (源IP地址,源端口号,目的IP地址,目的端口号) 目的主机使用全部四个值来将收到的TCP报文段定向(分解)到相应的套接字。 两个具有不同源套接字的TCP报文段,将被定向到两个不同的套接字。,25,TCP连接及分解,服务器应用程序在某个端口上等待TCP客户机连接建立请求。如 ServerSocket welcomeSocke = new serverSocket(6789) TCP客户机在相应端口上产生一个
12、连接建立请求报文段。 Socket clientSocke = new Socket (serverHostName,6789) 当服务器收到客户机的连接请求后,通知服务器进程,并创建一个连接套接字。如, Socket connectionSocket = WelcomeSocket.accept() 连接套接字通过4个值来标识。 TCP连接完成后,客户机和服务器可相互发送数据。 当一个TCP报文段到达主机时,根据4个字段值的来定向(多路分解)到相应的套接字。,26,说明,一个web服务器可以同时与多个客户机连接,并产生多个进程。 每个进程都有自己的连接套接字,通过这些套接字可以收到HTTP请
13、求和发送HTTP响应。 高性能Web服务器通常只使用一个进程,可以为每个新连接创建一个新线程(一个轻量级的子进程)。 持久HTTP:客户机与服务器之间经由同一个服务器套接字交换HTTP报文。 非持久HTTP:每一对请求/响应,都要创建一个新的TCP连接,响应后即关闭。影响Web服务器的性能。,27,例,客户机 IP:C,服务器 IP: B,SP: 9157,DP: 80,D-IP:B,S-IP: A,D-IP:B,S-IP: C,D-IP:B,S-IP: C,主机C向服务器B发起两个HTTP会话;主机A向服务器B发起一个HTTP会话。,产生三个进程,28,例:多线程Web服务器,客户机 IP:
14、B,服务器IP: C,SP: 9157,DP: 80,P4,D-IP:C,S-IP: A,D-IP:C,S-IP: B,D-IP:C,S-IP: B,一个进程三个线程,29,例,主机C向服务器B发起两个HTTP会话;主机A向服务器B发起一个HTTP会话。,26145,7532,26145,80,30,3.3 无连接运输:UDP,“尽力而为”服务,UDP段可能: 丢包 对应用程序交付失序 无连接: 在UDP发送方和接收方之间无握手 每个UDP段独立处理,31,使用 UDP协议的原因,无连接创建:减少时延。 简单:无连接 段首部小:传输开销小。 无拥塞控制: UDP能够尽可能快地传输。,32,主要
15、应用,如图3-6。 流式多媒体 DNS SNMP,经UDP的可靠传输 :在应用层增加可靠性,实现特定的差错恢复!,33,3.3.1 UDP报文段结构,源端口#,目的端口#,32 bits,应用数据 (报文),UDP 段格式,长度,检查和,UDP段的长度,包括首部,以字节计,34,3.3.2 UDP检查和,发送方: 将数据的每两个字节当作一个16位的整数,可分成若干整数; 将所有16 位的整数求和 对得到的和逐位取反,作为检查和,放在报文段首部,一起发送。,用于检查所传输的报文段中的比特差错 (如比特翻转)。,接收方: 对接收到的信息 (包括检查和)求和 全“1”:数据无错; 其中有“0”:数据
16、出错 对接收到的信息 (不包括检查和)求和 核对计算的检查和是否等于检查和字段的值。,35,0 1 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0,例子,注意 作加法时,最高位的进位要回加到结果中。 例,有三个16 比特的字:,回卷,和,检查和(取反),无差错,和为:,1 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1
17、,1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,36,3.4 可靠数据传输的原理,可靠数据传输的问题在运输层、链路层及应用层都会出现。 最重要的10个网络主题中之一! 可靠数据传输的框架,图3-8。,37,提供给上层的服务,数据通过一条可靠的信道传输。 即传输的数据不出错、丢失,并按照发送顺序传送。,应用层,网络层,运输层,可靠传输,38,服务实现,设计可靠数据传输协议 低层信道不太可靠,通过使用可靠数据传输协议来保证可靠的数据传输。 分别设计可靠数据传输协议的发送方和接收方。,网络层,运输层,不可靠传输,39,发送方: 通过rdt_send()函数调用可靠数据传输协议的发送
18、方(rdt表示“可靠数据传输”协议)。 udt_send()用来发送分组给对方(udt表示“不可靠数据传输”)。 接收方: 当一个分组从信道抵达时,调用rdt_rcv()接收; 调用deliver_data()将数据交付给上层。,rdt_send(),udt_send(),rdt_rcv(),deliver_data(),40,说明,只考虑单向数据传输,数据传输从发送方到接收方 发送方和接收方可以来回交换控制分组。 使用有限状态机 (FSM)来定义发送方和接收方。 3.4.1 构造可靠的数据传输协议 3.4.2 流水线可靠数据传输协议 3.4.3 Go-Back-N(GBN) 3.4.4 选择
19、性重传 (SR),41,有限状态机 (FSM),箭头:表示协议从一个状态变迁到另一个状态。 横线上方:表示引起变迁的事件; 横线下方:表示事件发生时所采取的动作; :表示没有事件或未采取动作 虚线:表示FSM的初始状态。,42,3.4.1 构造可靠的数据传输协议,完全可靠信道上的可靠数据传输 具有比特差错信道上的可靠的数据传输 具有比特差错的丢包信道上的可靠的数据传输 停止等待协议流程,43,1、经可靠信道上的可靠数据传输:rdt 1.0,假设: 底层信道完全可靠:数据传送不出错不丢失; 收发双方速率匹配:接收方接收数据的速率和发送方发送数据一样快。,所有的分组都是从发送方流向接收方。 接收方
20、不需反馈信息给发送方,因为不会发生任何差错。,rdt1.0发送和接收方的有限状态机 FSM,如图3-9。,44,发送方:将数据发向底层信道 从上层接受数据rdt_send(data) 封装成分组make_pkt(data) 将分组发送到信道中udt_send(packet) 接收方:从底层信道读取数据 从底层信道接收一个分组rdt_rcv(packet) 解封取出数据extract(packet,data) 数据传给上层deliver_data(data),等待上层调用,packet = make_pkt(data) udt_send(packet),rdt_send(data),extrac
21、t (packet,data) deliver_data(data),rdt_rcv(packet),发送方,接收方,等待下层调用,封装,解封,上传,45,2、比特差错信道上的可靠数据传输:rdt2.0,信道不完全可靠,有可能产生比特错,但不丢包 所有分组按发送顺序被接收(有些比特可能出错)。,类比例:打电话传递一条长信息,收听者: 听清每句话后说“OK”(肯定确认); 听到不清楚的话,要求对方重复说“请重复一遍”(否定确认)。,如何从错误中恢复?,46,肯定、否定确认作用,肯定确认: 告诉发送方内容被正确接收。 否定确认:告诉发送方内容出错需要重传。 基于重传机制的可靠数据传输协议称为自动重
22、传请求协议ARQ(Automatic Repeat request),47,ARQ协议处理比特差错机制,差错检测: 使接收方检测出是否出现比特差错。 如采用差错检测和纠错技术,使接收方能够进行差错检测并纠正。 需要给分组附加额外的比特一起发送。如rdt2.0协议,分组增加检验和checksum字段。,48,ARQ协议处理比特差错机制,接收方反馈: 使发送方知道发送的分组是否被正确接收。 通过接收方回送肯定确认(ACK)和否定确认(NAK) 分组完成。 如rdt2.0协议,接收方将向发送方回送ACK(“1”比特)或NAK(“0”比特)分组。 重传: 接收方收到有差错的分组时,通知发送方重传该分组
23、。,49,rdt2.0的FSM,extract(rcvpkt,data) deliver_data(data) udt_send(ACK),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt),接收方,rdt_rcv(rcvpkt) & isNAK(rcvpkt),等待来自上面的调用,snkpkt = make_pkt(data, checksum) udt_send(sndpkt),rdt_rcv(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),发送方,rdt_send(data),L,采用了差错检测、肯定确认与否定确认及重传。,50,r
24、dt_rcv(rcvpkt) & isNAK(rcvpkt),等待来自上面的调用,snkpkt = make_pkt(data, checksum) udt_send(sndpkt),rdt_rcv(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),发送方,rdt_send(data),L,等待上层数据 上层数据传来rdt_send(data) 计算校验和,封装成分组make_pkt(data,checksum) 发送分组udt_send(sndpkt),收到ACK分组 rdt_rcv(rcvpkt) & is ACK(rcvpkt) 返回初始状态 收到NAK分
25、组rdt_rcv(rcvpkt) & is NAK(rcvpkt) 重传上次发送的分组udt_send(sndpkt) 等待ACK或NAK,51,rdt_rcv(rcvpkt) & isNAK(rcvpkt),等待来自上面的调用,snkpkt = make_pkt(data, checksum) udt_send(sndpkt),rdt_rcv(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),发送方,rdt_send(data),L,说明 当发送方在等待ACK或NAK状态时,不能从上层得到数据,直到收到ACK离开该状态。 发送方在收到ACK分组之前,不会发送任
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 运输层 运输
