TCPIP基本原理第四章传输层.ppt

上传人:牧羊曲112 文档编号:5450401 上传时间:2023-07-08 格式:PPT 页数:60 大小:215.50KB
返回 下载 相关 举报
TCPIP基本原理第四章传输层.ppt_第1页
第1页 / 共60页
TCPIP基本原理第四章传输层.ppt_第2页
第2页 / 共60页
TCPIP基本原理第四章传输层.ppt_第3页
第3页 / 共60页
TCPIP基本原理第四章传输层.ppt_第4页
第4页 / 共60页
TCPIP基本原理第四章传输层.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《TCPIP基本原理第四章传输层.ppt》由会员分享,可在线阅读,更多相关《TCPIP基本原理第四章传输层.ppt(60页珍藏版)》请在三一办公上搜索。

1、TCP/IP基本原理第四章 传输层,本章学习要求:掌握:端口、周知端口号、TCP地址、MSS、RTT、三次握手、套接字、慢启动等概念;掌握:TCP的重传机制原理掌握:用三次握手建立连接、关闭连接的原理掌握:流量及拥塞控制原理了解:TCP、UDP的校验和原理了解:TCP、UDP报文格式了解:常用网络命令,4.1 Internet传输层的基本原理,传输层的功能 目的:是在互联网层提供主机数据通信服务的基础上,向源主机和宿主机之间提供端到端可靠进程通信。功能:一是加强或弥补网络层或互联网层提供的服务;二是提供进程通信机制。端到端的通信:是由一段段点到点的通信构成的,端到端的协议建立在点到点的协议基础

2、之上,提供应用进程之间的通信,在其下层,是没有应用进程整个概念的。端口号:传输层要区分收到的数据中的不同的应用进程,方法是为每个应用进程分配一个“端口号 Port Number”.某一台主机上的某个应用进程由主机IP地址、端口号唯一标识端口号也称为传输层访问点TSAP。传输层要解决的问题还有:差错控制、流量控制、排序和连接管理等问题。在TCP/IP的协议簇中的传输层协议有传输控制协议TCP,面向连接。用户数据报协议UDP,面向无连接。,4.1.1 TCP服务,TCP为主机提供许多服务。TCP是一个面向连接的协议,它必须提供会话管理和数据单元的可靠传输。IP是一个无连接协议,它依靠TIP提供可靠

3、的数据传输。TCP提供两种重要服务:差错控制和流量控制。TCP差错和流量控制的一个独特要素是它没有否定确认。它只发送肯定确认。如果接收到的序列有错(被校验和检测的),该数据单元就从缓冲区中删去。TCP不向源主机返回任何应答。源主机在发送数据单元时设置一个确认计时器。当发生错误(校验和错或其它错)时,计时器将超时,源主机将重传数据单元。同样的机制也适用于接收数据单元的顺序出错。计时器并非固定时长,它是可变的,基于往返时间,往返时间包括前向时间(即到达目的的时间)、目的处理时间和反向延迟时间(即确认到达源主机的时间)。,发起一个会话,一台计算机中的应用程序如果需要向其它计算机中的应用程序发送信息,

4、它将把数据传递给传输层。传输层的TCP从应用程序那里接收到数据,然后将其分割成较小的报文段。TCP 将这些报文段封装在IP数据报中,这些数据报将在网络中路由。,4.1.2 服务质量(QoS),连接建立延迟:传输连接请求和传输确认收到之间的时间延迟。连接建立失败的概率:在最大建立延迟时间之内,连接无法建立的概率。吞吐率:每秒传输的数据量:从源主机到宿主机的吞吐率和从宿主机到源主机的吞吐率是分别衡量的。传输延迟:信息从源主机传输至宿主机的持续时间,传输延迟也是双向分别衡量的。残余误码率:一段特定时间内丢失或混乱的数据量占总数据量的比率。安全保护:用于防止未经授权的第三方读取或修改传输的数据。优先级

5、:确保重要应用的数据优先得到传输服务。,4.1.3 传输层端口,Internet传输层与互联网层功能上的最大区别是前者提供进程通信能力,而后者不提供进程通信能力。为了提供进程通信功能,TCP/IP协议提出了端口(port)的概念,用于标识通信的进程。端口实际上是一个抽象的软件结构(包括一些数据结构和I/O缓冲区)。应用程序(进程)通过系统调用与某端口建立关联(binding)后,传输层传给该端口的数据都被相应的应用进程所接收。端口又是应用进程访问传输服务的入口点。,套接字,套接字在要领上与文件句柄类似,因为其功能是作为网络通信的终结点。一个应用程序通过定义三部分来产生一个套接字:主机IP地址、

