七章节传输层协议讲解学习

上传人:yuzo****123 文档编号:137569103 上传时间:2020-07-09 格式:PPT 页数:66 大小:561.50KB
返回 下载 相关 举报
七章节传输层协议讲解学习_第1页
第1页 / 共66页
七章节传输层协议讲解学习_第2页
第2页 / 共66页
七章节传输层协议讲解学习_第3页
第3页 / 共66页
七章节传输层协议讲解学习_第4页
第4页 / 共66页
七章节传输层协议讲解学习_第5页
第5页 / 共66页
点击查看更多>>
资源描述

《七章节传输层协议讲解学习》由会员分享,可在线阅读,更多相关《七章节传输层协议讲解学习(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地址和端口,TCP/UDP 众所周知端口号,7.2 UDP协议,提供主机通信 IP服务特性 报文可能丢

2、失 报文可能出错 报文可能乱序到达 报文在网络上可能被延迟任意长时间 支持多路复用,提供进程通信 UDP服务特性 报文可能丢失 报文可能出错 报文可能乱序到达 报文在网络上可能被延迟任意长时间 支持多路复用,IP与UDP关系,IP 提供主机通信 通信对象命名是IP 地址 IP地址定位到主机,UDP 提供进程通信 通信对象命名是Port 号 Port号定位到进程,1、报文格式,2、多路复用,3、伪头部,7.3 TCP协议,7.3.1 服务特性 7.3.2 报文格式 7.3.3 连接建立和终止 7.3.4 差错控制 7.3.5 重传定时器,7.3.6 流量控制 7.3.7 拥塞控制 7.3.8 T

3、CP扩展 7.3.9 触发传输 7.3.10 记录边界,7.3.1 服务特性(1),面向连接 全双工 点到点 可靠 字节流服务 多路复用,服务特性(2),流量控制 保证发送方不要“淹没”接收方 拥塞控制 保证发送方不要“淹没”网络,字节流(1),字节流(2),1) 发送和接受,TCP都使用缓存 2) 应用进程发送的数据首先保留在TCP发送缓存中,当数据量达到一个报文段大小时,TCP就向外发送数据。 3) 应用进程的多个发送请求,可能对应一个TCP数据发送;,字节流(3),4) 可以使用PUSH机制使应用进程的每个发送请求都对应一个TCP数据发送; 5) TCP收到保文后存放在接收缓存中,等待应

4、用进程读取; 6) 一个TCP发送可以对应多个TCP读操作;多个TCP发送可以对应一个读操作。,7.3.2 报文格式,字段含义(1),(1)源端口和目的端口 各2个字节,表示源和目的端口号。 (2)发送序号 4字节,指出报文中数据在发送方的数据流中的位置(以字节编号)。 (3)确认序号 4字节,指接收方希望下一次接收的字节序号。 (4)TCP头长 4比特,指出以32比特为单位的报文头部长度。该域是针对变长的“选项”域设计的。,字段含义(2),(5)同步标志位SYN, 当SYN=1而ACK=0时,表明这是一个建立连接请求报文,若对方同意建立该连接,则应在发回的报文中使将SYN和ACK标志位同时置

5、1。 (6)确认标志位ACK 只有当ACK=1时确认序号字段才有意义。当ACK=0时,确认序号没有意义。 (7)终止标志位FIN(FINal) 当FIN1时,表明数据已经发送完毕,并请求释放连接。,字段含义(3),(8)重建标志位RST(ReSeT) 当RST=1时,表明出现严重差错,必须释放连接,然后重新建立连接。 (9)紧急标志位URG(URGent) 当URG=1时,表明此报文是紧急数据,应尽快传送出去。 (10)急迫标志位PSH(PuSH) 当PSH=1时,请求接收方TCP协议将该报文立即交给应用程序。,字段含义(4),(11)通告窗口 2字节。该字段实际上是接收方告诉发送方它的接收窗

6、口大小,其单位为字节。通告窗口字段主要是用于流量控制。 (12)校验和 2字节。校验和字段检验的范围包括TCP报文的头部和数据区这两部分。 (13)可选项 长度可变。最常用的选项,即最大报文长度MSS(Maximum Segment Size)。,7.3.3 连接建立和终止,TCP状态变换图,7.3.4 差错控制,字节编号 字节确认 超时重传,1、字节编号,每个TCP连接传输的字节数据由TCP进行随机编号,即每个TCP连接开始时第一个TCP报文段第一字节数据的编号是随机选取的(避免初始序列号ISN攻击)。,举例,假设某条TCP连接要传送5000字节的文件,TCP对第一个字节的编号从10001(

7、随机选取的)开始。假设这个文件分为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,001 到 14,000) 报文段5 顺序号: 14,001 (范围: 14,001 到 15,000),2、字节确认,TCP采用的是字节确认,一般情况下,接收方确认已收到的最长的

8、、连续的字节计数,TCP报文的每个确认序号字段指出下一个希望接收的字节,实际上就是对已经收到的所有字节的确认。 字节确认的优点是即使确认丢失也不一定导致发送方重传。,3、超时重传,发送方TCP为了恢复丢失或者损坏的报文段,必须对丢失或者损坏的报文段进行重传。事实上,发送方TCP每发送一个TCP报文段,就启动一个重传定时器,如果在规定的时间之内没有收到接收方TCP返回的确认报文,重传定时器超时,与于是发送重传该TCP报文。,7.3.5 重传定时器,1、原始算法 2、Karn/Partridge算法,1、原始算法,EstimatedRTT = EstimatedRTT + (1-) SampleR

