《50第三章 传输层b.ppt》由会员分享,可在线阅读,更多相关《50第三章 传输层b.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5讲讲 传输层传输层本讲目的本讲目的:r理解传输层服务的原理理解传输层服务的原理:m复用复用/分用分用m可靠数据传输可靠数据传输m流量控制流量控制m拥塞控制拥塞控制rInternet传输层的实传输层的实现和实例现和实例r教科书参考教科书参考m第第3章章本讲概述本讲概述:r传输层的服务传输层的服务r复用复用/分用分用r无连接的传输无连接的传输:UDPr可靠数据传输原理可靠数据传输原理1第4讲 传输层之二5.1 传输服务和协议传输服务和协议r提供运行在不同主机中提供运行在不同主机中进进程间程间的的逻辑通信逻辑通信 r传输协议仅运行在端系统传输协议仅运行在端系统中中 r传输传输 vs.网络层服务
2、网络层服务:r网络层网络层:在端系统间进行在端系统间进行通信通信r传输层传输层:在进程间进行通在进程间进行通信信 m依赖于依赖于,加强了加强了,网络层的网络层的服务服务 applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicallogical
3、 end-end transport2第4讲 传输层之二传输层协议传输层协议Internet 传输服务传输服务:r可靠可靠,按序点对点递交按序点对点递交(TCP)m拥塞控制拥塞控制m流量控制流量控制m连接建立连接建立r不可靠的不可靠的(“尽力而为尽力而为”),无序的点对点或广播递交无序的点对点或广播递交:UDPr不能提供的服务不能提供的服务:m实时性实时性m带宽承诺带宽承诺m可靠的广播通信可靠的广播通信 applicationtransportnetworkdata linkphysicalapplicationtransportnetworkdata linkphysicalnetworkd
4、ata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicalnetworkdata linkphysicallogical end-end transport3第4讲 传输层之二applicationtransportnetworkMP2applicationtransportnetwork回顾回顾:segment(段)(段)-传输层实体间交换数据传输层实体间交换数据的单位的单位 mTPDU:传输层数据传输层数据单元单元receiverHtHn将接收到的段传递给正将接收到的段传递
5、给正确的应用层进程确的应用层进程 segmentsegmentMapplicationtransportnetworkP1MMMP3P4segmentheaderapplication-layerdata4第4讲 传输层之二r基于发送方基于发送方,接收方的端口号接收方的端口号,IP 地址地址m源源,目的端口目的端口#s 存在于存在于每个段中每个段中m回顾回顾:用于特定应用的常用于特定应用的常用端口号(用端口号(well-known port number)从多个应用进程获取从多个应用进程获取数据数据,用首部用首部(便于随便于随后的分用后的分用)封装数据封装数据源端口#宿端口宿端口#32 bit
6、s应用层数据(报文)其他首部字段其他首部字段TCP/UDP 段格式5第4讲 传输层之二举例举例主机 A服务器 Bsource port:xdest.port:23source port:23dest.port:x端口的使用:简单的 telnet 应用Web客户端主机 AWeb服务器 BWeb客户端主机 CSource IP:CDest IP:Bsource port:xdest.port:80Source IP:CDest IP:Bsource port:ydest.port:80端口的使用:Web 服务器Source IP:ADest IP:Bsource port:xdest.port:8
7、06第4讲 传输层之二5.2 UDP:用户数据报协议用户数据报协议 RFC 768r“最简约的最简约的”Internet 传传输协议输协议r“尽力而为的尽力而为的”服务服务,UDP 数据段可以数据段可以:m丢失丢失m应用数据不按序到达应用数据不按序到达r无连接无连接:m在在UDP收发双方之间收发双方之间,无无需握手信号需握手信号m每个每个 UDP 数据段的操作数据段的操作都互相独立都互相独立为什么需要为什么需要 UDP?r无需建立连接无需建立连接(会增加延会增加延迟迟)r简单简单:在收发双方之间在收发双方之间没有连接状态没有连接状态r段首较短段首较短r无拥塞控制无拥塞控制:UDP 可按可按需要
8、随时发送需要随时发送7第4讲 传输层之二UDP:(续续)r经常为流媒体应用使用经常为流媒体应用使用m允许数据丢失允许数据丢失m对传输速率敏感对传输速率敏感r其他其他 UDP用途用途(why?):mDNSmSNMPr若需要通过若需要通过 UDP进行可靠进行可靠传输传输:在应用层增加可靠性在应用层增加可靠性措施措施m在应用程序中在应用程序中-专门的专门的出错恢复机制出错恢复机制!源端口#宿端口#32 bits应用层数据(报文)UDP 数据报格式lengthchecksum长度长度,UDP段的字节数段的字节数,包括首部包括首部8第4讲 传输层之二UDP 校验和(校验和(checksum)发送方发送方
9、:r将段的内容看作一串将段的内容看作一串16位整数位整数rchecksum:作段内容作段内容的加法的加法(补码和补码和)r发送方将补码和放入发送方将补码和放入 UDP checksum 字段字段接收方接收方:r对接收到的段内容进行补码和对接收到的段内容进行补码和计算计算r检查计算结果是否与收到的校检查计算结果是否与收到的校验和相等验和相等:mNO 查出错误查出错误mYES 没查出错误没查出错误.但是仍但是仍有可能存在错误有可能存在错误?目标目标:检测传输段中的检测传输段中的“错误错误”(e.g.,位错位错)9第4讲 传输层之二5.3 流水线协议流水线协议流水作业流水作业:发送端允许发送多个发送
10、端允许发送多个,“悬在空中悬在空中”,等待应等待应答的分组答的分组m必须增加顺序号的位数必须增加顺序号的位数m在发送和接收端增加缓存在发送和接收端增加缓存r两种常用的流水线协议两种常用的流水线协议:第第N个个分组重发分组重发(go-Back-N),选择应答选择应答10第4讲 传输层之二从第从第N个个分组重发分组重发(Go-Back-N)发送方发送方:r在分组首部设置在分组首部设置k位位 seq#r使用尺寸为使用尺寸为N的的“滑动窗口滑动窗口”,允许连续的多个分组不被应答允许连续的多个分组不被应答rACK(n):ACK所有所有n号之前,包括号之前,包括n号在内的分组号在内的分组-“积累式积累式A
11、CK”m可能产生重复的可能产生重复的ACK(见接收方见接收方)r为每个未应答(为每个未应答(in-flight)的分组设置计时器的分组设置计时器(timer)r当当发生超时:发生超时:timeout(n):重传重传n号和号和n号以后的号以后的所有所有分组分组11第4讲 传输层之二GBN:发送方扩展的发送方扩展的 FSM上层调用:ACK的接收超时事件12第4讲 传输层之二GBN:接收方扩展的接收方扩展的 FSM接收方举例接收方举例:rACK-only:总是对正确接收到的分组中按序(总是对正确接收到的分组中按序(in-order)对最高)对最高 seq#进行进行ACKm可以产生重复的可以产生重复的
12、ACKsm仅仅需要记住仅仅需要记住 expectedseqnum(预期的序号)r失序分组失序分组:m丢弃丢弃(不缓存不缓存)-不进行接收缓存不进行接收缓存!m接收到的分组中按序对最高接收到的分组中按序对最高 seq#进行进行ACK13第4讲 传输层之二GBN 的运行的运行14第4讲 传输层之二选择应答选择应答(SR)r接收方逐个对所有正确收到的分组进行应答接收方逐个对所有正确收到的分组进行应答m如有必要,对接收到的(失序)分组进行缓存如有必要,对接收到的(失序)分组进行缓存,以便最后对以便最后对上层进行有序递交上层进行有序递交r发送方仅对未收到应答的分组进行重发发送方仅对未收到应答的分组进行重
13、发m发送方未每个发送方未每个unACKed 分组设置计时器分组设置计时器 r发送方的窗口发送方的窗口mN 个连续的个连续的 seq#sm同样对已发送的同样对已发送的seq#s,unACKed分组进行限制分组进行限制15第4讲 传输层之二选择应答选择应答:发送方发送方,接收方的窗口接收方的窗口16第4讲 传输层之二选择应答选择应答上层数据到达上层数据到达:r如果窗口中的下一个序号可如果窗口中的下一个序号可用,发送分组用,发送分组timeout(n):第第n个计时器跳个计时器跳r重发分组重发分组n,计时器复位计时器复位 ACK(n)到达到达sendbase,sendbase+N:r标记分组标记分组
14、 n 已经收到已经收到r如如n为为unACKed分组中的最小分组中的最小值值,将窗口下沿前推倒下一个将窗口下沿前推倒下一个unACKed seq#发送方分组分组n到达到达rcvbase,rcvbase+N-1r发送发送 ACK(n)r失序失序:缓存缓存r有序有序:递交到上层递交到上层(同时递交同时递交缓存中的其他有序分组缓存中的其他有序分组),将将窗口前推倒下一个尚未收到窗口前推倒下一个尚未收到的分组的分组分组分组n到达到达 rcvbase-N,rcvbase-1r虽然接收方曾经确认,但仍虽然接收方曾经确认,但仍然需要然需要ACK(n)其他情况其他情况:忽略分组忽略分组接收方17第4讲 传输层
15、之二选择应答的运行选择应答的运行18第4讲 传输层之二5.4 TCP RFCs:793,1122,1323,2018,2581r全双工数据传输全双工数据传输:m在同一连接上双向传输在同一连接上双向传输mMSS:maximum segment size(最大段字(最大段字节数节数-1500,536,512)r面向连接面向连接:m握手过程握手过程(交换控制信息交换控制信息)在交换数据前初始化收发在交换数据前初始化收发双方的状态双方的状态,“三次握手三次握手”r流量控制流量控制:m发送方的发送速度不得超发送方的发送速度不得超过接收方的处理速度过接收方的处理速度r点对点点对点:m一个发送方一个发送方,
16、一个接收方一个接收方 r可靠可靠,按序的字节流按序的字节流:m无无“报文边界报文边界”,无结构,无结构但有顺序但有顺序r流水式控制流水式控制:mTCP的拥塞和流量控制,设的拥塞和流量控制,设置窗口大小置窗口大小r发送发送&接收缓存接收缓存19第4讲 传输层之二TCP 段格式段格式(p238)source port#dest port#32 bits应用数据(可变长度)sequence numberacknowledgement numberrcvr window sizeptr urgent datachecksumFSRPAUheadlennotusedOptions(可变长度-MSS)UR
17、G:urgent data(一般不用)ACK:ACK#validPSH:push data now(一般不用)RST,SYN,FIN:connection estab(setup,teardowncommands)#bytes 接收方愿意接受的按发送数据的字节计算(不是按段数!)Internetchecksum(as in UDP)20第4讲 传输层之二TCP seq.#s 和和 ACKsSeq.#s:m该数据段第一个字节该数据段第一个字节在(整个报文)字节在(整个报文)字节流中流中“编号编号”ACKs:mseq#为预期从对方为预期从对方发来的发来的“下一个下一个”字字节的编号节的编号m积累的
18、积累的 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 场景21第4讲 传输层之二TCP ACK 规则规则 RFC 1122,RFC 2581事件有序数据段到达,没有缺失的段,所有其他数据段已经 ACKed有序数据段到达
19、,没有缺失的段,有一个延迟 ACK 等待失序数据段到达seq.#高于预期值测到间隔到达的数据段部分或全部填满了缺失的段TCP 接收方的动作延迟 ACK.等待 500ms看是否还有数据段到达.如果没有,发送ACK立即发送一个积欠的 ACK 发送重复的 ACK,说明 seq.#为下一个期望的字节立即 ACK,如果数据段处于缺失的段的较低端22第4讲 传输层之二TCP:重传场景重传场景Host ASeq=92,8 bytes dataACK=100losstimeouttime丢失 ACK 场景Host BXSeq=92,8 bytes dataACK=100Host ASeq=100,20 byt
20、es dataACK=100Seq=92 timeouttime过早超时,积欠 ACKsHost BSeq=92,8 bytes dataACK=120Seq=92,8 bytes dataSeq=100 timeoutACK=12023第4讲 传输层之二TCP 流量控制流量控制接收端接收端:显式通知发送显式通知发送端端(动态变化中的动态变化中的)自由缓存空间自由缓存空间 mRcvWindow TCP 数据段的字数据段的字段段发送端发送端:需要保存已经需要保存已经发送发送,unACKed 数数据可少于最近收到的据可少于最近收到的RcvWindow发送端不可发送的太多、太快以至于使得接收端的缓存
21、溢出流量控制接收端缓存RcvBuffer=接收端的 TCP 缓存大小RcvWindow=缓存中空闲的部分24第4讲 传输层之二TCP 交互的往返时间(交互的往返时间(RTT)和超时)和超时Q:如何设置如何设置 TCP 超时超时的值的值?r应较应较RTT长一点长一点m注意注意:RTT 会变哟!会变哟!r太短了太短了:过早出现超时过早出现超时m造成不必要的重传造成不必要的重传r太长了太长了:减缓了对数据段减缓了对数据段丢失的反应丢失的反应Q:如何估算如何估算 RTT?rSampleRTT:对数据段发送到收到对数据段发送到收到ACK 回应的时间进行测量回应的时间进行测量m忽略重传忽略重传,积欠积欠
22、ACKed 数据段数据段rSampleRTT 是会变化的是会变化的,要使得估要使得估算的算的 RTT“更平滑更平滑”m使用若干新近的测量结果使用若干新近的测量结果,而不而不仅仅是最近一次的仅仅是最近一次的 SampleRTT25第4讲 传输层之二TCP RTT 和超时和超时EstimatedRTT=(1-x)*EstimatedRTT+x*SampleRTTr指数加权移动平均(指数加权移动平均(EWMA)r给定样本的影响随指数形式快速递减给定样本的影响随指数形式快速递减rX的典型量值的典型量值:0.125或或1/8设置超时设置超时rEstimtedRTT 加上加上“安全边际安全边际(safet
23、y margin)”r如果如果 EstimatedRTT变化较大-加大安全边际加大安全边际Timeout=EstimatedRTT+4*DeviationDeviation(偏差偏差)=(1-x)*Deviation+x*|SampleRTT-EstimatedRTT|26第4讲 传输层之二TCP 连接管理连接管理回顾回顾:TCP 收发双方在数据交收发双方在数据交换开始之前需要建立连接换开始之前需要建立连接r初始化初始化 TCP变量变量:mseq.#sm缓存缓存,流量控制信息流量控制信息(e.g.RcvWindow)r客户端客户端:连接的发起者连接的发起者 Socket clientSocke
24、t=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
25、-receiver 初初始化始化 seq.#Step 3:客户端的客户端的end system向服务向服务器发送器发送ACK mACKs 接收到的连接承诺接收到的连接承诺m分配缓存分配缓存27第4讲 传输层之二TCP 连接管理连接管理(续续)关闭连接关闭连接:客户端关闭插口客户端关闭插口:clientSocket.close();Step 1:客户端客户端 end system 发送发送 TCP FIN 控制段给服控制段给服务器务器 Step 2:服务器服务器 收到收到 FIN,用用 ACK应答应答.关闭连接关闭连接,发发送送 FIN.clientFINserverACKACKFINclose
26、closeclosedtimed wait28第4讲 传输层之二TCP 连接管理连接管理(续续)Step 3:客户端客户端 收到收到 FIN,用用 ACK进行应答进行应答.m随着对接收到的随着对接收到的FIN发送发送ACK-同时进入同时进入“timed wait(计时等待)计时等待)”Step 4:服务器服务器,接收接收 ACK.连接关闭连接关闭.注意注意:稍加修改稍加修改,即可管理同即可管理同时发生的多个时发生的多个FINs.clientFINserverACKACKFINclosingclosingclosedtimed waitclosed29第4讲 传输层之二TCP 连接管理连接管理(
27、续续)TCP 客户端实例的生命周期TCP 服务进程的生命周期30第4讲 传输层之二拥塞控制原理拥塞控制原理拥塞拥塞:r非正式的说法非正式的说法:“过多信源以过快的速率发送了过多的过多信源以过快的速率发送了过多的数据、导致数据、导致网络网络穷于应付穷于应付”r不同于流量控制不同于流量控制!r后果后果:m丢失数据分组丢失数据分组(路由器缓存溢出路由器缓存溢出)m长时间的延迟长时间的延迟(在路由器的缓存中排队在路由器的缓存中排队)r在网络发展的技术中的在网络发展的技术中的a top-10 problem!31第4讲 传输层之二缘由缘由/代价代价-拥塞问题拥塞问题:场景场景1 r两个发送端两个发送端,
28、两个两个接收端接收端r一个路由器一个路由器,有限有限缓存缓存 r无重传机制无重传机制r发生拥塞时的延发生拥塞时的延迟迟r可达到的最大吞可达到的最大吞吐量吐量32第4讲 传输层之二缘由缘由/代价代价-拥塞问题拥塞问题:场景场景 2 r一个路由器一个路由器,有限有限 缓存缓存 r发送端重传丢失的分组发送端重传丢失的分组33第4讲 传输层之二缘由缘由/代价代价-拥塞问题拥塞问题:场景场景 2 r设计期望设计期望:(goodput)r“完美的完美的”重传仅仅是在分组丢失时重传仅仅是在分组丢失时:r重传被延迟的重传被延迟的(而不是丢失的而不是丢失的)分组造成大量无意义的分组造成大量无意义的 (比起完美比
29、起完美的情况的情况)对同样的对同样的linlout=linloutlinlout拥塞的拥塞的“代价代价”:r在给定的在给定的“goodput”下需要做更多的工作下需要做更多的工作(重传重传)r不必要的重传不必要的重传:链路上充斥着分组的多个拷贝链路上充斥着分组的多个拷贝34第4讲 传输层之二缘由缘由/代价代价-拥塞问题拥塞问题:场景场景 3 r四个发送端四个发送端r多步跳路径多步跳路径r超时超时/重传重传linQ:当当 和和 增加时发增加时发生了什么生了什么?lin35第4讲 传输层之二缘由缘由/代价代价-拥塞问题拥塞问题:场景场景 3 另一种拥塞的另一种拥塞的“代价代价”:r当分组被丢弃时当
30、分组被丢弃时,所有所有“上游上游”信道为该分组所作的信道为该分组所作的工作统统被浪费了工作统统被浪费了!36第4讲 传输层之二拥塞问题的解决方案拥塞问题的解决方案端对端的拥塞控制端对端的拥塞控制:r没有来自网络的反馈信息没有来自网络的反馈信息r对拥塞问题的了解来自于对对拥塞问题的了解来自于对数据丢失和延迟的推断数据丢失和延迟的推断r有有 TCP来解决来解决网络辅助的拥塞控制网络辅助的拥塞控制:r路由器向端系统提供反馈路由器向端系统提供反馈m一个比特位的说明一个比特位的说明(SNA,DECNet,TCP/IP ECN,ATM)m显式告知发送方所应采用显式告知发送方所应采用的数据速率的数据速率两大
31、类拥塞控制的办法两大类拥塞控制的办法:37第4讲 传输层之二TCP 拥塞控制拥塞控制r端到端的控制端到端的控制(无需网络协助无需网络协助)r传输速率限制由建立在数据段之上的拥塞窗口尺寸传输速率限制由建立在数据段之上的拥塞窗口尺寸Congwin决定决定:rw=数据段数量数据段数量,每个具有每个具有 MSS字节字节,在一个在一个 RTT周期周期内发送内发送:吞吐量 =w*MSS RTT Bytes/secCongwin38第4讲 传输层之二TCP 拥塞控制拥塞控制:r两个两个“阶段阶段”mslow start(慢启动)(慢启动)mcongestion avoidance(拥塞避免)拥塞避免)r 重
32、要变量重要变量:mCongwinmthreshold:定义两个定义两个慢启动之间,拥塞控制阶慢启动之间,拥塞控制阶段的门限值段的门限值r“刺探刺探”可用带宽可用带宽:m理想情况理想情况:全速传输全速传输(Congwin 越大越好越大越好)没有没有数据丢失数据丢失m增加增加 Congwin 直到出现直到出现数据丢失数据丢失(拥塞拥塞)m数据丢失数据丢失:减小减小 Congwin,然后重新开始然后重新开始进行刺探进行刺探(增加增加Congwin)39第4讲 传输层之二TCP Slowstart(慢启动)(慢启动)r窗口尺寸按指数递增窗口尺寸按指数递增(每隔每隔 RTT)(不算太慢不算太慢!)r丢失
33、事件丢失事件:超时超时(Tahoe TCP)和和/或三次重复或三次重复 ACKs(Reno TCP)initialize:Congwin=1for(each segment ACKed)Congwin+until(loss event OR CongWin threshold)Slowstart 算法Host Aone segmentRTTHost Btimetwo segmentsfour segments40第4讲 传输层之二TCP 拥塞避免拥塞避免/*slowstart is over */*Congwin threshold*/Until(loss event)every w segm
34、ents ACKed:Congwin+threshold=Congwin/2Congwin=1perform slowstart拥塞避免11:在出现三次重复的ACK后,TCP Reno 将跳过 slowstart(快速恢复)在此阶段,Congwin以线性方式增长,发生超时,门限值减半41第4讲 传输层之二TCP 拥塞避免策略拥塞避免策略:rAIMD:madditive increase(加加法形式增加);法形式增加);multiplicative decrease(倍数形式减倍数形式减少)少)m每个每个RTT将窗口尺寸将窗口尺寸加加1m当发生数据丢失时用当发生数据丢失时用2除窗口尺寸除窗口尺寸
35、AIMD42第4讲 传输层之二TCP 公平性公平性公平性目标公平性目标:如果如果 N TCP 会会话共享瓶颈链路话共享瓶颈链路,每个应该每个应该分得分得 1/N 链路传输能力链路传输能力TCP connection 1bottleneckroutercapacity RTCP connection 243第4讲 传输层之二为什么说为什么说TCP是公平的是公平的?两个竞争性的会话两个竞争性的会话:r当吞吐量增加时,加法的结果斜率为当吞吐量增加时,加法的结果斜率为 1r而成倍递减则会等比减少连接的吞吐量而成倍递减则会等比减少连接的吞吐量 RR同等的带宽共享连接 1 的吞吐量连接 2 的吞吐量congestion avoidance:additive increaseloss:decrease window by factor of 2拥塞避免:加法形式增加窗口尺寸丢包:以2为除数减小窗口来进行带宽的充分使用44第4讲 传输层之二第第5讲讲:小结小结r传输层服务原理传输层服务原理:m复用复用/分用分用m可靠数据传输可靠数据传输m流量控制流量控制m拥塞控制拥塞控制r因特网传输层的实现和实例因特网传输层的实现和实例mUDPmTCP45第4讲 传输层之二
限制150内