资源预览内容
第1页 / 共32页
第2页 / 共32页
第3页 / 共32页
第4页 / 共32页
第5页 / 共32页
第6页 / 共32页
第7页 / 共32页
第8页 / 共32页
第9页 / 共32页
第10页 / 共32页
亲,该文档总共32页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
主讲人: 西安交通大学 程向前第4讲传输层之二Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望主讲人: 西安交通大学 程向前TCP: 概述概述 RFCs: 793, 1122, 1323, 2018, 2581r全双工数据传输全双工数据传输:m在同一连接上双向传输在同一连接上双向传输mMSS: maximum segment size(最大段字(最大段字节数节数-1500,536,512)r面向连接面向连接: m握手过程握手过程 (交换控制信息交换控制信息) 在交换数据前初始化收发在交换数据前初始化收发双方的状态双方的状态,“三次握手三次握手”r流量控制流量控制:m发送方的发送速度不得超发送方的发送速度不得超过接收方的处理速度过接收方的处理速度r点对点点对点:m一个发送方一个发送方, 一个接收方一个接收方 r可靠可靠, 按序的字节流按序的字节流 :m无无 “报文边界报文边界”,无结构,无结构但有顺序但有顺序r流水式控制流水式控制:mTCP的拥塞和流量控制,设的拥塞和流量控制,设置窗口大小置窗口大小r发送发送& 接收缓存接收缓存4-2第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 段格式段格式(p238)source port #dest port #32 bits应用数据 (可变长度)sequence numberacknowledgement numberrcvr window sizeptr urgent datachecksumFSRPAUheadlennotusedOptions (可变长度-MSS)URG: urgent data (一般不用)ACK: ACK #validPSH: push data now(一般不用)RST, SYN, FIN:connection estab(setup, teardowncommands)# bytes 接收方愿意接受的按发送数据的字节计算(不是按段数!)Internetchecksum(as in UDP)4-3第4讲 传输层之二主讲人: 西安交通大学 程向前TCP seq. #s 和和 ACKsSeq. #s:m该数据段第一个字节该数据段第一个字节在(整个报文)字节在(整个报文)字节流中流中 “编号编号” ACKs:mseq #为预期从对方为预期从对方发来的发来的“下一个下一个”字字节的编号节的编号m积累的积累的 ACKQ: 接收方如何接受失序的接收方如何接受失序的数据段数据段mA: TCP 没有定义没有定义, - 由程序设计者决定由程序设计者决定Host AHost BSeq=42, ACK=79, data = CSeq=79, ACK=43, data = CSeq=43, ACK=80UsertypesChost ACKsreceipt of echoedChost ACKsreceipt ofC, echoesback Ctime简单的 telnet 场景4-4第4讲 传输层之二主讲人: 西安交通大学 程向前TCP: 可靠数据传输可靠数据传输简化的发送方, 假设waitfor eventwaitfor eventevent: data received from application aboveevent: timer timeout for segment with seq # yevent: ACK received,with ACK # ycreate, send segmentretransmit segmentACK processing单向数据传输无流量, 拥塞控制4-5第4讲 传输层之二主讲人: 西安交通大学 程向前TCP: 可可靠数据传靠数据传输输00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 0203 loop (forever) 04 switch(event) 05 event: data received from application above 06 create TCP segment with sequence number nextseqnum 07 start timer for segment nextseqnum 08 pass segment to IP 09 nextseqnum = nextseqnum + length(data) 10 event: timer timeout for segment with sequence number y 11 retransmit segment with sequence number y 12 compue new timeout interval for segment y 13 restart timer for sequence number y 14 event: ACK received, with ACK field value of y 15 if (y sendbase) /* cumulative ACK of all data up to y */ 16 cancel all timers for segments with sequence numbers 加大安全边际加大安全边际Timeout = EstimatedRTT + 4*DeviationDeviation(偏差偏差) = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT|4-11第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 连接管理连接管理回顾回顾: TCP 收发双方在数据交收发双方在数据交换开始之前需要建立连接换开始之前需要建立连接r初始化初始化 TCP变量变量:mseq. #sm缓存缓存, 流量控制信息流量控制信息 (e.g. RcvWindow)r客户端客户端: 连接的发起者连接的发起者 Socket clientSocket = new Socket(hostname,port number); -JAVAr服务器服务器: 接受客户端的连接接受客户端的连接 Socket connectionSocket = welcomeSocket.accept();(建立连接建立连接)三次握手三次握手:Step 1: 客户端的客户端的end system向服务向服务器发送器发送 TCP SYN 控制数据段控制数据段m定义并初始化定义并初始化 seq #Step 2: 服务器的服务器的end system接收接收 SYN, 用用SYNACK控制数据段回答控制数据段回答mACKs 接收到的接收到的 SYNm分配缓存分配缓存m定义定义 server- receiver 初初始化始化 seq. # Step 3:客户端的客户端的end system向服务向服务器发送器发送ACK mACKs 接收到的连接承诺接收到的连接承诺m分配缓存分配缓存4-12第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 连接管理连接管理 (续续)关闭连接关闭连接:客户端关闭插口客户端关闭插口: clientSocket.close(); Step 1: 客户端客户端 end system 发送发送 TCP FIN 控制段给服控制段给服务器务器 Step 2: 服务器服务器 收到收到 FIN, 用用 ACK应答应答. 关闭连接关闭连接, 发发送送 FIN. clientFINserverACKACKFINclosecloseclosedtimed wait4-13第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 连接管理连接管理 (续续)Step 3: 客户端客户端 收到收到 FIN, 用用 ACK进行应答进行应答. m随着对接收到的随着对接收到的FIN发送发送ACK-同时进入同时进入 “timed wait(计时等待)计时等待)”Step 4: 服务器服务器, 接收接收 ACK. 连接关闭连接关闭. 注意注意: 稍加修改稍加修改,即可管理同即可管理同时发生的多个时发生的多个FINs.clientFINserverACKACKFINclosingclosingclosedtimed waitclosed4-14第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 连接管理连接管理 (续续)TCP 客户端实例的生命周期TCP 服务进程的生命周期4-15第4讲 传输层之二主讲人: 西安交通大学 程向前拥塞控制原理拥塞控制原理拥塞拥塞:r非正式的说法非正式的说法: “过多信源以过快的速率发送了过多的过多信源以过快的速率发送了过多的数据、导致数据、导致网络网络穷于应付穷于应付”r不同于流量控制不同于流量控制!r后果后果:m丢失数据分组丢失数据分组 (路由器缓存溢出路由器缓存溢出)m长时间的延迟长时间的延迟 (在路由器的缓存中排队在路由器的缓存中排队)r在网络发展的技术中的在网络发展的技术中的a top-10 problem!4-16第4讲 传输层之二主讲人: 西安交通大学 程向前缘由缘由/代价代价-拥塞问题拥塞问题:场景场景1 r两个发送端两个发送端, 两个两个接收端接收端r一个路由器一个路由器, 有限有限缓存缓存 r无重传机制无重传机制r发生拥塞时的延发生拥塞时的延迟迟r可达到的最大吞可达到的最大吞吐量吐量4-17第4讲 传输层之二主讲人: 西安交通大学 程向前缘由缘由/代价代价-拥塞问题拥塞问题: 场景场景 2 r一个路由器一个路由器, 有限有限 缓存缓存 r发送端重传丢失的分组发送端重传丢失的分组4-18第4讲 传输层之二主讲人: 西安交通大学 程向前缘由缘由/代价代价-拥塞问题拥塞问题: 场景场景 2 r设计期望设计期望: (goodput)r“完美的完美的” 重传仅仅是在分组丢失时重传仅仅是在分组丢失时:r重传被延迟的重传被延迟的 (而不是丢失的而不是丢失的)分组造成大量无意义的分组造成大量无意义的 (比起完美比起完美的情况的情况) 对同样的对同样的linlout=linloutlinlout拥塞的拥塞的“代价代价” : r在给定的在给定的 “goodput”下需要做更多的工作下需要做更多的工作(重传重传)r不必要的重传不必要的重传: 链路上充斥着分组的多个拷贝链路上充斥着分组的多个拷贝4-19第4讲 传输层之二主讲人: 西安交通大学 程向前缘由缘由/代价代价-拥塞问题拥塞问题: 场景场景 3 r四个发送端四个发送端r多步跳路径多步跳路径r超时超时/重传重传linQ: 当当 和和 增加时发增加时发生了什么生了什么?lin4-20第4讲 传输层之二主讲人: 西安交通大学 程向前缘由缘由/代价代价-拥塞问题拥塞问题 : 场景场景 3 另一种拥塞的另一种拥塞的“代价代价”: r当分组被丢弃时当分组被丢弃时, 所有所有“上游上游”信道为该分组所作的信道为该分组所作的工作统统被浪费了工作统统被浪费了!4-21第4讲 传输层之二主讲人: 西安交通大学 程向前拥塞问题的解决方案拥塞问题的解决方案端对端的拥塞控制端对端的拥塞控制:r没有来自网络的反馈信息没有来自网络的反馈信息r对拥塞问题的了解来自于对对拥塞问题的了解来自于对数据丢失和延迟的推断数据丢失和延迟的推断r有有 TCP来解决来解决网络辅助的拥塞控制网络辅助的拥塞控制:r路由器向端系统提供反馈路由器向端系统提供反馈m一个比特位的说明一个比特位的说明 (SNA, DECNet, TCP/IP ECN, ATM)m显式告知发送方所应采用显式告知发送方所应采用的数据速率的数据速率两大类拥塞控制的办法两大类拥塞控制的办法:4-22第4讲 传输层之二主讲人: 西安交通大学 程向前案例研究案例研究: ATM ABR 拥塞控制拥塞控制ABR: available bit rate(可用数据速率)(可用数据速率):r“弹性服务弹性服务” r如果发送方的路径如果发送方的路径“欠负载欠负载” m发送端应该把带宽用足发送端应该把带宽用足r如果发送端路径拥塞如果发送端路径拥塞: m发送端将其数据速率约发送端将其数据速率约束到最小承诺速率束到最小承诺速率RM (resource management) cells(资源管理信元)(资源管理信元):r由发送端发送由发送端发送, 掺和在数据信元掺和在数据信元一起一起r在在 RM 信元中的数据位由交换机信元中的数据位由交换机设定设定 (“网络辅助网络辅助”) mNI bit: 不得增加发送速率不得增加发送速率 (轻微拥塞轻微拥塞)mCI bit: 拥塞指示拥塞指示rRM信元由接收端返回给发送端信元由接收端返回给发送端, 所有数据位保持原样所有数据位保持原样 4-23第4讲 传输层之二主讲人: 西安交通大学 程向前案例研究案例研究: ATM ABR 拥塞控制拥塞控制r在在RM信元中有信元中有2字节的字节的 ER (explicit rate) 字段字段m处于拥塞的交换机可降低信元中的处于拥塞的交换机可降低信元中的ER 值值m发送端的发送速率可以在路径上得到最低程度的支持发送端的发送速率可以在路径上得到最低程度的支持r数据信元的数据信元的EFCI 位位: 在拥塞的交换机中被设成在拥塞的交换机中被设成 1m如果在如果在RM信元之前的数据信元的信元之前的数据信元的EFCI置置1, 发送端将在返回的发送端将在返回的 RM的的RM信元中将信元中将CI置置14-24第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 拥塞控制拥塞控制r端到端的控制端到端的控制 (无需网络协助无需网络协助)r传输速率限制由建立在数据段之上的拥塞窗口尺寸传输速率限制由建立在数据段之上的拥塞窗口尺寸Congwin决定决定:rw=数据段数量数据段数量, 每个具有每个具有 MSS字节字节,在一个在一个 RTT周期周期内发送内发送:吞吐量 = w * MSS RTT Bytes/secCongwin4-25第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 拥塞控制拥塞控制:r两个两个 “阶段阶段”mslow start(慢启动)(慢启动)mcongestion avoidance(拥塞避免)拥塞避免)r 重要变量重要变量:mCongwinmthreshold: 定义两个定义两个慢启动之间,拥塞控制阶慢启动之间,拥塞控制阶段的门限值段的门限值r“刺探刺探” 可用带宽可用带宽: m理想情况理想情况: 全速传输全速传输 (Congwin 越大越好越大越好) 没有没有数据丢失数据丢失m增加增加 Congwin 直到出现直到出现数据丢失数据丢失 (拥塞拥塞)m数据丢失数据丢失: 减小减小 Congwin, 然后重新开始然后重新开始进行刺探进行刺探(增加增加Congwin)4-26第4讲 传输层之二主讲人: 西安交通大学 程向前TCP Slowstart(慢启动)(慢启动)r窗口尺寸按指数递增窗口尺寸按指数递增 (每隔每隔 RTT) (不算太慢不算太慢!)r丢失事件丢失事件: 超时超时(Tahoe TCP) 和和/或三次重复或三次重复 ACKs (Reno TCP)initialize: Congwin = 1for (each segment ACKed) Congwin+until (loss event OR CongWin threshold)Slowstart 算法Host Aone segmentRTTHost Btimetwo segmentsfour segments4-27第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 拥塞避免拥塞避免/* slowstart is over */ /* Congwin threshold */Until (loss event) every w segments ACKed: Congwin+ threshold = Congwin/2Congwin = 1perform slowstart拥塞避免11: 在出现三次重复的ACK后,TCP Reno 将跳过 slowstart (快速恢复 )在此阶段,Congwin以线性方式增长,发生超时,门限值减半4-28第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 拥塞避免策略拥塞避免策略:rAIMD: madditive increase(加加法形式增加);法形式增加); multiplicative decrease(倍数形式减倍数形式减少)少)m每个每个RTT将窗口尺寸将窗口尺寸加加1m当发生数据丢失时用当发生数据丢失时用2除窗口尺寸除窗口尺寸AIMD教科书:教科书:p244-2454-29第4讲 传输层之二主讲人: 西安交通大学 程向前TCP 公平性公平性公平性目标公平性目标: 如果如果 N TCP 会会话共享瓶颈链路话共享瓶颈链路, 每个应该每个应该分得分得 1/N 链路传输能力链路传输能力TCP connection 1bottleneckroutercapacity RTCP connection 24-30第4讲 传输层之二主讲人: 西安交通大学 程向前为什么说为什么说TCP是公平的是公平的?两个竞争性的会话两个竞争性的会话:r当吞吐量增加时,加法的结果斜率为当吞吐量增加时,加法的结果斜率为 1r而成倍递减则会等比减少连接的吞吐量而成倍递减则会等比减少连接的吞吐量 RR同等的带宽共享连接 1 的吞吐量连接 2 的吞吐量congestion avoidance: additive increaseloss: decrease window by factor of 2拥塞避免: 加法形式增加窗口尺寸丢包: 以2为除数减小窗口来进行带宽的充分使用4-31第4讲 传输层之二主讲人: 西安交通大学 程向前第第4讲讲: 小结小结r传输层服务原理传输层服务原理:m复用复用/分用分用m可靠数据传输可靠数据传输m流量控制流量控制m拥塞控制拥塞控制r因特网传输层的实现和实例因特网传输层的实现和实例mUDPmTCP下一步下一步:r离开网络的离开网络的“边缘边缘” (应用应用/ 传输层传输层)r进入网络的进入网络的 “核心核心”4-32第4讲 传输层之二
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号