6、服务类型(面向连接的服务是TCP,无连接服务是UDP)、应用程序所用的端口。,端口号分配,全局分配 由一个公认的中央机构根据用户需求统一进行分配,并将结果公布于众。全局端口分配的弊端是在于不能适应大量且迅速变化的端口使用环境。本地分配或动态联编 当某进程需要访问传输服务时,它向主机操作系统提出动态申请,操作系统根据主机状态为该进程分配一个本地唯一的端口号,然后该进程再通过系统调用将自己与相应的端口号进行关联操作。本地分配方式不受网络规模的限制,但其它主机仍然无法获知分配情况,进程之间的通信依然难以建立。,Internet端口号分配,Internet将端口分为两部分,一部分是保留端口,一部分是自

7、由端口。其中保留端口只占很小的数目,它以全局方式进行分配,对应于前面所讨论的服务器进程。在Internet中,每一个标准的服务器进程都拥有一个全局公认的端口号,不同机器上相同的服务器进程,其端口号相同。TCP和UDP都规定,小于256的端口号才能作为保留端口。自由端口以本地方式进行分配。当某进程要与远地进程通信之前,首先申请一个自由端口号并与之进行关联操作,然后与远地进程进行通信。,TCP和UDP的保留端口,4.2 用户数据报协议UDP(User Datagram Protocol),特点 建立在 IP协议 之上 唯一增加的能力是提供协议端口,实现进程通信 UDP使用IP协议提供的不可靠的数据

8、报服务,通过端口号识别互相通信的实体。UDP提供的是无连接的、不可靠的用户数据报服务 面向交易型应用机制端系统使用UDP协议相互通信时,UDP协议只负责将应用程序传给IP层的数据发送出去,但是并不保证它们能到达。如传输中数据出错,UDP协议不负责重传,而由更高层负责。当数据正确到达后,接收端不负责确认。也由更高层负责,UDP报文格式,UDP校验和覆盖了除报文头外的一个附加头部,包括:源IP地址、目的IP地址、协议、UDP长度 目的:验证UDP数据报是否传到正确的目的端,UDP头结构定义为:structudphdr u_int16_tsource;/发送主机的UDP端口 u_int16_tdes

9、t;/目标主机的UDP端口 u_int16_tlen;/UDP消息的长度 u_int16_tcheck;/校验和;,UDP的校验和,UDP计算校验和时,用到一个12字节的伪头结构。见下图示:其中源IP地址和目标IP地址来自于IP分组头,UDP协议号为17,长度是UDP头结构中的长度相同。伪头结构只用于校验和,使用伪头结构进行校验的目的是 为了进一步证实数据被送到正确的目的地。收方UDP校验出收到的数据有错后,只是简单地丢弃数据,而不向源报告错误。,UDP的应用范围,UDP不用于那些使用虚电路的面向连接的服务,而主要用于那些面向查询-应答的服务,例如NFS。相对于FTP或Telnet,这些服务需

10、要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。,4.3 TCP协议,特点面向连接传输层协议,非常复杂提供高可靠性服务一次传输交换大量报文例子文件传输、远程登录等,4.3.1 TCP报文格式,源端口和目的端口:各2个字节,表示源和目的端口号。发送序号:4字节,指出报文中数据在发送方的数据流中的位置(以字节编号)。确认序号:4字节,指接收方希望下一次接收的字节序号。TCP头长:4比特,指出以32比特为单位的报文头部长度。该域是针对变长的“选项”域设计的。紧急标志位URG:当URG=1时,表明此报文是紧急数据,应尽快传送出去。确认标志位ACK:只有当A

11、CK=1时确认序号字段才有意义。当ACK=0时,确认序号没有意义。,急迫标志位PSH(PuSH):当PSH=1时,请求远地TCP软件将该报文立即送给应用程序。重建标志位RST(ReseT):当RST=1时,表明出现严重差错,必须释放连接,然后重新建立连接。同步标志位SYN:当SYN=1而ACK=0时,表明这是一个建立连接请求报文,若对方同意建立该连接,则应在发回的报文中使将SYN和ACK标志位同时置1。终止标志位FIN(Final):当FIN1时,表明数据已经发送完毕,并请求释放连接。窗口:2字节。该字段实际上是接收方告诉发送方它的接收窗口大小,其单位为字节。窗口域主要是用于流量控制和拥塞控制

