七章节传输层协议.ppt

上传人:本田雅阁 文档编号:3314283 上传时间:2019-08-11 格式:PPT 页数:66 大小:531.07KB
返回 下载 相关 举报
七章节传输层协议.ppt_第1页
第1页 / 共66页
七章节传输层协议.ppt_第2页
第2页 / 共66页
七章节传输层协议.ppt_第3页
第3页 / 共66页
七章节传输层协议.ppt_第4页
第4页 / 共66页
七章节传输层协议.ppt_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《七章节传输层协议.ppt》由会员分享,可在线阅读,更多相关《七章节传输层协议.ppt(66页珍藏版)》请在三一文库上搜索。

1、第七章 传输层协议,7.1 进程通信与端口 7.2 UDP协议 7.3 TCP协议,7.1 进程通信与端口,网络层或互联网层提供主机通信服务 传输层提供程通信服务 为了提供进程通信功能,TCP/IP协议族提出了端口(port)的概念,用于标识进程。,传输层与网络层或互联网层的关系,网络层与互联网层 功能:主机通信 协议:IP、 CLNP (ISO/OSI) 特点:hop-by-hop 传输层 功能:进程通信 协议:UDP和TCP、 TP04 (ISO/OSI) 特点:end-to-end,IP地址和端口,端口分配方法,第一种叫全局分配 这是一种集中控制方式,由IANA进行统一分配,并将结果公布

2、于众。 众所周知端口就是属于这一类。 第二种是本地分配 注册端口 动态分配 动态绑定,TCP/UDP 众所周知端口号,7.2 UDP协议,提供主机通信 IP服务特性 报文可能丢失 报文可能出错 报文可能乱序到达 报文在网络上可能被延迟任意长时间 支持多路复用,提供进程通信 UDP服务特性 报文可能丢失 报文可能出错 报文可能乱序到达 报文在网络上可能被延迟任意长时间 支持多路复用,IP与UDP关系,IP 提供主机通信 通信对象命名是IP 地址 IP地址定位到主机,UDP 提供进程通信 通信对象命名是Port 号 Port号定位到进程,1、报文格式,2、多路复用,3、伪头部,7.3 TCP协议,

3、7.3.1 服务特性 7.3.2 报文格式 7.3.3 连接建立和终止 7.3.4 差错控制 7.3.5 重传定时器,7.3.6 流量控制 7.3.7 拥塞控制 7.3.8 TCP扩展 7.3.9 触发传输 7.3.10 记录边界,7.3.1 服务特性(1),面向连接 全双工 点到点 可靠 字节流服务 多路复用,服务特性(2),流量控制 保证发送方不要“淹没”接收方 拥塞控制 保证发送方不要“淹没”网络,字节流(1),字节流(2),1) 发送和接受,TCP都使用缓存 2) 应用进程发送的数据首先保留在TCP发送缓存中,当数据量达到一个报文段大小时,TCP就向外发送数据。 3) 应用进程的多个发

4、送请求,可能对应一个TCP数据发送;,字节流(3),4) 可以使用PUSH机制使应用进程的每个发送请求都对应一个TCP数据发送; 5) TCP收到保文后存放在接收缓存中,等待应用进程读取; 6) 一个TCP发送可以对应多个TCP读操作;多个TCP发送可以对应一个读操作。,7.3.2 报文格式,字段含义(1),(1)源端口和目的端口 各2个字节,表示源和目的端口号。 (2)发送序号 4字节,指出报文中数据在发送方的数据流中的位置(以字节编号)。 (3)确认序号 4字节,指接收方希望下一次接收的字节序号。 (4)TCP头长 4比特,指出以32比特为单位的报文头部长度。该域是针对变长的“选项”域设计

