实验四-传输层参考答案 计算机学院教学实验中心 2006-6-10.

Slides:



Advertisements
Similar presentations
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
Advertisements

高级服务器设计和实现 1 —— 基础与进阶 余锋
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
NAT与ICMP交互.
计算机网络课程总结 一、计算机网络基础 计算机网络定义和功能、基本组成 OSI/RM参考模型(各层的功能,相关概念, 模型中数据传输 等)
第 12 章 UDP 與 TCP.
Chapter 12 UDP 與 TCP.
一、数据链路层的设计问题 1. 向网络层提供的服务
第 7 章 运输层 基本内容 传输层的概念,TCP/IP体系中的传输层,端口的概念,用户数据报协议UDP,传输控制协议TCP,TCP报文格式、数据的编号与确认、流量控制、拥塞控制、重传机制、TCP的连接管理。 重点掌握 TCP/IP体系中的传输控制协议TCP:TCP报文格式、数据的编号与确认、流量控制、拥塞控制、重传机制、TCP的连接管理。
计算机网络(第 5 版) 第 5 章 运输层 课件制作人:谢希仁.
主页:xgxy.cug.edu.cn/rjgcx/lzw
第17章 实现路由器.
项目四 组建跨地区网络 授课教师:肖颖.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
传输层是整个协议层次的核心,其任务是在源机器和目标机器之间提供可靠的、性价比合理的数据传输功能,并与当前所使用的物理网络完全独立
第 12 章 UDP 與 TCP.
第3讲 网络安全协议基础 此为封面页,需列出课程编码、课程名称和课程开发室名称。
TCP/UDP協定 10-1 TCP/UDP簡介 10-7 採用TCP或UDP 10-2 連接埠編號 10-8 UDP標頭格式
利用Wireshark观察网络报文 2015.
第九章 传输控制协议 (TCP).
Chapter 3 Transport Layer
管理信息结构SMI.
网络常用常用命令 课件制作人:谢希仁.
第十讲 TCP协议 协议概述 报文段格式 差错控制 流控和拥塞控制 TCP连接管理 TCP性能问题 TCP软件设计 2018/12/7
Windows网络操作系统管理 ——Windows Server 2008 R2.
Chapter 7 传输层.
计算机网络(第 5 版) 第 5 章 传输层.
计算机网络 Computer Network
Chapter 12 傳輸控制通訊協定.
计算机网络 第 7 章 运输层 课件制作人:谢希仁.
實驗目的 明瞭可靠傳輸層的基礎觀念 TCP協定下區段資料傳送的格式
Online job scheduling in Distributed Machine Learning Clusters
第8章 传输层 8.1传输层服务 8.2端口寻址 8.3建立连接 8.4Internet中的传输层协议 8.5Berkeley Socket
利用Arduino制作定向装置 核科学与技术系 崔伟毅 梁嘉祺
第 12 章 UDP 與 TCP 著作權所有 © 旗標出版股份有限公司.
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
分布式程序设计 姚斌 计算机科学与工程系 上海交通大学.
網路遊戲版 幸福農場168號.
第7章 传输层协议——TCP与UDP 任课教师 卢豫开.
使用WireShark解析TCP封包 Computer Network Lab2.
  传输控制协议 TCP TCP TCP 发送端 接收端 应用进程 应用进程 向发送缓存 写入数据块 从接收缓存 读取数据块 … …
顺序表的删除.
DQMClientDim.cxx及双光子练习
主要内容: 无线局域网的定义 无线传输介质 无线传输的技术 WLAN的架构 无线网络搭建与配置 无线网络加密配置
WPT MRC. WPT MRC 由题目引出的几个问题 1.做MRC-WPT的多了,与其他文章的区别是什么? 2.Charging Control的手段是什么? 3.Power Reigon是什么东西?
VB与Access数据库的连接.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
Select模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang 官网地址:
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第六章 Excel的应用 一、Excel的单元格与区域 1、单元格:H8, D7, IV26等 2、区域:H2..D8, HS98:IT77
第4章 Excel电子表格制作软件 4.4 函数(一).
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
数据报分片.
无线网络特性展现 张琦.
郑 昀 应用开发事业部 神州泰岳 SIP多方会话消息 之实例讲解 郑 昀 应用开发事业部 神州泰岳
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
§2 方阵的特征值与特征向量.
WSAAsyncSelect 模型 本节内容 视频提供:昆山爱达人信息技术有限公司 视频录制:yang
第5章 运输层.
三角 三角 三角 函数 余弦函数的图象和性质.
第7章 传输层协议——TCP与UDP 任课教师 卢豫开.
质量控制(QC)模式 BrookFIELD.
Chapter 3 Transport Layer
Presentation transcript:

实验四-传输层参考答案 计算机学院教学实验中心 2006-6-10

总览:动静结合 TCP协议的理解 静:TCP报文格式,首部各字段; 动:协议运行的各种机制 连接建立、释放 传输管理:定时器管理即超时与重传机制 流量控制:滑动窗口机制 拥塞控制:慢启动、拥塞避免、快重传、快恢复 糊涂窗口综合症避免:发送端Nagle算法、接收端推迟确认技术

数据传输要点(兼解疑) TCP是全双工的,即TCP每端既可发送数据也可接收数据。每个TCP连接中都有两条数据“流” , “确认号”字段只用于表示(确认)自己所接收的“数据流”的数据序号,且每次在自己发送数据时捎带确认 “窗口”字段只用于表示给自己所接收的 “数据流”的接收窗口大小。 实验场景设置只启用了TCP每一端的一个功能,即一端只发送数据另一端只接收数据,并从这个角度将TCP两端分别称作发送方和接收方。 相当于只启用了TCP的单工功能,只启用和分析了TCP连接中的一个“流”

题1参考答案 连接建立方式:三次握手;PCA:主动打开方(C);PCB:被动打开方(S)。 先点发送后点接收 原因: 连接没法成功 注意:(有时先点发送后点接收间隔很短也会连接成功,这是因为发出SYN报文后一段时间没有收到SYN+ACK报文,会重复几次发送SYN报文试探) 原因: C/S模式,Server没启,Client也就连接不上了。 如果没有应用进程被动打开,则主动打开的应用进程也就无法成功建立起一个连接。 结合看TCP状态机,必须有被动打开方才能连

TCP的状 态变迁图 参考书籍: (美)W.Richard Stevens著,范建华 等译 《TCP/IP协议详解,卷一:协议 》,机械工业出版社,计算机科学丛书 ,2000年4月

题2、4要点 连接建立三次握手,连接释放四次握手 可以结合TCP状态机 连接建立过程:“Flags字段” 的SYN、ACK标记位。 连接释放过程: “Flags字段” 的FIN、ACK标记位。

题3要点:选项字段--MSS 连接建立时协商参数的“选项(Option)字段” Maximum Segment Size +--------+--------+---------+--------+ |00000010|00000100| max seg size | Kind=2 Length=4 Maximum Segment Size Option Data: 16 bits 实验报文中的十六进制数值:02 04 05 b4

题3要点:以太网帧 最大传输单元(MTU) 限制:1500字节; 最小传输单元限制: 46字节。 为什么有最大?最小?参考AST《计算机网络》第四版

题3、5参考答案 MSS = 最大MTU长度 – IP首部固定(最小)长 度 – TCP首部固定 (最小) 长度 =1500 - 20 - 20 = 1460 --题3 TCP数据部分长度计算公式 --题5,要区分题3 要点:结合IP首部各字段、TCP首部各字段 =( IP总长度字段(16 bits)值 - IP首都长度字段(4 bits)值*4 - TCP首部长度字段(4 bits)值*4 )字节 IP、TCP首都长度字段值以32bits(4bytes)为单位

滑动窗口机制要点 窗口左边沿定义 窗口指针定义 窗口右边沿定义 注意:查看数据文件tcpsndwnddata.txt体会发送窗口的变化,同时推断接收窗口的变化

题6(1) 要点 要点:结合慢启动

题6(3) 要点 实际上,6(3)题就是发送方和接收方窗口同步前、后的问题,分为两种情况: 窗口同步:在网络中没有报文时,包括 发送方发送DATA报文,接收方窗口同步前、后问题 接收方发送ACK报文,发送方窗口同步前、后问题 窗口同步:在网络中没有报文时,包括 接收方收到发送方发出的所有报文, 发送方收到接收方发出的所有报文, 发送方窗口与接收方窗口的左边沿、指针应该是一样的(同步)。

题6(3)发送方发送DATA报文 DATA报文到达接收方前 DATA报文到达接收方后, 并与发送方窗口同步