12、。校验和:2字节。校验和也和UDP协议一样,使用伪头校验,只不过协议号为6。可选项:长度可变。TCP只规定了一种选项,即最长报文段MSS(Maximum Segment Size)。,TCP层格式中的控制信息字段,控制信息字段:在报头中按照从左到右的顺序URG、ACK、PSH、RST、SYN、FIN,总共占用了6比特,对TCP数据流的发送和接收起到控制的作用。在这些控制信息标志中,SYN、FIN占用一个序列号。其余4个控制标志则不占用序列号空间。URG:紧急指针有效ACK:确认字段有效PSH:推送功能RST:复位SYN:对各帧序列号进行同步FIN:不再有来自发送方的数据选项选项列表结束:指示选

13、项列表的结束无操作:用于各个选项之间段最大尺寸:指明了发送此段的TCP上可接收的段的最大尺寸,该字段只在初始连接请求阶段被发送出去(SYN置位时)。TCP必须能够实现发送和接收最大分段尺寸选项。如果在连接建立阶段没有收到该选项,则TCP必须采用默认的发送MSS536,4.3.2 TCP的超时重传机制,背景TCP是一个可靠的数据传输协议,它要求接收方收到TCP段后必须给予应答但TCP只能用acknowledgement number域中的序号来表示该序号前的所有字节都已正确接收,而没有其他否定应答或选择重发的功能。也就是说,当接收方TCP实体收到一个出错的TCP段后,只是将其丢弃而不作应答,因而

14、发送方必须采用超时重传的机制来重发久未应答的段。由于在一个巨大的互联网络中,TCP段可能在不同速率的物理线路上传输,信源和信宿间的距离可近可远,而且每时每该网络中的拥塞情况也不同,因此要选择一个合适的超时时间并不太一件容易的事。,原理TCP使用一种动态算法随时调整超时间隔。对于每个连接,都维持一个变量RTT。RTT(Round-trip Time)是当前发送方到接收方来回时间的最佳估算值。每当发送了一个段,发送方即启动一个计时器,一方面用来测量从发送TCP段到收到应答的来回时间,另一方面当超过估算的超时间隔后即进行重发。算法每当收到一个应答,TCP就从计时器中得到当前的来回时间M,然后利用公式

15、:RTT*RTT+(1-)M估算出新的 R T T值,是一个平滑因于,通常取为 7/8。因为实际的来回时间同估算值总会有一个偏差,因此利用公式 Dd+(1-)|RTT-M|计算出实际来回时间同RTT的偏差范围,这里的和估算RTT的可能不同。最后利用公式 Timeout=RTT+4D 确定出当前的超时间隔。评价这种算法在网络拥塞或收发双方距离较远时能够自动延长超时间隔,减少不必要的重发,而在网络较为空闲或双方距离较近时又能迅速减小超时间隔,及时重发出错的段,从而加快数据传输速度。,4.3.3 TCP连接,TCP为每个数据流初始化并维护特定的状态信息的组合,称为一个连接。每个连接由标识该连接两端的

16、一对套接字唯一确定,套接字是由端口号和IP地址确定,在全网范围内是唯一的。当两个进程希望通信时,它们的TCP必须首先建立一个连接,通信完成时,该连接要终止或关闭,释放资源。TCP连接的建立通过“三次握手”来建立一条连接,以减少错误连接的可能性。利用TCP中的SYN 同步标志位,启动一条连接的建立。利用TCP中的RST 复位标志位,中止异常连接的建立。TCP连接的关闭关闭(CLOSE)操作的意思是“我没有更多的数据要发送”,通过TCP中的FIN控制位启动关闭连接的操作。负责关闭的用户可以继续接收(RECEIVED)操作,直到它被告知另一方已经关闭接收到关闭的用户可以继续发送(SEND)操作,使得

17、发出关闭的用户能够听到该连接成功的关闭了。,连接请求(SYN=1,seq=client_isn),同意连接(SYN=1,seq=server_isn,Ack=client_isn+1),确认(SYN=0,seq=client_isn,ack=server_isn+1),客户,服务器,TCP建立连接的三次握手,时间,时间,TCP连接的状态,一条TCP连接在其生命期内会经历一系列的状态。这些状态有:LISTEN:正在等待一个来自任何远程TCP和端口的连接请求。SYNSENT:在已经发出一个连接请求后正在等待一个匹配的连接请求SYNRECEIVED:在已经收到并发出了一个连接请求后等待一个证实连接请

