[计算机网络:自顶向下方方法](中文版ppt课件)第三章.ppt
《[计算机网络:自顶向下方方法](中文版ppt课件)第三章.ppt》由会员分享,可在线阅读,更多相关《[计算机网络:自顶向下方方法](中文版ppt课件)第三章.ppt(121页珍藏版)》请在三一办公上搜索。
1、运输层,1,第3章 运输层Transport Layer,计算机网络:自顶向下方法 (原书第三版)陈鸣译,机械工业出版社,2005年Computer Networking: A Top Down Approach Featuring the Internet, 3rd edition. Jim Kurose, Keith RossAddison-Wesley, July 2004.,运输层,2,第3章:运输层,我们的目的: 理解运输层服务依据的原理:复用/分解可靠数据传输流量控制拥塞控制,学习因特网中的运输层协议:UDP: 无连接传输TCP: 面向连接传输TCP 拥塞控制,运输层,3,第3章
2、要点,3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原则rdt1rdt2rdt3流水线协议,3.5 面向连接的传输: TCP报文段结构可靠数据传输流量控制连接管理3.6 拥塞控制的原则3.7 TCP拥塞控制机制TCP吞吐量TCP公平性时延模型,运输层,4,运输服务和协议,在运行不同主机上应用进程之间提供逻辑通信运输协议运行在端系统中发送方:将应用报文划分为段,传向网络层接收方:将段重新装配为报文,传向应用层应用可供使用的运输协议不止一个因特网:TCP和UDP,运输层,5,运输层 vs. 网络层,网络层: 主机间的逻辑通信运输层: 进程间的逻辑通信依赖、强
3、化网络层服务,家庭类比:12个孩子向12个孩子发信进程 = 孩子应用报文= 信封中的信主机 = 家庭运输协议 = Ann和Bill网络层协议= 邮政服务,运输层,6,因特网运输层协议,可靠的、按序的交付 (TCP)拥塞控制流量控制连接建立不可靠、不按序交付: UDP“尽力而为”IP的不提供不必要服务的扩展不可用的服务: 时延保证带宽保证,运输层,7,第3章 要点,3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原则rdt1rdt2rdt3流水线协议,3.5 面向连接的传输: TCP报文段结构可靠数据传输流量控制连接管理3.6 拥塞控制的原则3.7 TCP拥
4、塞控制机制TCP吞吐量TCP公平性时延模型,运输层,8,Internet 层的复用与分解,运输层,9,复用/分解,= 进程,= 套接字,将接收到的段交付给正确的套接字,从多个套接字收集数据,用首部封装数据(以后用于分解 ),运输层,10,分解工作过程,主机接收IP数据报每个数据报有源无连接, 目的地无连接每个数据报承载1个运输层段每个段具有源、目的端口号 (回想: 对特定应用程序的周知端口号)主机使用IP地址 &端口号将段定向到适当的套接字,源端口 #,目的端口 #,32 bits,应用数据(报文),其他首部字段,TCP/UDP 段格式,运输层,11,无连接分解,生成具有端口号的套接字:Dat
5、agramSocket mySocket1 = new DatagramSocket(99111);DatagramSocket mySocket2 = new DatagramSocket(99222);UDP套接字由二元组标识 :(目的地IP地址, 目的地端口号),当主机接收UDP段时:在段中检查目的地端口号将UDP段定向到具有该端口号的套接字具有不同源IP地址和/或源端口号的IP数据报 定向到相同的套接字,运输层,12,无连接分解(续),DatagramSocket serverSocket = new DatagramSocket(6428);,SP提供了“返回地址”,运输层,13,面
6、向连接分解,TCP套接字由四元组标识: 源IP地址源端口号目的IP地址目的端口号接收主机使用这四个值来将段定向到适当的套接字,服务器主机可能支持许多并行的TCP套接字:每个套接字由其自己的四元组标识Web服务器对每个连接的客户机具有不同的套接字非持久HTTP将为每个请求具有不同的套接字,运输层,14,面向连接分解 (续),客户机IP:B,服务器IP: C,SP: 9157,DP: 80,D-IP:C,S-IP: A,D-IP:C,S-IP: B,D-IP:C,S-IP: B,运输层,15,面向连接分解: 多线程Web服务器,客户机IP:B,服务器IP: C,SP: 9157,DP: 80,P4
7、,D-IP:C,S-IP: A,D-IP:C,S-IP: B,D-IP:C,S-IP: B,运输层,16,第3章 要点,3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原则rdt1rdt2rdt3流水线协议,3.5 面向连接的传输: TCP报文段结构可靠数据传输流量控制连接管理3.6 拥塞控制的原则3.7 TCP拥塞控制机制TCP吞吐量TCP公平性时延模型,运输层,17,UDP: 用户数据报协议 RFC 768,“没有不必要的,” “基本要素” 互联网传输协议“尽力而为”服务,UDP段可能:丢包对应用程序交付失序无连接:在UDP发送方和接收方之间无握手每个
8、UDP段的处理独立于其他段,为何要有 UDP协议?无连接创建(它将增加时延)简单:在发送方、接收方无连接状态段首部小无拥塞控制: UDP能够尽可能快地传输,运输层,18,UDP: 其他,常用于流式多媒体应用丢包容忍速率敏感其他UDP应用DNSSNMP经UDP的可靠传输 : 在应用层增加可靠性应用程序特定的差错恢复!,源端口#,目的端口#,32 bits,应用数据(报文),UDP 段格式,长度,检查和,UDP段的长度,包括首部,以字节计,运输层,19,UDP检查和,发送方:将段内容处理为16比特整数序列检查和: 段内容的加法(反码和)发送方将检查和放入UDP检查和字段,接收方:计算接收的段的检查
9、和核对计算的检查和是否等于检查和字段的值:NO 检测到差错YES 无差错检测到。虽然如此,还可能有差错吗?详情见后,目的: 在传输的段中检测“差错” (如比特翻转),运输层,20,互联网检查和例子,注意当数字作加法时,最高位进比特位的进位需要加到结果中例子: 两个16-bit整数相加,1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 01 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 11 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 11 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 01 0 1 0 0 0 1 0 0 0 1 0 0
10、 0 0 1 1,回卷,和,检查和,运输层,21,第3章 要点,3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原则rdt1rdt2rdt3流水线协议,3.5 面向连接的传输: TCP报文段结构可靠数据传输流量控制连接管理3.6 拥塞控制的原则3.7 TCP拥塞控制机制TCP吞吐量TCP公平性时延模型,运输层,22,可靠数据传输的原则,在应用层、运输层、数据链路层的重要性重要的网络主题中的最重要的10个之一!,不可靠信道的特点决定了可靠数据传输 协议 (rdt) 的复杂性,运输层,23,可靠数据传输: 基本概念,发送侧,接收侧,运输层,24,可靠数据传输:
11、 基本概念,我们将:增强研发发送方,可靠数据传输协议 (rdt) 的接收方侧仅考虑单向数据传输但控制信息将在两个方向流动!使用有限状态机 (FSM)来定义发送方和接收方,引起状态变迁的事件,状态变迁所采取的行动,状态: 当位于这个“状态时”,下个状态惟一地由下个事件决定,运输层,25,第3章 要点,3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原则rdt1rdt2rdt3流水线协议,3.5 面向连接的传输: TCP报文段结构可靠数据传输流量控制连接管理3.6 拥塞控制的原则3.7 TCP拥塞控制机制TCP吞吐量TCP公平性时延模型,运输层,26,Rdt1
12、.0: 经可靠信道的可靠传输,底层信道非常可靠无比特差错无分组丢失装发送方、接收方的单独FSM:发送方将数据发向底层信道接收方从底层信道读取数据,Wait for call from above,packet = make_pkt(data)udt_send(packet),rdt_send(data),extract (packet,data)deliver_data(data),Wait for call from below,rdt_rcv(packet),发送方,接收方,运输层,27,第3章 要点,3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原
13、则rdt1rdt2rdt3流水线协议,3.5 面向连接的传输: TCP报文段结构可靠数据传输流量控制连接管理3.6 拥塞控制的原则3.7 TCP拥塞控制机制TCP吞吐量TCP公平性时延模型,运输层,28,Rdt2.0: 具有比特差错的信道,underlying channel may flip bits in packetchecksum to detect bit errorsthe question: how to recover from errors:acknowledgements (ACKs): receiver explicitly tells sender that pkt r
14、eceived OKnegative acknowledgements (NAKs): receiver explicitly tells sender that pkt had errorssender retransmits pkt on receipt of NAKnew mechanisms in rdt2.0 (beyond rdt1.0):error detectionreceiver feedback: control msgs (ACK,NAK) rcvr-sender,运输层,29,rdt2.0: FSM规格参数,等待来自上面的调用,snkpkt = make_pkt(dat
15、a, checksum)udt_send(sndpkt),extract(rcvpkt,data)deliver_data(data)udt_send(ACK),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt),rdt_rcv(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),rdt_rcv(rcvpkt) & isNAK(rcvpkt),发送方,接收方,rdt_send(data),L,运输层,30,rdt2.0: 无差错时的操作,等待来自上面的调用,snkpkt = make_pkt(data, checksum)udt_send(s
16、ndpkt),extract(rcvpkt,data)deliver_data(data)udt_send(ACK),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt),rdt_rcv(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),rdt_rcv(rcvpkt) & isNAK(rcvpkt),等待来自下面的调用,rdt_send(data),L,运输层,31,rdt2.0: 有差错时的情况,等待来自上面的调用,snkpkt = make_pkt(data, checksum)udt_send(sndpkt),extract(rcvpk
17、t,data)deliver_data(data)udt_send(ACK),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt),rdt_rcv(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),rdt_rcv(rcvpkt) & isNAK(rcvpkt),等待来自下面的调用,rdt_send(data),L,运输层,32,rdt2.0有重大的缺陷!,如果ACK/NAK受损,将会出现何种情况?发送方不知道在接收方会发生什么情况!不能只是重传:可能导致冗余,处理冗余: 发送方对每个分组增加序列号如果ACK/NAK受损,发送方重传当前的分组接
18、收方丢弃(不再向上交付)冗余分组,发送方发送一个分组,然后等待接收方响应,运输层,33,rdt2.1: 发送方, 处理受损的ACK/NAK,等待来自上面的调用0,sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt),rdt_send(data),udt_send(sndpkt),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) ),sndpkt = make_pkt(1, data, checksum)udt_send(sndpkt),rdt_send(data),rdt_rcv(rcvpk
19、t) & notcorrupt(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isNAK(rcvpkt) ),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt),L,L,运输层,34,rdt2.1: 接收方,处理受损的ACK/NAK,sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt),rdt_rcv(rcvpkt) & not corrupt(rcvpkt) & has_seq0(rcvpk
20、t),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq1(rcvpkt),extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq0(rcvpkt),extract(rcvpkt,data)deliver_data(data)sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt),rdt_rcv(rcvpkt)
21、 & (corrupt(rcvpkt),sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt),rdt_rcv(rcvpkt) & not corrupt(rcvpkt) & has_seq1(rcvpkt),rdt_rcv(rcvpkt) & (corrupt(rcvpkt),sndpkt = make_pkt(ACK, chksum)udt_send(sndpkt),sndpkt = make_pkt(NAK, chksum)udt_send(sndpkt),运输层,35,rdt2.1: 讨论,发送方:序号seq # 加入分组中两个序号seq. #s
22、(0,1) 将够用. ( 为什么?)必须检查是否收到的ACK/NAK受损 状态增加一倍状态必须“记住”是否“当前的”分组具有0或1序号,接收方:必须检查是否接收到的分组是冗余的状态指示是否0或1是所期待的分组序号seq #注意: 接收方不能知道是否它的最后的ACK/NAK在发送方已经接收OK,运输层,36,rdt2.2: 一种无NAK的协议,与rdt2.1一样的功能,仅使用ACK代替NAK,接收方对最后正确接收的分组发送ACK接收方必须明确地包括被确认分组的序号在发送方冗余的ACK导致如同NAK相同的动作:重传当前分组,运输层,37,rdt2.2: 发送方, 接收方片段,sndpkt = ma
23、ke_pkt(0, data, checksum)udt_send(sndpkt),rdt_send(data),udt_send(sndpkt),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) | isACK(rcvpkt,1) ),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt,0),发送方FSM片段,rdt_rcv(rcvpkt) & notcorrupt(rcvpkt) & has_seq1(rcvpkt),extract(rcvpkt,data)deliver_data(data)sndpkt = mak
24、e_pkt(ACK1, chksum)udt_send(sndpkt),rdt_rcv(rcvpkt) & (corrupt(rcvpkt) | has_seq1(rcvpkt),udt_send(sndpkt),接收方FSM片段,L,运输层,38,第3章 要点,3.1 运输层服务3.2 复用与分解3.3 无连接传输: UDP3.4 可靠数据传输的原则rdt1rdt2rdt3流水线协议,3.5 面向连接的传输: TCP报文段结构可靠数据传输流量控制连接管理3.6 拥塞控制的原则3.7 TCP拥塞控制机制TCP吞吐量TCP公平性时延模型,运输层,39,rdt3.0: 具有差错和丢包的信道,新假设
25、: 下面的信道也能丢失分组(数据或ACK)检查和、序号、重传将是有帮助的,但不充分,方法: 发送方等待ACK一段“合理的”时间如在这段时间没有收到ACK则重传如果分组(或ACK)只是延迟(没有丢失):重传将是冗余的,但序号的使用已经处理了该情况接收方必须定义被确认的分组序号需要倒计时定时器,运输层,40,rdt3.0发送方,sndpkt = make_pkt(0, data, checksum)udt_send(sndpkt)start_timer,rdt_send(data),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) |isACK(rcvpkt,1) ),snd
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机网络:自顶向下方方法 计算机网络 向下 方法 中文版 ppt 课件 第三
链接地址:https://www.31ppt.com/p-1465650.html