9、TT 因子决定了EstimatedRTT对延迟变化的反应速度;当接近1时,短暂的延迟变化对EstimatedRTT几乎不起作用;而当接近0时,EstimatedRTT紧随延迟的变化而变化。原始的TCP协议规范建议值在0.8到0.9之间。,超时定时器计算,TimeOut = EstimatedRTT 当接近1时,TCP能迅速检测到报文丢失并及时重传,从而减少等待时间,但可能引起不必要的重传。当太大时,重传报文的数目减少,但等待确认的时间太长。作为折衷,原始的TCP协议规范一般推荐取2。,2、Karn/Partridge算法,产生超时后,当重传一个报文时,TCP停止计算机RTT采样值;TCP只为没

10、有重传的报文测量RTT采样值。 即每当TCP有超时重传时,它下次的超时定时器的值设置成上次的两倍,而并不以上次的EstimatedRTT为基础。,7.3.6 流量控制,1、滑动窗口机制 2、坚持定时器 3、保持定时器,1、滑动窗口机制,与数据链路层不同的是:TCP不是使用一个固定大小的滑动窗口,而是由接收方通过TCP报文头部的通告窗口AdvertisedWindow字段向发送方通告它的窗口大小。 发送方在任意时刻没有确认的字节数不能超过通告窗口AdvertisedWindow的值。 接收方根据分配的缓冲区的大小来为通告窗口AdvertisedWindow选择一个合适的值。,发送和接收缓冲区(1

11、),发送方的TCP维护一个发送缓冲区。发送缓冲区用来保存那些已经发送出去但是还没有收到对方确认的数据以及发送方应用进程写入但尚未发送的数据。 而接收方的TCP也同样维护着一个接收缓冲区。接收缓冲区保存那些保留那些乱序到达接收方的数据以及那些按顺序到达接收方(即该字节流前面的字节都没有丢失)但接收进程来不及读出的数据。,发送和接收缓冲区(2),发送方TCP,维持着3个指针,分别是:LastByteAcked、LastByteSent和LastByteWritten。 LastByteAcked表示已经应答的字节编号 LastByteSent表示已经发送但尚未收到确认的字节编号 LastByteW

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

13、方TCP和接收方TCP的缓冲区大小是有限的,我们分别用MaxSendBuffer和MaxRcvBuffer表示 。,接收方的通告窗口,接收方的通告窗口 AdvertisedWindow = MaxRcvBuffer (LastByteRcvd LastByteRead) 这个值就代表接收方TCP缓冲区剩下的可用缓冲区的大小,发送方的发送窗口,发送方的发送窗口 EffectiveWindow = AdvertisedWindow -(LastByteSend LastByteAcked)发送方计算 只有EffectiveWindow大于0,发送方才能发送数据。,发送方的动作,首先,由于接收方应用

14、进程处理速度慢,最终导致接收方TCP缓冲区满,这就意味着接收方发给发送方的通告窗口为0。发送方TCP一看到通告窗口为0,就立即停止发送数据。 但是,发送方应用进程会一直往发送方TCP缓冲区里填入数据,最终会将发送方TCP缓冲区填满,从而导致发送方TCP将发送方应用进程阻塞。,接收方的动作,而在接收方,一旦接收方应用进程开始从接收方TCP的接收方缓冲区读取数据,那么接收方TCP就可以打开它的窗口,亦即接收方TCP缓冲区可用空间不再为0,从而允许发送方TCP把数据从它的发送缓冲区发送出去。 而当发送方收到返回的确认后,就可以释放部分发送缓冲区的空间,从而发送方TCP不再阻塞发送方应用进程并允许发送

15、方应用进程继续往发送缓冲区里写入数据。,2、坚持定时器(1),因为,一旦接收方的通告窗口变为0,就不允许发送方发送任何数据,直到接收到接收方TCP的确认,并宣告非零窗口值。但是这个确认可能丢失。需要引起注意的是,在TCP中,对确认是不需要确认的。假如确认丢失了,接收方TCP仍然认为这个确认已经正确到达发送方,因此接收方就等待发送方TCP发送更多的报文段。发送方TCP由于没有收到确认,就一直等待接收方TCP发送确认以及非零通告窗口值,双方进入死锁状态。,坚持定时器(2),要打开这种死锁,TCP为每一个连接使用坚持定时器。当发送方TCP接收到通告窗口值为0的确认时,就启动坚持定时器。当坚持定时器超

16、时,发送方TCP就发送一个特殊的报文段,叫探测报文。探测报文只有1字节数据,它有序号,但它的序号永远不需要确认。探测报文的目的是提醒接收方TCP,确认已经丢失,必须重传。,坚持定时器(3),坚持定时器的定时宽度通常设置为重传定时器的宽度。如果在坚持定时器超时后还没有收到对方的应答,则将定时宽度加倍,重新发送1个新的探测报文,直到增加到门限值(通常是60s)为止。以后,发送方每隔60s就发送一个探测报文,直到接收窗口重新打开。,3、保活定时器(1),在某些TCP实现中要使用保活(keepalive)定时器来防止TCP连接的长时间空闲。假定客户建立了到服务器的TCP连接,并且发送了一些数据,然后就出故障了。在这种情况下,这个TCP连接就永远地处于打开状态。,保活定时器(2),要解决这个问题,就必须在服务器使用保活定时器。每当服务器收到客户的信息,就将保活定时器复位。保活定时器通常设置为2小时,若服务器超过了2小时还没有收到客户的信息,服务器就不断地(每隔75s)发送探测报文,若服务器发送了10个探测报文还没有收到客户的响应,服务器就终止TCP连接。,7.3.7 拥塞和拥塞控制,从

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

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

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