18、求的确认。ESTABLISHED:一个打开的连接。通过此连接接收到的数据能够被传递到用户。该状态是此连接的数据传输阶段的正常状态。FINWAIT1:或正在等待一个针对先前发送的连接终止请求的确认。FINWAIT2:正在等待一个来自远程TCP的连接终止请求。CLOSEWAIT:正在等待一个来自本地用户的连接终止请求CLOSING:正在等待一个来自远程TCP的连接终止请求的确认。LASTACK:正在等待一个先前发往远程TCP的连接终止请求的确认(包括对其连接终止请求的确认)TIMEWAIT:等足够的时间以确保远程TCP接收到了其连接终止请求的确认CLOSED:根本不存在连接的状态。,TCP连接端点

19、,TCP连接端点 TCP把端点定义为一对整数,即(host,port),其中host是主机的IP地址,而port则是该主机上的TCP端口号。TCP连接 是用它的两个端点来表示;中国科大的一台IP地址为的主机与清华大学的一台地址为的主机之间建立连接的话,它可能会由端点定义成:(,1234)和(,25),TCP连接的建立过程,客户 TCP 服务器 TCP1.CLOSE LISTEN2.SYN-SENT SYN-RECEIVED 3.ESTABLISHED SYN-RECEIVED4.ESTABLISHED ESTABLISHED5.ESTABLISHED ESTABLSHED说明:TCP A、B在

20、初始时分别是处于CLOSED和LISTEN状态。A端首先发送一个SEQ100的初始化序列,SYN置位,占用一个序列号;B端在收到该请求后,发送一个序列号为300,确认号为101的段,这个段的SYN、ACK均置位,说明B端的初始发送序列号为300,同时又确认了A的SEQ100的段,A在收到了B的应答后,对其初始序列号确认,来响应B的初始化序列,然后A就可以发送事件了。其中第2、3、4行,称之为“三次握手”,在TCP连接的生存期中,通过多种状态进行传输。这些状态称为TCP状态。一个客户机按照下列顺序经历一系列的TCP状态。如下图示:,CLOSE,FIN_WAIT_1,TIME_WAIT,FIN_W

21、AIT_2,SYN_SENT,ESTABLISHED,接收SYN和ACK发送ACK,发送FIN,接收ACK不发送,接收FIN发送ACK,等待30秒,客户主机TCP的状态顺序,于客户机一样,服务器也经历各种TCP状态。如下图示:,CLOSE,ESTABLISHED,LAST_ACK,CLOSED_WAIT,LISTEN,SYN_RCVD,接收SYN发送SYN和ACK,接收CAK不发送,接收FIN不发送,发送FIN,接收ACK不发送,服务器TCP的状态顺序,TCP连接的关闭过程,TCP ATCP B1.ESTABLISHED ESTABLISHED2.(关闭)FIN-WAIT-1 CLOSE-WA

22、IT3.FIN-WAIT-2 CLOSE-WAIT4.(关闭)TIME-WAIT LAST-ACK5.TIME-WAIT CLOSED6.(2 MSL)关闭说明:TCP A启动TCP关闭某连接的,TCP B收到一个FIN段,进入CLOSEWAIT状态。在第3行中,如果TCP B还有数据要发送,在报头之后,会有数据,同时对TCP A发来的FIN确认(FIN占用一个序列号)。发送完数据后,在第4行,TCP B再发送一个FIN段,在没有收到确认之前是LASTACK(等待发往远程TCP的FIN的确认)状态。第5行中,TCP B在收到了它发出的FIN的确认后,进入CLOSED状态,TCP A在超时时间到

23、后,自动关闭。,TCP关闭连接为什么采用三次握手法,正常关闭时,一端用户发出一个DR(释放连接请求)TPDU,首先要求释放连接。当该TPDU到达对方后,收方也回送一个DR TPDU,并同时启动定时器以防止其 DR TPDU丢失。当应答方的DR到达后,最初提出释放连接的一方又回送一个ACK(确认)TPDU,并断开连接。最后,当 ACK TPDU抵达目的地后,接收方也释放连接。释放一个连接意味着传输实体从其记载所有接通的连接的表中删除该连接的有关信息并设法通知该连接的所有者(传输用户)。,图b表示,如果最后的ACK(确认)TPDU丢失,就需要用定时器来补救。当定时器超过时限后,连接将被强行释放。图

24、c表示,当第二个DR(响应的DR)丢失的情形。这时,首先提出释放连接的用户将不能收到所期待的响应,待到定时器超时,再次开始要求释放连接。从图c中可以看到这种情况下是如何工作的,假设第二次没有任何TPDU丢失,并且所有TPDU都正确、及时地到达目的地。最后一种情况如图d所示。除了假设由于丢失TPDU使所有重发DR的尝试均失败以外,其他情况与图c完全相同。这样,经过N次尝试后,发送方(提出释放连接的一方)只好放弃努力并断开连接。同时,接收方(被动释放连接的一方)因为定时器超时也释放掉连接。可见,采用三次握手法关闭连接,能解决经常出现的非正常关闭的情形。但理论上当第一个DR和所有N次重发均被丢失的情