题6(3)接收方发送ACK报文 ACK报文到达发送方前 ACK报文到达发送方后, 并与接收方窗口同步 实际上,6(3)题就是发送方和接收方窗口同步前和同步后的情况 当然这也分为两种情况: 发送方发送DATA报文,接收方窗口同步前、后问题 接收方发送ACK报文,发送方窗口同步前、后问题

窗口同步问题小结 窗口的左边沿是由接收方发送ACK报文驱动变化的; 窗口的指针是由发送方发送DATA报文驱动变化的; 接收窗口的右边沿与接收缓存、接收方确认数据都有关系; 在接收缓存足够的情况下,接收方确认数据,其接收窗口左边沿向右滑动,接收窗口右边沿也向右滑动,满足接收窗口的最大值65535; 在接收缓存不够的情况下,无法满足接收窗口的最大值65535,则接收方确认数据,其接收窗口左边沿向右滑动,而接收窗口右边沿停滞不动,对外表现为接收方向发送方发送ACK报文时其通告的接收窗口越来越小。 发送窗口的右边沿与发送方的拥塞窗口cwnd、接收方通告的接收窗口rwnd有关 在任何时候,其值 = 发送窗口左边沿 + min [ cwnd , rwnd ]。

题6(2) 要点 主要是接收方窗口与缓存的关系

题6(2)图例演示1/2-接收方 假设接收缓存大于最大窗口值65535 题6(2)图例演示1/2-接收方  假设接收缓存大于最大窗口值65535 假设应用进程一开始就休眠,即不从套接字缓存中读取数据,而此时处于内核态的“TCP协议模块”仍在工作。

题6(2)图例演示2/2 -接收方

题6(2)参考答案 如果接收缓存大于65535,在接收窗口值持续减少前接收端已开始休眠。 如果接收缓存小于等于65535,在接收窗口值持续减少时接收端开始休眠。 能够明显看出接收端开始休眠 是X1号报文 因为其后通告的接收窗口越来越小,(左边沿在不断向右移动,而右边沿不再移动),接收方在窗口范围外的可用缓存已被使用完,表明接收方在窗口范围外的可用缓存被已确认的数据占据着,应用程序进程没有再从缓存中读取这些已确认的数据,即表明其已开始休眠。

题6(4)要点 窗口收缩定义:右边沿向左移动 窗口合拢定义:左边沿向右边沿靠近 窗口张开定义:右边沿向右移动 接6(2)图例演示,继续 在上几页图例的基础上,

题6(4)参考答案 窗口收缩一般不发生 窗口合拢发生在接收窗口持续减小期间 窗口张开发生在休眠结束后通告大窗口时

题7要点与答案 窗口侦查报文指的是Keep-Alive报文 t 1 2 3 4 5 6 7 …… △t1=t2-t1 窗口侦查报文发 送或接收时间 相邻两条窗口侦 查报文的时间差 △t2=t3-t2 △t3=t4-t3 △t2=2 △t1 △t3=2 △t2 …. △tn=2 △tn-1

题8(1)答案 慢启动初始值 发送窗口计算snd_wnd = min [ cwnd , rwnd ] sthread=65535,snd_cwnd=2;RFC2581慢启动初始值的规定。 snd_cwnd*1460< ssthread,慢启动阶段。 发送窗口计算snd_wnd = min [ cwnd , rwnd ] rcv_wnd=65535,snd_cwnd*1460=2920; 所以snd_wnd = min [snd_cwnd , rcv_wnd] = snd_cwnd*1460=2920; snd_wnd_right = snd_wnd_left + snd_wnd。

题8(2)答案 ssthread不变=65535,每收到一个ACK报文,snd_cwnd加1。 因为snd_cwnd*1460< ssthread,处于慢启动阶段,每收到一个ACK,snd_cwnd至多增加1个MSS的数值(即随RTT时间而指数增加)。

题8(2)—验证规律答案 可以。现象(一般情况下) :发送方首次发送2个DATA报文,其后维持在两个确认报文之间发送3个DATA报文。 原因: 在发送方发满当前发送窗口snd_wnd的情况下(慢启动初始发满两个DATA报文),收到接收方1个ACK报文时, 由于接收方每收到2个DATA报文,发送1个ACK报文对其进行确认,那么在维持目前发送窗口snd_wnd不变的情况下,发送方可再次发送2个DATA报文, 同时由于慢启动机制,收到一个正常ACK报文拥塞窗口cwnd值加1,在cwnd远小于接收窗口rwnd时,snd_wnd就等于cwnd即snd_wnd加1,发送方还可再发送1个DATA报文, 这样发送方共可发送3个DATA报文。