5、的。,字段含义(2),(5)同步标志位SYN, 当SYN=1而ACK=0时,表明这是一个建立连接请求报文,若对方同意建立该连接,则应在发回的报文中使将SYN和ACK标志位同时置1。 (6)确认标志位ACK 只有当ACK=1时确认序号字段才有意义。当ACK=0时,确认序号没有意义。 (7)终止标志位FIN(FINal) 当FIN1时,表明数据已经发送完毕,并请求释放连接。,字段含义(3),(8)重建标志位RST(ReSeT) 当RST=1时,表明出现严重差错,必须释放连接,然后重新建立连接。 (9)紧急标志位URG(URGent) 当URG=1时,表明此报文是紧急数据,应尽快传送出去。 (10)

6、急迫标志位PSH(PuSH) 当PSH=1时,请求接收方TCP协议将该报文立即交给应用程序。,字段含义(4),(11)通告窗口 2字节。该字段实际上是接收方告诉发送方它的接收窗口大小,其单位为字节。通告窗口字段主要是用于流量控制。 (12)校验和 2字节。校验和字段检验的范围包括TCP报文的头部和数据区这两部分。 (13)可选项 长度可变。最常用的选项,即最大报文长度MSS(Maximum Segment Size)。,7.3.3 连接建立和终止,TCP状态变换图,7.3.4 差错控制,字节编号 字节确认 超时重传,1、字节编号,每个TCP连接传输的字节数据由TCP进行随机编号,即每个TCP连

7、接开始时第一个TCP报文段第一字节数据的编号是随机选取的(避免初始序列号ISN攻击)。,举例,假设某条TCP连接要传送5000字节的文件,TCP对第一个字节的编号从10001(随机选取的)开始。假设这个文件分为5个TCP报文段进行传送,每个TCP报文段携带1000字节,那么每个TCP报文段的字节编号如下所示: 报文段1 顺序号: 10,001 (范围: 10,001 到 11,000) 报文段2 顺序号: 11,001 (范围: 11,001 到 12,000) 报文段3 顺序号: 12,001 (范围: 12,001 到 13,000) 报文段4 顺序号: 13,001 (范围: 13,00

8、1 到 14,000) 报文段5 顺序号: 14,001 (范围: 14,001 到 15,000),2、字节确认,TCP采用的是字节确认,一般情况下,接收方确认已收到的最长的、连续的字节计数,TCP报文的每个确认序号字段指出下一个希望接收的字节,实际上就是对已经收到的所有字节的确认。 字节确认的优点是即使确认丢失也不一定导致发送方重传。,3、超时重传,发送方TCP为了恢复丢失或者损坏的报文段,必须对丢失或者损坏的报文段进行重传。事实上,发送方TCP每发送一个TCP报文段,就启动一个重传定时器,如果在规定的时间之内没有收到接收方TCP返回的确认报文,重传定时器超时,与于是发送重传该TCP报文。

9、,7.3.5 重传定时器,1、原始算法 2、Karn/Partridge算法,1、原始算法,EstimatedRTT = EstimatedRTT + (1-) SampleRTT 因子决定了EstimatedRTT对延迟变化的反应速度;当接近1时,短暂的延迟变化对EstimatedRTT几乎不起作用;而当接近0时,EstimatedRTT紧随延迟的变化而变化。原始的TCP协议规范建议值在0.8到0.9之间。,超时定时器计算,TimeOut = EstimatedRTT 当接近1时,TCP能迅速检测到报文丢失并及时重传,从而减少等待时间,但可能引起不必要的重传。当太大时,重传报文的数目减少,但

10、等待确认的时间太长。作为折衷,原始的TCP协议规范一般推荐取2。,2、Karn/Partridge算法,产生超时后,当重传一个报文时,TCP停止计算机RTT采样值;TCP只为没有重传的报文测量RTT采样值。 即每当TCP有超时重传时,它下次的超时定时器的值设置成上次的两倍,而并不以上次的EstimatedRTT为基础。,7.3.6 流量控制,1、滑动窗口机制 2、坚持定时器 3、保持定时器,1、滑动窗口机制,与数据链路层不同的是:TCP不是使用一个固定大小的滑动窗口,而是由接收方通过TCP报文头部的通告窗口AdvertisedWindow字段向发送方通告它的窗口大小。 发送方在任意时刻没有确认