25、况下,该协议便会失败。因为此时发送方将放弃重发并释放连接,而另一方却对对方的释放连接企图一无所知,而处于连接有效状态。这种情况将导致一个半接通的连接。,消除半接通连接的可行方法,消除半接通连接的一种方法是,如果在一段时间内没有收到任何TPDU,连接便自动释放。这样,如果一方已经释放了连接,那么另一方将检测不到对方的活动因而也断开连接。当然,如果引进这一规则,就需要为每个传输实体设置一个定时器,每当收到一个TPDU时都要使定时器停止并重新启动。如果该定时器超时,就发送一个伪 TPDU,目的只是不让对方释放连接。另一方面,如果在一个处于空闲状态的连接上连续丢失了很多的伪TPDU,那么连接的双方将会

26、先后释放连接。,最大报文段长度MSS,应用程序进程之间建立起连接后,就将进行真正的数据传输。传输层从应用程序接收的数据将被分割为更小的报文段。在接收端,这些报文段被重组。由于能够重组的数据有其最大限制,所以报文段必须有大小的限制。最大报文长度(MSS):报文段大小的上限。TCP默认MSS是536字节。因此,TCP接收到应用程序的数据后,将其分割的报文段不能超过536字节这一上限。在连接建立期间,TCP提供一些选项,以指明连接可接受的MSS。这个MSS是接收方发送给发送方的,指明了服务器可能接收的最大值X。X值既可以大于也可以小于默认的MSS值。,4.3.4 TCP可靠传输,TCP提供面向连接的

27、字节流传输。面向连接的传输协议对可靠性的保证首先是它在进行数据传输前,必须在通信双方建立一条连接。面向连接的传输协议要求对每一个报文都要进行确认,未经确认的报文被当作是错误报文。流相当于一个管道,发送端从管道的一端放入什么,接收端就可以照原样取出什么。TCP连接是全双工和点到点的。全双工意味着可以同时进行双向传输。点到点的意思是每个连接只有两个端点。TCP不支持组播或全广播。,TCP采用的可靠性技术,可靠性传输包括以下四个含义:差错控制序列控制丢失控制重复控制,4.3.5 TCP流量控制及拥塞控制,流量控制TCP采用信用量机制进行流量控制。当建立一个连接时,两端都为连接分配一块接收缓冲区。发方

28、数据到达时先放到缓冲区中,然后再发送;收方收到数据后,也是先放进缓冲区,然后在适当的时候由TCP实体交给应用程序处理。由于每个连接的接收缓冲区大小是固定的,当发送力发送过快时,会导致缓冲区溢出造成数据丢失,因此接收方必须随时通报缓冲区的剩余空间,以便发送方调整流量。接收方通过将缓冲区的剩余空间大小放入 window size域来通知发送方,发送方每次发送的数据量不能超过window size中指定的字节数。当window size为0时,发送方必须停上发送。当接收方将数据交给应用程序后,发送一个ACK段(称窗口更新)来告知发送方新的接收窗口大小。,流量控制机制TCP使用序列号(Sequence

29、 Number)、确认号(Acknowledge Number)和窗口尺寸(Window Size)相结合的方法来保证数据传递的可靠性。接收机端根据可用的缓冲区空间大小(流量控制)来决定窗口尺寸(以字节计算)。发送端统计出发送的字节数,并且在接收到确认号后只发送“与窗口相当”的数据字节。一旦窗口中前面部分报文得到了确认,则窗口向前滑动相应的位置。TCP把数据当做字节流来看待。,其中:1、2、3是已经发送且得到确认的,4、5为已经发送,但至少4是未得到确认的,如该图中为窗口大小为4,此时,如果5得到了确认,窗口不能向前滑动,在4和5都得到了确认后,而6还未得到确认时,窗口可以一次向前滑动两个位置

30、。在接收端,窗口内的报文为可以接受的报文,窗口前的报文为已经收到,且已经发回确认的报文,不能接收;窗口后面多个报文则要等待窗口滑动后,落入到窗口之中,才能接收。,决定滑动窗口大小的因素,决定滑动窗口大小的因素,包括网络的带宽、可靠性以及需要传输的数据量。Windows NT的TCP滑动窗口,其默认窗口大小为8760,每接收两段信息就发回一个确认。TcpWindowSize 规定滑动窗口的大小参数,位于HKEY_LOCAL_MACHINECurrentControlSetServicesTCPIPParameters下,缺省大小为8760。ForwardBufferMemory 位于HKEY_L