题8(2)—验证规律题定量分析归纳 实验现象(一般情况下) 发送方:首次发送2个DATA报文,其后维持在两个确认报文之间发送3个DATA报文。 接收方: 接收方每收到2个DATA报文,发送1个ACK报文对其进行确认。

规律分析 --初始 初始: 注:假设每个发送报文大小都是1个MSS snd_wnd = min [snd_cwnd , rcv_wnd] = 2*MSS; snd&noAck_data = 0*MSS; useable_wnd = 2*MSS 注:假设每个发送报文大小都是1个MSS

规律分析 --第1步 发送2个DATA报文 snd_wnd = 2*MSS ; snd&noAck_data = 2*MSS; useable_wnd = 0*MSS 收到1个ACK报文 snd_wnd = snd_wnd_old + 1*MSS = 3*MSS ; snd&noAck_data = snd&noAck_data_old – 2*MSS = 0*MSS; useable_wnd = 1*MSS + 2*MSS = 3*MSS

规律分析 --第2步 发送3个DATA报文 收到1个ACK报文 snd_wnd = 3*MSS ; snd&noAck_data = 3*MSS; useable_wnd = 0*MSS 收到1个ACK报文 snd_wnd = snd_wnd_old + 1*MSS = 4*MSS ; snd&noAck_data = snd&noAck_data_old – 2*MSS = 1*MSS; useable_wnd = 1*MSS + 2*MSS = 3*MSS

规律分析 --第3步 发送3个DATA报文 收到1个ACK报文 snd_wnd = 4*MSS ; snd&noAck_data = 4*MSS; useable_wnd = 0*MSS 收到1个ACK报文 snd_wnd = snd_wnd_old + 1*MSS = 5*MSS ; snd&noAck_data = snd&noAck_data_old – 2*MSS = 2*MSS; useable_wnd = 1*MSS + 2*MSS = 3*MSS

规律分析 --第4步 …… 发送3个DATA报文 收到1个ACK报文 snd_wnd = 5*MSS ; snd&noAck_data = 5*MSS; useable_wnd = 0*MSS 收到1个ACK报文 snd_wnd = snd_wnd_old + 1*MSS = 6*MSS ; snd&noAck_data = snd&noAck_data_old – 2*MSS = 3*MSS; useable_wnd = 1*MSS + 2*MSS = 3*MSS ……

规律归纳 规律分析 --第n步 …… 发送3个DATA报文 收到1个ACK报文 snd_wnd = (n+1)*MSS ; snd&noAck_data = (n+1)*MSS; useable_wnd = 0*MSS 收到1个ACK报文 snd_wnd = snd_wnd_old + 1*MSS = (n+2)*MSS ; snd&noAck_data = snd&noAck_data_old – 2*MSS = (n-1)*MSS; useable_wnd = 1*MSS + 2*MSS = 3*MSS ……

题8(3)要点与答案 有超时报文,网络拥塞,实施拥塞处理 在正常传输后,将依次处于慢启动、拥塞避免阶段 X号报文,ssthread=max(cwnd/2,2*MSS)(RFC2001);cwnd=1;超时,表明网络有拥塞。 在正常传输后,将依次处于慢启动、拥塞避免阶段 其后的第一阶段:ssthread不变,cwnd值每收到一个ACK报文就加1。因为snd_cwnd*1460 <= ssthread,慢启动阶段。 其后的第二阶段:ssthread不变,cwnd值每经过一个RTT增加一个SMSS*SMSS/cwnd的大小。因为snd_cwnd*1460 > ssthread,拥塞避免阶段。

题9要点 正常传输期间:RTO计算算法 超时重传期间: Karn算法 RTO = 2 * RTO_old

题9(1)参考答案 两种速率下重传时间有很大差别, 三次重传时间呈加倍关系,Karn算法起作用。 因为RTO值是根据RTT(平均往返时间)值而加权计算得出; 而RTT值又是根据ACK报文到达而测量出的往返时间样本而加权计算得出; 由于速率的不同,两种速率下在DATA报文发出到ACK报文到达的时间差会有很大的差距。 三次重传时间呈加倍关系,Karn算法起作用。