11、的字节数不能超过通告窗口AdvertisedWindow的值。 接收方根据分配的缓冲区的大小来为通告窗口AdvertisedWindow选择一个合适的值。,发送和接收缓冲区(1),发送方的TCP维护一个发送缓冲区。发送缓冲区用来保存那些已经发送出去但是还没有收到对方确认的数据以及发送方应用进程写入但尚未发送的数据。 而接收方的TCP也同样维护着一个接收缓冲区。接收缓冲区保存那些保留那些乱序到达接收方的数据以及那些按顺序到达接收方(即该字节流前面的字节都没有丢失)但接收进程来不及读出的数据。,发送和接收缓冲区(2),发送方TCP,维持着3个指针,分别是:LastByteAcked、LastByt

12、eSent和LastByteWritten。 LastByteAcked表示已经应答的字节编号 LastByteSent表示已经发送但尚未收到确认的字节编号 LastByteWritten表示发送方应用进程写到发送方TCP但还没有发送的字节编号 在LastByteAcked左边的缓冲区可以释放了,因为这些字节是已经发送出去而且已经收到确认了。,接收方TCP,维持着3个指针,分别是LastByteRead、NextByteExpexcted和LastByteRcvd。 LastByteRead表示接收方应用进程一定读走的字节编号 NextByteExpexcted表示接收方TCP期望接收的字节编

13、号 LastByteRcvd表示到目前已经接收到最大字节编号。 在LastByteRead左边的缓冲区可以释放了,因为这些字节是已经被接收方应用进程读出了。,流量控制机制,发送方TCP和接收方TCP的缓冲区大小是有限的,我们分别用MaxSendBuffer和MaxRcvBuffer表示 。,接收方的通告窗口,接收方的通告窗口 AdvertisedWindow = MaxRcvBuffer (LastByteRcvd LastByteRead) 这个值就代表接收方TCP缓冲区剩下的可用缓冲区的大小,发送方的发送窗口,发送方的发送窗口 EffectiveWindow = AdvertisedWin

14、dow -(LastByteSend LastByteAcked)发送方计算 只有EffectiveWindow大于0,发送方才能发送数据。,发送方的动作,首先,由于接收方应用进程处理速度慢,最终导致接收方TCP缓冲区满,这就意味着接收方发给发送方的通告窗口为0。发送方TCP一看到通告窗口为0,就立即停止发送数据。 但是,发送方应用进程会一直往发送方TCP缓冲区里填入数据,最终会将发送方TCP缓冲区填满,从而导致发送方TCP将发送方应用进程阻塞。,接收方的动作,而在接收方,一旦接收方应用进程开始从接收方TCP的接收方缓冲区读取数据,那么接收方TCP就可以打开它的窗口,亦即接收方TCP缓冲区可用

15、空间不再为0,从而允许发送方TCP把数据从它的发送缓冲区发送出去。 而当发送方收到返回的确认后,就可以释放部分发送缓冲区的空间,从而发送方TCP不再阻塞发送方应用进程并允许发送方应用进程继续往发送缓冲区里写入数据。,2、坚持定时器(1),因为,一旦接收方的通告窗口变为0,就不允许发送方发送任何数据,直到接收到接收方TCP的确认,并宣告非零窗口值。但是这个确认可能丢失。需要引起注意的是,在TCP中,对确认是不需要确认的。假如确认丢失了,接收方TCP仍然认为这个确认已经正确到达发送方,因此接收方就等待发送方TCP发送更多的报文段。发送方TCP由于没有收到确认,就一直等待接收方TCP发送确认以及非零

16、通告窗口值,双方进入死锁状态。,坚持定时器(2),要打开这种死锁,TCP为每一个连接使用坚持定时器。当发送方TCP接收到通告窗口值为0的确认时,就启动坚持定时器。当坚持定时器超时,发送方TCP就发送一个特殊的报文段,叫探测报文。探测报文只有1字节数据,它有序号,但它的序号永远不需要确认。探测报文的目的是提醒接收方TCP,确认已经丢失,必须重传。,坚持定时器(3),坚持定时器的定时宽度通常设置为重传定时器的宽度。如果在坚持定时器超时后还没有收到对方的应答,则将定时宽度加倍,重新发送1个新的探测报文,直到增加到门限值(通常是60s)为止。以后,发送方每隔60s就发送一个探测报文,直到接收窗口重新打