31、OCAL_MACHINECurrentControlSetServicesTCPIPParameters下,缺省大小为74240=50*1480DefaultTTL位于HKEY_LOCAL_MACHINECurrentControlSetServicesTCPIPParameters下,缺省大小为32 秒重发计时器(retransmit timer):在重新发送数据包之前将等待ACK的时间。可在注册表中修改重发次数,缺省为5次。缺省起始时间为1秒。重试时间分别为1秒;第一次失败后的2秒;第二次失败后的4秒;第三次失败后的8秒;第四次失败后的16秒。延迟ACK计时器(delayed-ACK ti

32、mer):定义:在重新发送数据包之前将等待ACK的时间ACK定时器的延迟为硬编码200ms,为第一次重发计时器的1/5。,拥塞控制为了进行拥塞控制,仅有一个接收窗口是不够的,发送方还必须维持一个拥塞窗口。发送窗口必须是接收窗口和拥塞窗日中较小的那一个。和接收窗口一样,拥塞窗口也是动态可变的。连接建立时,拥塞窗口被初始化成该连接支持的最大段长度,然后TCIP实体发送一个最大长度的段;如果这个段没有超时,则将拥塞窗口调整成两倍最大段长度,然后TCP发送两倍最大长度的段。每当发送出去的段都及时地得到应答,就将拥塞窗口的大小加倍,直至最终达到接收窗口大小或发生超时,这种算法称为慢启动。如果发生了超时,

33、TCP实体将一个门限参数设置成当前拥塞窗口的一半,然后将拥塞窗口重新初始化长最大段段长度,再一次执行慢启动算法,直至拥塞窗口大小达到设定的门限值;这时减慢拥塞窗口增大的速率,每当发送出去的段得到了及时应答,就将拥塞窗口增加一个最大段长度,如此拥塞窗呈现线性增大直至达到接收窗口或又发生超时。当拥塞窗口达到接收收窗口时就不再增大,此后一直保持不变,除非接收窗门改变或又发生超时;如果发生超时则使用上述拥塞控制算法重新确定合适的拥塞窗口大小。,TCP与上层用户和低层协议的接口,上层用户和TCP的接口详细完整的模型在提供互操作通信软件方面,TCP除了接收命令,还要返回信息给它服务的进程上层用户和TCP之

34、间的接口命令OPEN(打开)SEND(发送)RECEIVE(接收)CLOSE(关闭)STATUS(状态)ABORT(中止)TCP和IP的接口TCP通过调用一个低层协议模块,在一个网络中进行实际的发送和接收信息。如果低层协议是IP,它为一个TOS和TTL提供了自变量,TCP为这些自变量使用了自己的设置。任何低层协议必须提供源地址、目的地址和协议字段,以及确定“TCP长度”的一些方法,还要提供与IP功能等同的服务和在TCP校验和中使用的部分。,4.3.6 TCP与UDP的区别,TCP(Transmission Control Protocol):为典型的传输大量数据或需要接收数据许可的应用程序提供

35、连接定向和可靠的通信。UDP(User Datagram Protocol):提供无连接的通信,并不保证数据包被发送到。典型的即时传输少量数据的应用程序使用UDP。应该说可靠的发送是应用程序的责任。,4.4 r-services,设远程主机是A,A要用rlogin登录到主机B。当A上的用户启动了rlogin,B上的rlogind在B上的/etc/passwd中检查是否有这个用户名,如果没有则拒绝这次远程访问。在/etc/hosts.equiv中检查远程主机的主机名,若有A的名字,则允许这次访问。若在/etc/hosts.equiv中没有A的名字,则在B的远程用户的起始目录中的.rhosts文件

36、中是否有远程主机B的名字。如果.rhosts文件中有远程主机B的名字的项并且该项后没有用户名,则允许这次访问。如果.rhosts文件中有远程主机B的名字的项、该项后有用户名并且该项后的用户名中有这个远程用户,则允许这次访问。如果.rhosts文件中有远程主机B的名字的项、该项后有用户名并且该项后的用户名中没有这个远程用户,则要求用户输入口令,如果口令正确则允许这次访问,否则拒绝这次访问。,4.4.1 TCP/IP网络系统命令,rwho命令:和who命令的功能很相似。它显示网络中的每个系统的当前注册的用户。$rwho violet robert:tty1 Sept 10 10:34 garnet

