计算机网络自顶向下方法第三章讲义.

上传人:我** 文档编号:115144716 上传时间:2019-11-12 格式:PPT 页数:102 大小:3.14MB
返回 下载 相关 举报
计算机网络自顶向下方法第三章讲义._第1页
第1页 / 共102页
计算机网络自顶向下方法第三章讲义._第2页
第2页 / 共102页
计算机网络自顶向下方法第三章讲义._第3页
第3页 / 共102页
计算机网络自顶向下方法第三章讲义._第4页
第4页 / 共102页
计算机网络自顶向下方法第三章讲义._第5页
第5页 / 共102页
点击查看更多>>
资源描述

《计算机网络自顶向下方法第三章讲义.》由会员分享,可在线阅读,更多相关《计算机网络自顶向下方法第三章讲义.(102页珍藏版)》请在金锄头文库上搜索。

1、计算机网络,2014年9月 国防科技学院,2,第3章 运输层,计算机网络,3,应用层:包含大量应用普遍需要的协议,支持网络应用 FTP, SMTP, HTTP 运输层: 主机到主机数据传输,负责从应用层接收消息,并传输应用层的message,到达目的后将消息上交应用。 TCP, UDP 网络层: 从源到目的地数据报的选路 IP, 选路协议 链路层: 在邻近网元之间传输数据 PPP, 以太网 物理层: 物理层负责将链路层帧中每一位(bit)从链路的一端传输到另一端。,TCP/IP五层模型,4,我们的目的: 理解运输层服务依据的原理: Multiplexing(多路复用)/demultiplexi

2、ng(多路分解) 可靠数据传输 flow control(流量控制) congestion control(拥塞控制),学习因特网中的运输层协议: UDP: 无连接传输 TCP: 面向连接传输 TCP 拥塞控制,第3章:运输层,5,3.1 运输层服务 3.2 复用与分解 3.3 无连接传输: UDP 3.4 可靠数据传输的原理 3.5 面向连接的传输: TCP 3.6 拥塞控制的原则 3.7 TCP拥塞控制,6,在运行不同主机上应用进程之间提供逻辑通信 运输协议运行在端系统中 发送方:将应用报文( messages )划分为报文段(segments),传向网络层 接收方:将段重新装配为报文,传

3、向应用层 应用程序可供使用的运输协议不止一个 因特网:TCP和UDP,运输服务和协议,动画:多层通信实质,7,网络层: 主机间的逻辑通信 运输层: 进程间的逻辑通信 依赖、强化网络层服务,家庭类比: 12个孩子向12个孩子发信 进程 = 孩子 应用报文= 信封中的信 主机 = 家庭 运输协议 = Ann和Bill 网络层协议= 邮政服务,运输层 vs. 网络层,8,可靠的、按序的交付 (TCP) 拥塞控制 流量控制 连接建立 不可靠、无序的交付: UDP 差错检测 不可用的服务: 时延保证 带宽保证,因特网运输层协议,9,3.1 运输层服务 3.2 复用与分解 3.3 无连接传输: UDP 3

4、.4 可靠数据传输的原理 3.5 面向连接的传输: TCP 3.6 拥塞控制的原则 3.7 TCP拥塞控制,10,主机1,主机2,主机3,= 进程,= 套接字,将接收到的段交付给相应的套接字 (一路到多路,向上),从多个套接字收集数据,用首部封装数据(多路到一路,向下),多路复用/多路分解,11,主机接收IP数据报 每个数据报有源IP地址, 目的IP地址 每个数据报承载1个运输层报文段 每个段具有源、目的端口号 (回想: 对特定应用程序的周知端口号),源端口 #,目的端口 #,32 bits,应用数据 (报文),其他首部字段,TCP/UDP 报文段格式,分解工作过程,主机使用IP地址 &端口号

5、将报文段导向到相应的套接字,12,UDP套接字由二元组全面标识 : (目的地IP地址, 目的地端口号) 当主机接收UDP段时: 在段中检查目的地端口号 将UDP段定向到具有该端口号的套接字 具有不同源IP地址和/或源端口号的IP数据报(目的IP地址和端口号相同)定向到相同的套接字,无连接多路复用与分解,13,SP提供了“返回地址”,无连接多路复用与分解(续),= 进程,= 套接字,14,TCP套接字由四元组(4-tuple)标识: 源IP地址 源端口号 目的IP地址 目的端口号 接收主机使用这四个值来将段定向到适当的套接字,服务器主机可能支持许多并行的TCP套接字: 每个套接字由其自己的四元组

6、标识 Web服务器对每个连接的客户机具有不同的套接字 非持久HTTP将为每个请求具有不同的套接字,面向连接多路复用与分解,15,客户机 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,面向连接多路复用与分解(续),= 进程,= 套接字,16,客户机 IP: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,面向连接分解: 多线程Web服务器,= 进程,= 套接字,17,3.1 运输层服务 3.2