题9(2)参考答案 分别稳定在RTO1和RTO2。 发生超时时,RTT值不变,因为RTT的变化主要依据ACK的报文到达才能得到往返时间样本进而更新RTT值,而RTO在每次重传发生时则加倍。原因是Karn算法起作用。 继续正常报文传输时,RTT随着ACK报文的到来一度变大,因为超时期间没有收到任何ACK报文,新到达的ACK报文使得往返时间样本急剧增大,按平均往返时间计算算法更新RTT值;RTO值不再加倍但还是很大,因为超时结束,Karn算法不再起作用,又开始按照RTT的值进行更新计算(依据重传超时时间计算算法计算),而此时RTT值很大。

题9附注 按RFC1122规定将RTT和RTO的初始值设置为:RTT=0秒,RTO=3秒。 由于Linux这些时间值以10毫秒为单位,实验数据文件中表现为SRTT=0;RTO=300; 且RTO的最小值为200毫秒,最大值为120秒。实验数据文件中表现为20 和12000; Linux中RTT最小80毫秒,实验数据文件中表现为8

题10要点 快重传算法针对收到三个重复ACK报文后,即重传重复ACK序号的那条DATA报文

题10(1)参考答案 X5、X6、X7号报文。 不等报文的超时,立即进行报文的重传,收到三个重复确认,认为报文丢失,快重传。

题10(2)参考答案 在第三个重复ACK到达时,ssthread=max(cwnd/2,2*MSS)(RFC2001);cwnd= min [cwnd , 已发送的报文数 – 已到达接收方但未正式确认的报文 + 重传的报文数 + 3]。 收到三个重复确认,快恢复算法。 RTT和RTO无变化,因为往返时间的测量是根据ACK报文的到达情况来计算的,而此时网络并未真正的拥塞,只是偶尔报文传输出错,因此RTT的测量不受影响,从而RTO没有变化。

题10(3)参考答案 有。 ssthread不变,cwnd= min [cwnd , 已发送的报文数 – 已到达接收方但未正式确认的报文 + 重传的报文数 + 3]。 在没有重复ACK报文后即开始接收正常ACK报文,ssthread不变,cwnd值每经过一个RTT增加一个SMSS*SMSS/cwnd的大小。因为snd_cwnd*1460> ssthread,拥塞避免阶段。

题11(1)参考答案 启用Nagle算法的传输过程数据长度一般都以MSS长度发送; Nagle算法的原理和作用:发送方在连接建立开始发送数据时,立即按序发送缓存中的数据(必须<=1*MSS),后续数据的发送由数据是否足以填满发送缓存的一半或一个MSS长度决定。而不启用Nagle算法时发送方则是有数据就发。

题11(2)参考答案 通告的第一个窗口大小是X(>=1*MSS); 接收端的推迟确认技术:对收到的报文段进行确认和通告窗口的前提条件是:接收缓存的可用空间至少得到总空间的一半或者达到最大报文长度之后。如果条件不满足,则推迟发送确认和窗口通告。

4.2 TCP的流量控制和拥塞控制 TCP “数据流”的概念(逻辑) 流:编了序号的“珠串” 可靠性:面向连接、数据传输ACK机制 流量控制:使用滑动窗口机制 窗口仅仅是在流上的一个连续片断 拥塞控制:是通过TCP中端到端基于滑窗的流量控制机制完成的 拥塞控制四算法:慢启动、拥塞避免、快重传、快恢复

流量控制和拥塞控制的区别和关系 流量控制主要考虑接收端,目的是使发送端的发送速率不超过接收端的接收能力; 拥塞控制主要考虑端节点之间的网络环境,目的是使负载不超过网络的传送能力; 在很长一段时间内,接收端驱动的TCP流量控制机制是唯一可行的拥塞控制方法; 但“流量控制” 和“拥塞控制”两者切不可混淆,实际上,前者只是实现后者的一个技术实现途径而已。

实验场景 shutdown路由器接口模拟网络拥塞 丢包模拟偶然的传输错误(可能主机原因也可能网络原因),但不是真正的网络拥塞

滑动窗口机制要点 窗口左边沿定义 窗口指针定义 窗口右边沿定义 窗口同步:在网络中没有报文即接收方收到发送方发出的所有报文,发送方收到接收方发出的所有报文时,发送方窗口与接收方窗口的左边沿、指针应该是一样的(同步)。