37、 chris:tty2 Sept 10 09:22 命令ruptime:可以显示网络中的每个系统的信息。此信息能显示出每个系统是如何执行。ruptime显示系统是否运行,它运行了多久,系统中的用户数和系统在最后5、10和15分钟内的系统负荷。$ruptime violet up 11+04:10,8 users,load 1.20 1.10 garnet up 11+04:10,20 users,load 1.50 1.30,命令.rhosts:用.rhosts文件控制使用TCP/IP命令对您帐号的访问。用户能用标准的编辑器象Vi来创建他们帐号中的.rhosts文件。它必须位于用户的主目录。下

38、面的例子中,使用者显示文件.rhosts文件的内容。$cat.rhosts garnet chris ciolet robert.rhosts文件允许用户不提供口令而访问系统。如果需要禁止此用户访问,只须简单地从文件.rhost中删除系统名和用户注册名。如果一个用户的注册名和系统名在文件.rhost中,那么此用户就能不提供口令直接访问系统。并不是所有的远程注册操作都需要这种访问形式;但一些远程命令要求有.rhosts文件,象远程复制文件或远程执行Linux命令。如果您想在远程系统的帐号中使用这些命令,此帐号的.rhosts文件中必须有您 的注册名和系统名。通过.rhosts对某一系统进行访问时

39、,也允许您使用TCP/IP命令直接访问系统中您的其他帐号。而不需要先注册到这些帐号中。可以把系统中您的其他帐号做为当前注册帐号的扩展。不管文件在的哪个账号下,都可以用frcp命令从一个目录复制到另一个目录。,命令rlogin:要访问别的系统中别的帐号,首先要注册到您的系统中,接着通过网络远程注册到帐号所在的系统中。用命令r login可以远程注册支别的系统。命令的参数应是一个系统名。命令将把您连接到另一个系统中并开始注册的过程.用rlogin的注册过程和一般的注册过程有所不同,用rlogin时用户不被提示输入注册名。rlogin假设您的本地系统中的注册名和远程系统中的一致。所以象上面执行r l

40、ogin命令时,您将马上被提示输入口令。输入口令后,就可进入远程系统各的帐号。用rlogin假设注册名是相同的,因为大多数的人用rlogin访问别的系统中的注册名一般和本地的注册名相同。然而,当远程系统中的注册名和本地系统的不同时,选项1-允许输入远程系统帐户的不同的注册名。语法如下所示:$rlogin system-name-1 login-name 下面例子,用户用注册名robert注册到violet的系统中:$rlogin violet-1 robert password$:一旦注册到远程系统中,您能执行任何命令。可以用exit、CTRL-d或logout(TCSH或C-shell)结束

41、连接,远程复制文件rcp:命令rcp的功能是从远程系统复制文件到本地系统中。rcp执行文件传输的功能,它的操作和cp命令很相似,但它是通过网络连接到另一系统。执行命令r cp时要求远程系统的.rhosts文件中有您的本地系统名和注册名。命令rcp参数为源文件名和复制的目标文件名。为了指定文件在远程系统中,您需要在文件名前放置一个系统名,两者之间用冒号分隔,如下所示:$rcp system-name:source-file slystem-name:copy-file 当复制一个文件到远程系统中时,复制的目标文件是远程文件,它要求带有系统名。而源文件在您的本机系统中,不要求系统名:$rcp so

42、urce-file remote-system-name:copy-file 在下面的例子中,用户从自己的系统中复制文件weather到远程系统violet并重命名为monday.$rcp weather violet:Monday,小结,传输层是网络体系结构中承上启下的一层,它起着加强互联网的服务质量QoS,并提供进程之间可靠通信的功能,TCP/IP协议是利用端口来标识通信进程。TCP和UDP是Internet传输层的两个协议。其中TCP是面向连接的,提供可靠的字节流服务;UDP是无连接的,提供数据报服务。TCP和UDP的共同点在于它们都提供进程通信能力,为此在TCP和UDP协议中引入端口的

43、概念。UDP是最简单的传输层协议,几乎不提供任何可靠性措施。适用UDP的应用程序须自己进行可靠性控制。TCP为保证可靠性做了大量的工作,它提供确认、超时重传以及滑动窗口机制。TCP所面临的所有问题中,重复报文是最难解决的问题,为此TCP引入三次握手以排除在建立和撤除连接过程中重复报文的干扰。另外,TCP协议还提供紧急数据传输等操作,以满足实时应用需求,习题,习题4.1一台TCP机器在1Gb/s的通道上使用65535字节的发送窗口,单程延迟时间等于10ms。问可以取得的最大吞吐率是多少?解:10ms*2=20ms每20ms可以发送一个窗口大小的交通量,每秒50个窗口(=1000ms/20ms)。

