【文档说明】计算机网络(传输层)概要课件.ppt,共(52)页,1.192 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-76931.html
以下为本文档部分文字说明:
12/1/202210:55:34AM1传输层一.传输服务二.传输协议三.TCP协议四.UDP协议12/1/202210:55:34AM2一、传输服务传输服务•传输层实体运行在用户主机中,利用通信子网提供的服务,向用户(应用进程或会话层实体)提供端到端的通信服务
。•面向连接的传输服务:这种服务具有基于连接的流量控制、差错控制和分组排序功能,因而面向连接意味着可靠和有序的提交。然而实现这种服务必须付出建立、维护和终止逻辑连接的开销。•无连接的传输服务(数据报服务)不保证可靠的顺序提交,这
个缺点有时显得不很重要。例如通过网络定期地进行数据采集时,偶然丢失数据是允许的,因为后来的数据可以弥补以前的损失。又例如向网络用户广播消息或发布实时消息时,也不在乎个别用户没有收到不很重要的报文。特别是在分布式事务处理环境中.通常采用请求—响应的工作方式,如
果某个用户的请求没有得到服务器的响应,这种错误往往由用户进程处理,传输协议不必做差错恢复工作。控制单元12/1/202210:55:34AM3传输服务(续)服务质量QoS服务质量(QualityofService,)参数在建立传输
连接过程中可协商:•残留错误率;•传输失败的概率;•平均(或最大)传输时延;•平均(或最大)吞吐率;•优先级。各种网络都有特定的服务质量参数和取值范围。运行在主机中的传输实体根据下层网络提供的服务决定如何满足用户的要求。如果下层协议提供了可选的服务质量参数,可以提供不同
优先级、不同可靠性、不同的吞吐率和延迟时间的服务,则传输实体的工作只是顺水推舟地让下层实体实现用户的要求12/1/202210:55:34AM4传输服务(续)服务质量QoS•X.25网络具有协商吞吐率的机制,它可以改变流控参数和调配网络资源的数量,提供不同吞吐率的虚电路,运行在X.25网络上的传输
层在处理用户的吞吐率需求时不需要做多少工作,只是把用户的要求传达给下层网络。另外,传输实体也可采取其他的手段满足用户的要求,例如为了提高吞吐率,可以把一个传输连接分裂为几个虚电路连接。•传输实体在满足用户的QoS需求时可能打折扣,甚至根本做不到。这可能是通信子网
提供的能力有限,或者是用户提出的要求不能兼顾,例如可靠性和延迟时间,吞吐率和服务费用之间必须做出一定的折衷。这时传输实体会向上层实体提出指标较低的反建议,按照降低规格的QoS参数建立连接。•文件传输协议需要大的吞吐率,甚至还需要高可靠性,以避免文件级的多次重传。事务处理协议(实时数据库查询)要求低
延迟,而电子邮件协议则要求多种优先级。实现这些特殊要求就要把服务质量请求交给传输协议来完成12/1/202210:55:34AM5传输服务(续)加急投送服务这种服务类似于高优先级服务,但是有所区别。由于传输层要向上层提供可靠顺序的提交服务,所以对各种协议
数据单元都要进行流量控制,但是加急投送数据不受流控影响。加急投送服务的数据包可以赶上和超过前边的数据包,传输实体调动可用的设施尽快地传送加急数据。在接收端,传输实体用中断方式通知用户立即接收加急数据,并用加急的协议数据单元返
回应答。加急投送服务仅用于需要紧急传送的少量数据,例如终端发出的中断字符或是告警状态指示等,而优先服务只是通过资源分配和信道参数的调整使得优先级高的数据比普通数据传送得更快一些。12/1/202210:55:34A
M6传输服务(续)连接管理服务传输实体要对连接的建立和释放进行管理。建立连接的过程可以是对称的,即允许任何一方用户启动建立连接的过程;也可以是非对称的,即仅允许一方提出连接请求,另一方只能接受(或不接受)对方提出的连接
请求。非对称方式用于建立单向连接。连接的终止可以是突然的或平稳的,当连接突然终止时,正在传输中的数据就丢失了,而平稳终止连接则可以保证所有在传输途中的数据完整提交之前任何一方不会释放资源,不会关闭连接。12/1/202210:
55:34AM7二、传输协议传输协议的分类ISO定义了三种网络服务:•A型:网络连接具有可接受的残留差错率和可接受的失效通知率。•B型:网络连接具有可接受的残留差错率和不可接受的失效通知率。•C型:网络层
提供无连接的服务,这种服务具有不可接受的残留差错率。所谓差错是指有丢失或重复的网络层协议数据单元。如果差错被网络协议捕获并得到纠正,则这种差错对传输实体是透明的。如果网络层检测到了差错,但不能恢复,则
必须通知传输实体,这叫失效通知。例如在X.25网络中发生复位时就会通知上层协议。还有的差错既没有得到纠正,也没有通知传输实体,这就是残留差错。12/1/202210:55:34AM8传输协议(续)5种传
输协议•TP0协议适用于A型网络,它是CCITT为智能用户电报(Teletex)开发的协议。TP0为请求的传输连接建立一条对应的网络连接,并假定网络连接完全可靠,不再另外进行流控和排序。•TP1协议适用于B型网络,它在TP0协议的基础上增加了差错恢复功能。差错恢复功能表现在对
传输协议数据单元(TPDU)编号,当X.25复位命令出现后可以重新取得同步,或者在X.25重启动之后再建传输连接,流控功能仍然由网络层协议实现。这种协议也提供加急投送服务。12/1/202210:55:34AM9传输协议(续)5种传输协议•TP2是TP0的增强型协议,它在TP0的基础上增
加了多路复用功能,多路复用到同一网络连接上的各个传输连接必须单独提供流控功能,因为一个网络连接不能同时控制多个数据流。•TP3协议综合了TP1和TP2的优点,它具有TP2的多路复用和流控能力,也提供TP1的差错恢复功能,适用于B型
网络。•TP4协议适用于C型网络。这种协议假定网络不可靠,本身具有差错恢复、流控和排序机制,并提供多路复用功能。TP4协议最复杂,功能最齐全。12/1/202210:55:34AM10传输协议(续)寻址问题•统
一的全局编址方案不可行:①有的通信实体是移动的,它的地址会改变;②有的通信设备连接到多个网络上,每个网络独立地为其指定地址。•分层名字:采用<网络><系统><实体名>的形式。优点是容易增加新的名字,因为每一个通信实
体的名字只在它所属的局部系统有效,分层名字还可提供地址信息,因而具有路由功能•扁平名字:在整个通信环境中有全局意义,这要求整个名字空间足够大,并且预先把统一的名字空间分配给各个通信系统。增加一个新的扁平名字得考
虑是否与其他全局名字相冲突,扁平名字不能指示通信实体属于哪个网络或主机系统。12/1/202210:55:34AM11传输协议(续)寻址问题•传输用户必须能够从名字中推导出通信对方的网络编号、站地址、传输实体标识和用户标识。
•站地址表示主机系统,就是网络层服务访问点NSAP;端口号与具体的用户相联系,对应于传输层服务访间点TSAP。这种地址结构中没有传输实体标识字段,通常一个站仅包含一个传输实体,所以站地址就代表了该站上的传输实体。即使一个站有几个传输实体,则各个传输实体应用
的传输协议类型不同,只要指明传输协议的类型(例如TP0或TP1)就可以区分了。12/1/202210:55:34AM12传输协议(续)如何获取对方传输用户的地址?•有些进程提供公共服务,其地址是众所周知的。•网络中可以配
置一个名字服务器,请求服务的用户可以查找名字服务器。•发起端的用户进程向地址已知的远端系统特权进程发出请求,特权进程派生出新的临时进程,并被分配给一个临时的端口地址。例如网络中有一个分时系统提供公共服务,它的地址是众所周知的,任何用户终端都可以登录在分时系统上;又例如为了均衡负载,数
据输入进程可能在局域网中从一个站移动到另一个站,这个进程的名字必须保存在名字服务器中,当它移动时名字服务器随时更新其地址;在大型主机上运行一个仿真程序,则可作为一个临时进程的例子,终端用户首先向主机上的远程作业管理进程发出请求,管理进程派生出仿真
进程并返回它的端口地址。12/1/202210:55:34AM13传输协议(续)多路复用•TP2~TP4类传输协议都提供多路复用功能,即由多个传输连接共享同一网络连接。由于在虚电路存续期间每个网络结点都要为之分配一定的缓冲资源,所以网络连接通常是按连接时
间计费的。在单个网络连接提供的吞吐率足够的情况下,把多个传输连接复用到一条网络连接上可合理地分担费用。这种方式的多路复用可以称为向上的多路复用。•向下的多路复用也叫分流,即把一个传输连接分配到多个网络连接上,这样可以获得较高的吞吐率,并增加可靠性。TP4协议提供了
分流功能。12/1/202210:55:34AM14传输协议(续)流量控制通过传输连接的数据流动过程为:发送端用户—>发送端传输实体—>发送端网络服务—>接收端网络服务—>接收端传输实体—>接收端用户。接收端传输实体要求限制数据流动的速率可能是出于下面的原因;1)接收端用户来不及接收
数据;2)接收端传输实体来不及接收数据。接收端传输实体为传输连接维持一定数量的缓冲区,用于存放TPDU。缓冲区可能溢出,所以实施流控是必要的。传输层对等实体之间不直接相连,传输实体之间的延迟大,而且延迟是变化的。所以流控难度大传输实体传输实体网络服务网络服务传输用户传输用户发送端接收端12/1
/202210:55:34AM15传输协议(续)传输层流控方案(1)接收端传输实体拒绝接受网络实体送来的TPDU;这是利用网络层流控实现传输层流控。当传输实体缓冲区充满时拒绝接受网络服务送来的数据,就触发了网络中的流控过程,从而引起发送端的网络服务不再接受它上面的
传输实体发来的TPDU。当多个传输连接复用在一个网络连接上时,这种机制就完全失效了,因为网络流控无法对各个传输连接分别提供流控。(2)利用固定大小的滑动窗口协议;这是数据链路层使用的方法。每一个数据单元都有编号
,窗口大小是固定的,当接收方想要减缓或者停止接收时就暂停发送应答信号,发送方发完窗口内的协议数据单元后停止发送。如果基础网络不可靠,还需要某种重传机制的辅助。12/1/202210:55:34AM16传输协
议(续)信贷(credit)滑动窗口协议第三种流控方案在控制数据流动速率方面给接收方提供了更大的自由度,在基础网络可靠的情况下,这种控制策略能产生平滑的数据流动,在基础网络不可靠时,它还是一种差错控制手段。这种控制技术把接收方的
应答信号与流控信号分开处理,不像固定大小的滑窗协议那样对两者用同一个信号控制。123456701234567012345670123456701234567012345670DT0DT4DT3DT2DT1ACK3,DT7DT6DT5ACK0,12345670123456701
2345670123456701234567012345670A可连续发送7个TPDUA根据收到的信贷数调整窗口B准备接收7个TPDUB应答了3个,准备接收5个TPDUA收到新的信贷数扩大了窗口B应答了5个,准备接收7个TPDU传输实体A传输实体BCDT5CDT712/1/202
210:55:34AM17传输协议(续)信贷滑窗协议接收方发出增加信贷数的时机和数量值得进一步讨论。保守的策略是当B已有空闲缓冲区时才增加信贷,信贷数的多少正好等于已有的自由缓冲区的数量。更为大胆一些的策略是B虽然没有自由缓冲区,但考虑到端到端的传输延迟,估计当要求的
TPDU来到时就可释放出新的自由缓冲区,这时也可增加信贷数。在传输延迟时间很长的网络中,提前增加信贷数能改善吞吐率。如果提前的时间和发出信贷的数量掌握得不够准确,可能会在TPDU来到时还没有得到预期的自由缓冲区,从而不得不丢弃数据,这时又需要重传机制的协助,所以要优化吞吐率必然使协议
操作更复杂12/1/202210:55:34AM18传输协议(续)信贷滑窗协议在网络不可靠的情况下,对以上方案稍加改进,就可以工作得很好。假定传输实体B向A发出形式为(ACKN,CDTM)的控制信号,表示对N之前
的TPDU的肯定应答,并且准备接收N到(N+M-1)的TPDU。如果B想把信贷增加到X,同时又没有收到新的TPDU,B可以发出控制信号(ACKN,CDTX);另一方面,如果B要应答Y个新接收的TPDU,而又不想增加信贷数,则B可继续发出控制信号(ACKN+Y,CDTM-Y)。如果发
送端等不到新的应答信号,则超时重传TPDU,这会引起重新应答,协议继续有效。12/1/202210:55:34AM19传输协议(续)信贷滑窗协议信贷信号丢失了,则会造成死锁。可能出现这样的情况:B发出(ACKN,CDT0),暂时关闭了发送窗
口,后来B发出(ACKN,CDTM),企图重新打开发送窗口,但这个流控信号丢失了。这时B认为它已发出了增加信贷的信号,而A却在等待信贷数额的到来,这样形成了互相等待的死锁状态。为了解决这个问题,B需要一个窗口定时器。B每发出
一个(ACK,CDT)信号,定时器就开始计时,当定时器超时后还未等到新的TPDU,则B必须重发(ACK,CDT),这样就打破了死锁僵局。另外,也可以要求A对B发出的(ACK,CDT)做出回答,B在一定时间间隔内等不到A的回答时就重发(AC
K,CDT),这时B的窗口定时器的时间间隔可以定得更长一些。(习题2)12/1/202210:55:34AM20传输协议(续)连接管理传输协议需要建立和释放连接。建立连接的过程有三个作用:(1)使通信双方确认对方存在;(2)协商任选参数,例如TPDU长度、窗口大小以及服务质量等;(3)分配
传输资源,例如存储缓冲区、连接入口表项等。建立和释放连接涉及传输用户和传输实体的一系列动作。用户向本地传输实体发送命令,传输实体通过控制TPDU与对等实体交互作用,执行协议过程。用户命令控制TPDULISTEN监听进来的连接请求OPEN打开一个与远端用户的连接RFC(R
equestForConnection)请求连接CLOSE关闭连接CLS(Close)关闭连接空闲连接建立等待CLS等待CLOSE空闲收到CLOSE/CLS发送CLS等待连接收到RFC发送RFC收到RFC收到CLOSE发送CLS收到CLS收到CLS收到CLOS
E发送CLS收到LISTEN收到OPEN发送RFC收到CLOSE监听12/1/202210:55:34AM21传输协议(续)连接管理如果两边同时主动要求建立连接,协议也能正常工作。然而当一方处于空闲状态
,另一方要求建立连接时,这个协议可能失败,所以需要补充以下三个子过程(任选其一);(1)传输实体发回CLS,拒绝对方的连接请求;(2)把连接请求排队,等候用户发出LISTEN命令;(3)传输实体用中断方式通知用户,要求建立连接。如果使用最后一
种机制,那么LISTEN命令实际上可以不要,或者用接受命令ACCEPT(同意按照请求的参数建立连接)代替之。任何一方用户都可以(或两方同时)发出CLOSE命令来释放连接。连接释放时可以突然断连或平稳断连。为了实现平稳断连,等待CLS的一方必须继续接收TPDU,直到收到对方发来
的CLS后才能释放连接。2022年12月1日星期四10时55分34秒22传输协议(续)连接管理TP4协议中对付不可靠网络服务的过程上述连接建立过程叫做两次握手。假定A向B发出RFC,如果出现网络服务不可靠的情况,可能有两种意外发生
:A的RFC丢失或B的RFC丢失。若求助于超时重传机制,A可以重发RFC,直到连接成功。超时重传可能会引起重复的协议数据单元。如果B发出的确认RFC丢失了,A超时重发RFC,B就会收到两个同样的RFC;如果B的确
认RFC没有丢失,而是延迟了,A超时重发,引起B再一次应答,A就会收到两个重复的确认RFC。出现这些情况时我们要求A和B能区分重复的协议数据单元,并在连接建立后丢弃被重复的RFC。2022年12月1日星
期四10时55分34秒23传输协议(续)连接管理重复的RFC可能在通信子网中存储起来,并且在连接已经释放后姗姗来迟,到达接收端。如果A发出的一个重复RFC在断连后到达B,B会以为是新来的连接请求,并照
例给予响应。进一步推理,当B的响应RFC到达A时,A刚好发出过第二次连接请求,A错以为这就是对它刚发出的请求的响应,于是建立了连接。因而协议失败了。解决这个问题的办法是使用三次握手过程。这个方案要求连接请求和连接确认都要显
式表示出连接的序列号,并且接收方对发送方的RFC给予应答。ARFCXBRFCY,ACKXDATAX,ACKYA发起连接请求A拒绝B的连接请求A应答并发送数据迟到的RFC,ACKRST,ACKZRFCZ,ACKWB接收并应答连接请求A
RFCXBRFCY,ACKXRST,ACKY迟到的连接请求B接收并应答连接请求A拒绝B的连接请求ARFCXBRFCY,ACKXDATAX,ACKY说明A发起连接请求B接收并应答连接请求A应答并发送数据2022年12月1日星期四10时55分34秒24传输协议(续)连接释放的
过程也须考虑控制TPDU丢失和重复的情况,仍然用三次握手过程断开连接。连接管理ABCLSY,ACKX(启动时钟)ACKY释放连接说明A主动终止连接B响应释放连接请求A应答并删除连接CLSX(启动时钟)释放连接B收到应答并删除连接12/1/202210:55:34AM25
传输协议(续)ACKY释放连接CLSX(启动时钟)丢失ABCLSY,ACKX(启动时钟)说明A主动终止连接B响应释放连接请求A应答并删除连接释放连接B没有收到应答超时后删除连接CLSX(启动时钟)ACK
Y释放连接CLSX(启动时钟)B删除连接A应答并删除连接ABCLSY,ACKX(启动时钟)说明A主动终止连接B响应释放连接请求A没有收到应答,超时重发B再次响应释放连接请求丢失CLSY,ACKX(启动时
钟)释放连接12/1/202210:55:34AM26传输协议(续)CLSX(启动时钟)ABCLSY,ACKX(启动时钟)说明A主动终止连接B响应释放连接请求丢失12/1/202210:55:34AM27传输协议(续)网络失效的恢复不可靠的网络可能失效,网络层检测到失效
后会通知上面的传输层,例如X.25网络就可能向上发出复位(Reset)或重启动(Restart)的通知。连接复位:传输实体收到网络服务的通知,知道连接已经复位并估计路途中的数据可能丢失,故必须采取以下补救措施:(1)向对方发送
控制TPDU,告诉复位已经发生,并说明自己收到的最后一个TPDU的序号;(2)暂不发送新的数据TPDU,等待对方回答的控制TPDU。更严重的问题是由于网络重启动而丢失了网络连接。在这种情况下,原来首先发起连接的一方要向网络服务发出重建连接的命令,然后向对方发送新的网络连接请求,最后
用上述复位过程重新取得同步。12/1/202210:55:34AM28传输协议(续)系统崩溃的恢复当传输实体所在的主机系统崩溃后,所有连接状态信息都丢失了。如果主机系统重新启动,受崩溃影响的连接就变成了半连接,因为另外一方没有经历系统崩溃的灾难,并不知道这一方出了问题。传输实体应该维持一个放弃
定时器,该定时器测量多次重传的TPDU的应答信号等待时间。放弃定时器超时后,传输实体就认为对方传输实体或中间的网络已经失效,自动关闭连接,并把异常情况通知上层的传输用户。在传输实体(而不是主机)失效后很快重新启动的情况
下可以用复位TPDURST迅速关闭所有半连接。失效一方每收到一个TPDUX,以RSTX回答,使对方复位。收到RSTX的一方根据序号X检查其有效性,如果自己确实发出过TPDUX,则RSTX是有效的,知道对方已经复位,自己也要异常终止连接。12
/1/202210:55:34AM29传输协议(续)系统崩溃的恢复经历崩溃恢复后是否重开连接由传输用户决定。如果要重开连接,如何取得同步是一个尚未解决的问题。经过崩溃的一边,一切状态信息都丢失了,只有未经过崩溃的一边才记得以前的状态。如果
未经过崩溃的一边是发送方,从它的断点处继续发送,接收方收到的数据可能缺少或重复。如果未经崩溃的一边是接收方,重开连接后按它的要求继续发送,那么发送方是否保留着以前发送过的那些数据的拷贝也值得怀疑。这个问题没有一个好的解决办法,因而在系统崩溃后再行恢复总
得承受数据丢失或重复的风险。12/1/202210:55:34AM30三、TCP协议TCP服务•TCP协议提供面向连接的可靠的传输服务,适用于各种可靠的或不可靠的网络。TCP的功能与ISOTP4有一个重要差别,即TCP
的数据传送模型是面向字节流的,而ISOTP4是面向报文序列的。•TCP用户送来的字节流形式的数据缓存在TCP实体的发送缓冲区中,TCP实体自主地决定如何把字节流分段,组成TPDU发送出去。•接收端TCP实体决定何时把接收缓冲区中的字节流提交给用户。分段的
大小和提交的频度是由具体的实现根据性能和开销权衡决定的,TCP规范中没有定义。即使两个TCP实体的实现不同,也可以互操作。•TCP允许用户把字节流分成报文,用推进(PUSH)命令指出报文的界限。发送端TCP实体把PUSH标志之前
的所有未发数据组成TPDU立即发送出去,接收端TCP实体根据PUSH标志决定提交的界限。12/1/202210:55:34AM31TCP协议(续)UNSPECIFIED-PASSIVE-OPEN(源端口,[时槽],[超时处理],[优先级],[安全性])监听任何符合优
先级和安全性要求的远端用户的连接请求。FULL-PASSIVE-OPEN(源端口,目标端口,目标地址,[时槽],[超时处理],[优先级],[安全性])监听目标地址指明的符合优先级和安全性要求的远端用户的连接请求。ACTIVE-OPEN(源端口,目标端口,目标地址,[时槽]
,[超时处理],[优先级],[安全性])请求建立一定优先级和安全性的连接。ACTIVE-OPENW/DATA(源端口,目标端口,目标地址,[时槽],[超时处理],[优先级],[安全性],数据,数据长度,推进标志,紧
急标志)请求建立一定优先级和安全性的连接并传输数据SEND(本地连接名,数据,数据长度,推进标志,紧急标志,[时槽],[超时处理])向指名的连接上发送数据。ALLOCATE(本地连接名,数据长度)为TCP分配一个接收数据
的缓冲区CLOSE(本地连接名)平稳关闭连接ABORT(本地连接名)突发关闭连接STATUS(本地连接名)报告连接状态TCP服务请求原语12/1/202210:55:34AM32TCP协议(续)TCP服务响应原语OPEN-ID(本地连接名,
源端口,目标端口,目标地址)向用户通知已建立的连接的名字OPEN-FAILURE(本地连接名)报告连接打开失败OPEN-SUCCESS(本地连接名)报告连接打开成功DELIVER(本地连接名,数据,数据长度,紧急标志)报告数据到达CL
OSING(本地连接名)报告远端用户已发出CLOSE命令TERMINATE(本地连接名,说明)报告连接已经终止STATUS—RESPONSE(本地连接名,源端口,源地址,目标端口,目标地址,连接状态,接收窗口
,发送窗口,等待应答的数量,等待接收的数量,紧急标志,优先级,安全性,时槽)报告连接的当前状态ERROR(本地连接名,说明)报告服务请求错误或内部错误12/1/202210:55:34AM33TCP协议(续)TCP段头格式源端口(16位)和目标端口(16位);说明源服务访问点和目标服务
访问点;发送顺序号(32位):本段中第一个数据字节的顺序号;应答顺序号(32);捎带应答的顺序号,指明接收方期望接收的下一个字节的顺序号;偏置值(4位):传输头中的32位字的个数;保留字段(6位):所有实现必
须把这个手段置全0;标志字段(6位):表示各种控制信息,其中URG:紧急指针有效;ACK:应答顺序号有效;PSH:推进功能有效;RST:连接复位为初始状态,通常用于连接故障后的恢复;SYN:对顺序号同步,用于连接的建立;FI
N:数据发送完,连接可以释放;窗口(l6位):为流控分配的信贷数;检查和(16位):段中所有16位字按模216-1相加的和,然后取1的补码;紧急指针(16位):从发送顺序号开始的偏置值,指向字节流中的一个位置,此位置之前的数据是紧急数据;任选部分(长
度可变):只有一个任选项,即指定的最大段长;补丁:补齐32位字边界。源端口目标端口发送顺序号接收顺序号偏置值保留URGACKPSHRSTSYNFIN窗口检查和紧急指针任选项+补丁用户数据12/1/202210:55:3
4AM34TCP协议(续)三次握手建立连接ASYN=1发号=XB,DATA发号=X+1ACK收号=Y+1说明A发起连接请求B接收并应答连接请求A应答并发送数据SYN=1ACK=1发号=Y收号=X+112/1/2
02210:55:34AM35TCP协议(续)伪段头检查和的检查范围包括整个TCP段和伪段头(Pseudo-header)源地址目标地址0协议段长传输头用户数据12/1/202210:55:34AM36TCP协议(续)TCP连接管理TCP建立和释放连接的过程采用三次握手协议。这种协议的实际目的是连
接两端都要声明自己的连接端点标识,并回答对方的连接端点标识,以确保不出现错误的连接。连接可能是主动建立的,也可能是被动建立的。在连接建立、存在和释放的各个阶段形成了不同的连接状态。ActiveOpen初始化SVPassiveOpen初始化SVCLOSED
发送SYNClose清除SVSYNSENT收到SYN发送ACKSYNRECEIVD收到SYN发送SYNACKClose清除SVLISTEN收到ACKESTABLISHED收到SYNACK发送ACKFINWAITCloseCLOSEWAIT收到FIN12/1/20
2210:55:34AM3712/1/202210:55:34AM38TCP协议(续)系统崩溃和重启动后的恢复设想网络中存储了一个过期的连接请求RFCX(可能是不久以前站A发出但由于网络拥挤尚未到达目标B的TPDU)。如果A崩溃后恢复,重发对B的连接请求RF
CX,并且过期的连接请求可能先到达B,而B无法区分两个类似的连接请求,于是应答了过期的连接请求,丢弃了第二个连接请求,从而建立了错误的连接,这个问题三次握手也无法解决。问题出在A在很短的时间内两次对同一个目标使用了同样的连接标识,而且两次连接请求的时间间隔又很短,在第一个请求没有从网络中消失时又
发出第二个连接请求。TCP的连接标识是传输头中的发送顺序号ISN,该字段有32位长,从232个顺序号中顺序地选取ISN,在很长一段时间内可以不重复,这样可以保证ISN在一段时间内的唯一性。12/1/202210:55:34AM39
TCP协议(续)系统崩溃和重启动后的恢复系统从崩溃中恢复后又选取了同样的ISN?•重复的ISN会建立错误的连接,在数据传送阶段也会造成错误的接收。•给连接请求信号打上时标以保证ISN的唯一性,时间的分辨率要足够高,以保证同一个
站永远都不会发出标识相同的连接请求。美国军方的豪华版TCP规范要求利用当地时间指定ISN,时间分辨率为4μs,因而每4.5小时ISN循环一次(4.5×3600×106/4≈232),这个时间间隔被认为是段最长生存期M
SL(MaximumSegmentLifetime),超过这个时间间隔,隐藏在网络中的老的TCP段都消失了。•对于一般的实现,只要每次发出连接请求时避开0、1这些特殊数字选取一个ISN就可以了。把这样简单的TCP实现用在局域网上相当安全。因为在局域网
环境中MSL大概只有几微秒,任何机器也不会在几微秒内从崩溃中恢复过来,所以当机器重发以前的连接请求时MSL已经过去了。12/1/202210:55:34AM40TCP协议(续)对无效数据段的处理•如果接收站检测到一个窗口之外的数据段,则可以断定这是属
于以前的连接的残余数据段,丢弃后不必发出RST。•如果没有建立连接,甚至没有收到LISTEN命令,这时对任何接收到的非RST段都要以RST回答之,特别是对那些呼叫一个并未产生端口的连接请求要以RST拒绝之;•如
果连接建立过程尚未完成而收到一个对从未发出过的段的应答,则必须返回一个RST,这样就消灭了那些迟到的残余应答段;•连接建立后,如果收到一个对窗口之外的数据的应答,这时不能发出RST,而是立即返回一个重新声明当前发送顺序号、接收指针以及窗口的段,以便重新取得同步,排除重复段的干扰。12/1/
202210:55:34AM41TCP协议(续)对无效数据段的处理•发出的RST段中的发送顺序号必须与它应答的违例段的发送顺序号相同。•当RST段到达接收方时,接收方检查其中的顺序号,如果顺序号落在发送窗口中,则说
明数据传输出错,连接必须中止。•接收方正在监听呼入请求或者在监听状态刚刚响应了一个连接请求,当RST段到达接收方时,接收方要发出监听状态作为回答。•如果RST段的顺序号没有落在接收方的发送窗口中,则忽略之,接收方认为这种RST是对以前差错
的反应。12/1/202210:55:34AM42TCP协议(续)连接的释放TCP采用平稳断连的方法。连接的任何一端在数据发送完时,把最后一个数据段的FIN标志置位,但是必须继续接收远端发来的数据,直到收到对方发来的FIN置位
的段。这样,TCP的断连是两方独立进行的,不会破坏途中正在传送的数据,也不需要采取额外的防止数据丢失的措施。12/1/202210:55:34AM43TCP协议(续)拥塞控制TCP的拥塞控制涉及到重传计时器管理和窗口管理,其目的都是与流控机制配合,缓解互联网中的
通信紧张状况。重传计时器管理TCP实体管理着多种定时器(重传定时器,放弃定时器等),用以确定网络传输时延和监视网络拥塞情况。定时器的时间界限涉及网络的端到端往返时延(RTT),静态计时方式不能适应网络通信瞬息万变的情况,所以大多数实现
都是通过观察最近一段时间的报文时延来估算当前的往返时间。一种方法是取最近一段时间报文时延的算术平均值来预测未来的往返时间,其计算方法如下:)1(11)(1)1(KRTTKKARTTKKKARTT12/1/202210:55:34AM44TCP协
议(续)拥塞控制指数平均法可以用下面的公式表示SRTT(K)被称为平滑往返时间估值,SRTT(0)=0,0<<1把上式展开,得到可以看出,越是早前的观察值,对平均值的贡献越小。若=0.5,几乎所有权重都给了最近的4或5个观察值,当=0.
875时,计算就扩大到最近的10个或更多个观察值。所得的结论是:使用的值越小,则计算出的平均值对最近的网络通信量变化越敏感,这样做的缺点是短期的通信量变化可能影响到平滑往返时间估值的过度震荡。)1()1()()1(
KRTTKSRTTKSRTT)1()1(...)1()1()()1()1()1()1(2RTTKRTTKRTTKRTTKSRTTk12/1/202210:55:34AM45TCP协议(续)拥塞控制12/1/202210:55:34AM46
TCP协议(续)拥塞控制12/1/202210:55:34AM47TCP协议(续)慢启动TCP实体使用的发送窗口越大,在得到确认之前发送的报文数就越多,这样就可能造成网络的拥塞,特别在TCP刚连接建立开始发送时对网络通信的影响更大。可以采用的一种策略是,让
发送方实体在接收到确认之前逐步扩展窗口的大小,而不是从一开始就采用很大的窗口,这种方法称为慢启动过程。下面的慢启动过程是以报文数来描述的,报文数等于TCP段头中窗口字段的值除以报文段的字节数。慢启动过程规定,TCP实体发送窗口的大小按照下式计算awnd:允许窗口的大小
,TCP实体在没有收到确认的情况下可以发送的报文数cwnd:拥塞窗口的大小,在启动阶段或拥塞期间TCP实体使用的窗口大小credit:最近一次确认报文中得到的信用量,以报文数计量cwndcreditMINa
wnd,12/1/202210:55:34AM48TCP协议(续)慢启动在建立一个新连接后,TCP实体初始化cwnd=1,即在发送了第一个报文段后就停止发送,等待确认后再发送下一个报文段,并且每收到一个确认,则cwnd加1,用以扩大发送窗口。最终的发送窗口大小是由收到的cr
edit决定的。实际上,cwnd是以指数规律增长的。当第0个报文段的确认到达后,cwnd被增加到2,可以发送第1和第2段;当第1和第2个报文段的确认到达后,cwnd经过两次增加,其值已经是4了;当这4个报文段的确认都达到后,cwnd经过4次增加,其值就是8了。12
/1/202210:55:34AM49TCP协议(续)慢启动VanJacobson说过“让网络进入饱和状态很容易,而让网络从拥塞中恢复却很难。”这就是高峰期的长尾效应。所以还要补充下列规则:(1)设置慢启动的门限值
为目前拥塞窗口的一半,即(2)置,并且执行慢启动过程,直到(3)当时,每经过一个往返时间cwnd加1下图描绘了这种行为的效果。1cwnd2/cwndssthreshssthreshcwndssthreshcwnd出现超时阈值往返次数cwnd12/1/202210
:55:34AM50TCP协议(续)慢启动出现超时阈值往返次数cwnd12/1/202210:55:34AM51四、UDP协议UDP提供无连接的传输服务,虽然这种服务是不可靠的,但这并没有减少它的使用价值。相反,
由于协议开销少而在很多场合相当实用,特别是网络管理方面,大都使用UDP协议。UDP运行在IP协议层之上,只是在IP协议之上加上端口寻址能力。UDP头包含源端口号和目标端口号。段长指整个UDP段的长度,包括头部和数据部分。检查和与TCP相同,但是任选的,如果不使
用检查和,则这个字段置0。由于IP的检查和只作用于IP头,并不包括数据部分,所以当UDP的检查和字段为0时,实际上对用户数据不进行校验。源端口目标端口段长检查和12/1/202210:55:34AM52