17、开。,3、保活定时器(1),在某些TCP实现中要使用保活(keepalive)定时器来防止TCP连接的长时间空闲。假定客户建立了到服务器的TCP连接,并且发送了一些数据,然后就出故障了。在这种情况下,这个TCP连接就永远地处于打开状态。,保活定时器(2),要解决这个问题,就必须在服务器使用保活定时器。每当服务器收到客户的信息,就将保活定时器复位。保活定时器通常设置为2小时,若服务器超过了2小时还没有收到客户的信息,服务器就不断地(每隔75s)发送探测报文,若服务器发送了10个探测报文还没有收到客户的响应,服务器就终止TCP连接。,7.3.7 拥塞和拥塞控制,从拥塞的表现形式定义,拥塞是指由于路

18、由器中排队的报文足够多,导致缓冲区溢出,路由器开始丢弃报文的现象; 从拥塞对网络的影响来定义,拥塞是指网络中存在过多的报文时,导致网络性能下降的现象; 从拥塞产生的根本原因来定义,拥塞是指当报文到达速率大于路由器的转发速率时发生的一种现象。,TCP拥塞控制,拥塞控制的源算法中使用最广泛的是TCP 拥塞控制机制。与TCP 类似的、主要依靠端节点执行拥塞控制的机制统称为端到端拥塞控制。,1、慢启动,2、拥塞避免,TCP为每个连接维持一个新的状态变量,成为拥塞窗口cwnd(CongestionWindow)。 MaxWindow = MIN(cwnd,AdvertisedWindow) Effect

19、iveWindow = MaxWindow -(LastByteSent - LastByteAcked),拥塞避免阶段,3、快速重传,4、快速恢复,在快速重传期间发送方接收到重复ACK后,进入拥塞避免而不进入慢启动。因为重复ACK不仅意味着报文的丢失,而且意味着在丢失的报文之后还接收到其后的报文,即网络上仍然有数据流动,即网络的拥塞还不是非常严重,如果这个时候突然进入慢启动阶段,不利于充分利用带宽。,快速重传和快速恢复(1),(1)当发送方接收到3个重复ACK时,把ssthresh设为当前拥塞窗口cwnd的一半,但是不小于2个报文段。然后重传丢失的报文。最后把cwnd设为ssthresh加上

20、3个MSS大小。这就用已经离开网络的报文数量和接收方已经缓存的报文数量放大了拥塞窗口。 (2)发送方每收到一个重复的ACK,则将cwnd增加1个MSS大小,因为这意味着有TCP报文段离开网络。如果cwnd允许的话,发送1个TCP报文段。,快速重传和快速恢复(2),(3)当发送方接收到新的ACK,将cwnd设为ssthresh,退出快速恢复状态。这个ACK应该是第1步中重传TCP报文段到达接收方方后接收方返回的ACK。此外,这个ACK应当确认是对丢失报文以及所有中间报文的确认。,TCP拥塞控制,TCP拥塞控制实例,7.3.8 TCP扩展,为什么要对TCP进行扩展 TCP中字节序号字段(Sequence Number)和窗口(Window)字段的长度以及它们对TCP正确性和性能的影响。,32比特序号空间回绕的时间,100ms RTT所需的窗口大小,TCP扩展功能,第一个扩展功能有助于改善TCP的超时机制 打时标; 第二个扩展接解决了TCP的32比特序号在高速网络上回绕过快的问题。 32时标32位序号 第三个扩展功能允许TCP通告更大的窗口,因此允许发送方发送更多的数据以填满更大的延迟带宽管道。 规模因子16字节,作业,8,9,10,20,21,23,24,25,26,27,28,29,30,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1