44、65535/8/50=26.214Mb/s26.214Mb/s/1000Mb/s2.6%所以,最大吞吐率是26.214Mb/s,线路效约为2.6%,习题4.2一个TCP链接使用256kb/s的链路,其端到端延时为128ms。经测试发现吞吐量只有128kb/s。试问窗口是多少?忽略PDU封装的协议开销以及接收方应答分组的发射时间(假定应答分组长度很小)。解:来回路程的时延等于256ms(=128ms*2)。设窗口值为X字节,假定一次最大发送量等于窗口值,且发射时间等于256ms,那么,每发送一次都得停下来期待再次得到下一窗口的确认,以得到新的发送许可。这样,发射时间等于停止等待应答的时间。结果,

45、测到的平均吞吐率就等于发送速率的一半,即128ms。8X/(256*1000)=256*0.001X=256*1000*256*0.001/8=256*32=8192所以,窗口值为8192。,习题4.3 在一个网络中,最大TPDU尺寸为128字节,最大的TPDU存活时间为30秒,使用8位序列号,问每条连接的最大数据速率是多少?解:具有相同编号的TPDU不应该同时在网络中传输,必须保证,当序列号循环回来重复使用的时候,具有相同序列号的TPDU已经从网络中消失。现在存活时间是30秒,那么在30秒的时间内发送方发送的TPDU的数目不能多于255个。255*128*86308738b/s所以,每条连接

46、的最大数据速率是8738kb/s。,习题4.4 假定使用两次握手替代三次握手来建立TCP连接,是否会产生死锁?答:我们知道3次握手完成两个重要功能,既要双方做好发送数据的准备工作(双方都知道彼此已准备好),也要允许双方就初始序列号进行协商,这个序列号在握手过程中被发送与确认。现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机A和B之间的通信。假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序

47、列号用于A到B的交通,也不知道A是否同意B所建议的用于B到A交通的初始序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待接收连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组。这样就形成了死锁。,习题4.5 假定TCP拥塞窗口被置成18K字节,并且发生了超时事件。如果接着的4个突发量传输都是成功的,那么该窗口将是多大?假定最大报文段长度是1KB。答:在Internet的拥塞控制算法中,除了使用慢启动的接收窗口和拥塞窗口外,还使用第3个参数,即门槛值,开始置成64K。当发生超时的时候,该门槛值被设置成当前拥塞窗口值的

48、一半,而拥塞窗口则重置成一个最大报文段长。然后再使用慢启动的算法决定网络可以接受的突发量,一直增长到门槛值为止。从这一点开始,成功的传输线性地增加拥塞窗口,即每一次突发传输后只增加一个最大报文段,而不是每个报文段传输后都增加一个最大报文段的窗口值。现在由于发生了超时,下一次传输将是1个最大报文段,然后是2个、4个和8个最大报文段,所以在4次突发量传输后,拥塞窗口将是8K字节。,习题4.6 既然在数据链路层(网络接口层)已经有了差错处理,为什么传输层还需要差错处理呢?答:这是因为,数据链路层的功能保证每条链路中节点到节点的无差错传输。然而,节点到节点的可靠性并不保证端到端的可靠性。下图显示了一种

49、差错出现情况,在这种情况中,差错不能被数据链路层差错处理所发现。此图中,数据链路层保证在每个网络之间所传递的包是无差错的。但是当包在路由器内部处理时,可能引入差错。这个差错将不会被下一个链路中的数据链路功能所发觉,这是因为数据链路功能仅仅检查在链路起始和终止之间是否有差错被引入。传输层因此必须进行自己的端到端检查,以保证数据包可以如源所期待的那样正确地到达。,习题4.7 如果TCP来回路程时间RTT的当前值是30ms,随后应答分别在26、32和24ms到来,那么新的RTT估算值是多少?假定=0.9。解:对于每一条连接,TCP都维持一个变量RTT,它是当前到达目的地的最佳估计值。当发送一个报文段的时候,启动计时器,查看应答要花多长时间,如果时间太长,就要重发报文段。如果应答在超时前返回,TCP就测量应答花了多长时间,比如说是M,然后用下列公式更新RTT值:RTT=*RTT+(1-)*M现在=0.9,RTT=30ms,M1=26,M2=32,M3=24。所以,RTT1=0.9*30+(1-0.9)*26=29.6RTT2=0.9*29.6+(1-0.9)*32=29.84RTT3=0.9*29.84+(1-0.9)*24=29.256因此,新的RTT估算值分别是29.6ms,29.84ms和29.256ms。,本章习题,参见教师网页:http:/,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号