7、 复用与分解 3.3 无连接传输: UDP 3.4 可靠数据传输的原理 3.5 面向连接的传输:TCP 3.6 拥塞控制的原则 3.7 TCP拥塞控制,18,“尽力而为”服务,UDP段可能: 丢包 对应用程序交付失序 无连接 在UDP发送方和接收方之间无握手 每个UDP段的处理独立于其他段,为何要有 UDP协议? 无连接创建(它将增加时延) 简单:在发送方、接收方无连接状态 段首部小 无拥塞控制: UDP能够尽可能快地传输,UDP: 用户数据报协议,19,常用于流媒体应用程序 丢包容忍 速率敏感 其他UDP应用 DNS SNMP 经UDP的可靠传输 : 在应用层增加可靠性 应用程序特定的差错恢

8、复!,源端口#,目的端口#,32 bits,应用数据 (报文),UDP 段格式,长度,检查和,UDP段的长度,包括首部,以字节计,checksum :校验和 ,检查和,UDP报文段结构,20,发送方: 将段内容处理为16比特整数序列 检查和: 段内容的加法(反码和) 发送方将检查和放入UDP检查和字段,接收方: 计算接收的段的检查和 核对计算的检查和是否等于检查和字段的值: NO 检测到差错 YES 无差错检测到。虽然如此,还可能有差错吗?,目的: 在传输的段中检测“差错” (如比特翻转),UDP检查和,21,注意 当数字作加法时,最高位进比特位的进位需要加到结果中 例子: 两个16-bit整

9、数相加,1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1,回卷,和,检查和,检查和例子,计算步骤: 求和,回卷,求反,22,3.1 运输层服务 3.2 复用与分解 3.3 无连接传输: UDP 3.4 可靠数据传输的原理 3.5 面向连接的传输 3.6 拥塞控制的原则 3.7 TCP拥塞控制,23,在应用层、

10、运输层、数据链路层的重要性 网络中需解决的最重要的10个问题之一!,不可靠信道的特点决定了可靠数据传输协议的复杂性,可靠数据传输的原理,24,发送侧,接收侧,可靠数据传输:描述函数熟悉,25,我们将: 逐渐递增地研究可靠数据传输协议 (rdt) 的发送方和接收方 仅考虑单向数据传输 但控制信息将在两个方向流动! 使用有限状态机 (FSM)来定义发送方和接收方,引起状态变迁的事件,状态变迁所采取的行动,状态: 当位于这个“状态时”,下个状态惟一地由下个事件决定,事件,有限状态机描述方法,26,3.1 运输层服务 3.2 复用与分解 3.3 无连接传输: UDP 3.4 可靠数据传输的原理 rdt

11、1.0,rdt2.0,rdt3.0协议 3.5 面向连接的传输 3.6 拥塞控制的原则 3.7 TCP拥塞控制,27,底层信道完全可靠 无比特差错 无分组丢失 发送方、接收方具有各自的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),发送方,接收方,rdt1.0

12、:完全可靠信道上的可靠数据传输,28,Rdt2.0: 具有比特差错的信道,具有比特差错的底层信道 有比特差错 无分组丢失 数据出错后处理方式 检错重传 rdt2.0新增加机制(与rdt1.0比较) 检错 反馈:ACK, NAK 重传,29,等待来自上面的调用,snkpkt = make_pkt(data, checksum) udt_send(sndpkt),extract(rcvpkt,data) deliver_data(data) udt_send(ACK),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt),rdt_rcv(rcvpkt) & isACK(rcvp

13、kt),udt_send(sndpkt),rdt_rcv(rcvpkt) & isNAK(rcvpkt),发送方,接收方,rdt_send(data),L,发送方发出1个分组,等待接收方响应后再继续发送。(类似rdt2.0),rdt2.0: FSM描述,30,等待来自上面的调用,snkpkt = make_pkt(data, checksum) udt_send(sndpkt),extract(rcvpkt,data) deliver_data(data) udt_send(ACK),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt),rdt_rcv(rcvpkt) &

14、isACK(rcvpkt),udt_send(sndpkt),rdt_rcv(rcvpkt) & isNAK(rcvpkt),等待来自下面的调用,rdt_send(data),L,rdt2.0: 无差错时的操作,31,等待来自上面的调用,snkpkt = make_pkt(data, checksum) udt_send(sndpkt),extract(rcvpkt,data) deliver_data(data) udt_send(ACK),rdt_rcv(rcvpkt) & notcorrupt(rcvpkt),rdt_rcv(rcvpkt) & isACK(rcvpkt),udt_sen

15、d(sndpkt),rdt_rcv(rcvpkt) & isNAK(rcvpkt),等待来自下面的调用,rdt_send(data),L,rdt2.0: 有差错时的情况,32,如果ACK/NAK受损,将会出现何种情况? 发送方不知道在接收方会发生什么情况! 不能只是重传:可能导致重复( duplicate ),处理重复(序号机制): 发送方对每个分组增加序列号 如果ACK/NAK受损,发送方重传当前的分组 接收方丢弃(不再向上交付)重复的分组,rdt2.0有重大的缺陷!,33,等待来自上面的调用0,sndpkt = make_pkt(0, data, checksum) udt_send(sn

16、dpkt),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(rcvpkt) & notcorrupt(rcvpkt) & isACK(rcvpkt),udt_send(sndpkt),rdt_rcv(rcvpkt) & ( corrupt(rcvpkt) | isNAK(rcvpkt) ),rdt_rcv(rcvpkt) & notco

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号