资源预览内容
第1页 / 共71页
第2页 / 共71页
第3页 / 共71页
第4页 / 共71页
第5页 / 共71页
第6页 / 共71页
第7页 / 共71页
第8页 / 共71页
第9页 / 共71页
第10页 / 共71页
亲,该文档总共71页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第六章 传输控制 传输层是整个网络体系结构中的核心。它的任务是提供从源主机到目的主机之间可靠的和有效的数据传送。对于利用网络进行通信的两个主机来说,端-端的可靠通信,主要还是要靠传输协议来解决。第六章 传输控制 根据应用的不同,传输层需要两种不同的传输协议,即面向连接的TCP和无连接的UDP,当传输层采用TCP时,尽管下面的网络不可靠,这种逻辑通信信道就相当于一条全双工的可靠信道。而如果传输层采用UDP,这种逻辑通信信道则是一条不可靠信道。 6.1 传输服务 6.1.1 服务质量服务质量(QoS)参数是在建立连接的过程中商定的:优先级 连接建立时延 连接失败概率 残留误码率 平均(或最大)传送时延 平均(或最大)吞吐率连接释放时延 连接释放失败概率 安全保护参数 6.1.2 传输服务原语 1.传输服务原语传输服务原语允许传输用户(如应用进程)访问传输服 务。 原语TPDU发送含义LISTEN(无)阻塞,直到某个进程试图连接CONNECTCONNECTION REQ.主动地试图建立一个连接SENDDATA发送信息RECEIVE(无)阻塞,直到一个DATA TPDU到达DISCONNECTDISCONNECTION REQ.本方希望释放连接一个简单传输服务的原语 2.Berkeley Sockets(伯克利套接字)原语含义SOCKET创建一个新的通信端点BIND把本地地址附加到插口中LISTEN宣布愿意接收连接请求,给出队列大小ACCEPT阻塞调用者进程,直到连接尝试到达CONNECT主动地试图建立一个连接SEND通过连接发送一些数据RECEIVE通过连接接收一些数据CLOSE释放连接用于TCP的插口原语 6.1.3 寻址 当一个应用进程希望与一个远程应用进程建立一个连接时,它必须指明是与哪个应用进程相连(无连接的传输也有相同的问题:每个报文应该发给谁)。一般采用的方法是定义进程可以侦听连接请求的传输地址。在因特网中,这些端点是(IP地址,本地端口)对。我们使用术语传输服务访问点(TSAP)来描述。 在面向连接的网络层上建立一个传输连接,可能采用的方案为:(1)服务器进程将自己连接到某个TSAP m上,等待即将到来的客户请求。(2)客户发出一个CONNECT请求,将客户端TSAP n设置为源地址,将TSAP m设置为目的地址。(3)客户机上的传输实体在机器上选择一个网络地址(如果网络地址不只一个),并在客户机和服务器间建立一个网络连接(对于无连接子网,就不会建立网络层连接)。使用该网络连接,客户机和服务器的传输实体就能通信了。(4)客户机上的传输实体向服务器上对等实体发出请求:“我的TSAPn和你的TSAP m之间建立一个传输连接。如何?”。(5)服务器上传输实体便询问TSAP m上的服务器进程是否愿意接受一个新的连接,如果同意,则传输连接便建立成功。 客户进程如何知道服务器进程是连接到TSAP m而不是别的TSAP呢: 该服务器长期与TSAP m相连,并且所有网络用户都知道 初始连接协议 名字服务器/目录服务器特殊进程 传输实体怎么知道该TSAP所对应的网络层地址呢?这依赖于TSAP地址的结构: 层次型地址 平面型地址 6.1.4 传输连接的建立与释放 1传输连接的建立建立连接是一个复杂的问题。初看起来,一个传输实体似乎只需要向目的机器发送一个连接请求TPDU,并等待对方的连接接受应答就足够了。但是实际上网络可能丢失、存储和重复分组,这将产生很多问题。6.1.4 传输连接的建立与释放 问题的关键是子网中存在延迟的重复分组。因此,需要采取另一种不同的方法。应该设计出一种方法来删除那些仍然在网络中“徘徊”的、过时的分组,不让这些过时的分组在子网中存留从而造成危害。采用下面一种技术,可以将分组的生命周期限制在一个已知的最大值之内:(1)受限制的子网设计;(2)在每个分组内设置一个跳数计数器字段;(3)为每个分组加上时间戳字段。 2连接释放终止连接有两种方式:(1)非对称释放:只要通信的任何一方挂机,连接就中断(2)对称释放:将连接按两个独立的单向连接来处理,要求每一方分别释放连接。 非对称释放很突然,可能会丢失数据: 非对称的突然释放连接将造成数据丢失 必须采用一个更加完善地连接释放协议来避免数据丢失。一种方法是采用对称释放方式,每个方向独立释放本方的连接。也可以采用3次握手的方法: 三次握手的正常情况 最后的ACK TPDU丢失 应答丢失 应答丢失以及后续的DR丢失 6.2 用户数据报协议(UDP) 6.2.1 UDP的基本概念UDP在IP的基础上增加了一个短的报头。UDP通过使用端口号来完成进程到进程的通信。UDP提供的是一种不可靠的交付,它没有流量控制机制,在收到分组时也没有确 认。当然它还是提供了某种程度的差错控制。如果UDP检测出在收到的分组中有差错,它就悄悄地丢弃这个分组。 1UDP协议主要的用途(1)UDP适用于这样的进程通信,它需要简单的请求响应,而 较少考虑流量控制和差错控制。(2)UDP适用于具有内部流量控制和差错控制机制的进程。(3)对多播和广播来说,UDP是个合适的传输协议,多播和广播能力已经嵌入在UDP软件中,但没有嵌入在TCP软件中。(4)UDP可用于管理进程,如SNMP。(5)UDP可用于某些路由选择更新协议,如路由信息协议(RIP)。 2UDP的优点(1)发送数据之前不需要建立连接,发送数据完后不需要释放连接, 因此减少了开销和发送数据之前的时延。(2)UDP不使用拥塞控制,不保证可靠交付,因此主机不需要维持具有许多参数的、复杂的连接状态表。(3)UDP用户数据报只有8个字节的首部开销,比TCP的20个字节的首部要短。(4)由于UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。 3UDP的报头格式一个UDP数据段包含一个8字节的报头和数据部分。由4个字段组成。每个字段两个字节。 UDP报头 各字段意义如下: (1)源端口:源端口号。(2)目的端口:目的端口号。(3)UDP长度:UDP用户数据报的长度。(4)UDP检验和:防止UDP用户数据报在传输中出错。UDP用户数据报首部中检验和的计算方法有些特殊。在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。这是专门为了计算检验和而临时得到的一个过渡 性的UDP用户数据报。伪首部数据并不参加向上层模块或下层模块的传递,仅仅是为了计算检验和具体的检验和计算方法,UDP和IP相似,不同的是IP只检验IP数据报的首部,而UDP是将首部和数据部分一起都检验。端口协议说明7Echo将收到的数据报回送到发送方9Discard丢弃收到的任何数据报11Users活跃的用户13Daytime返回日期和时间17Quote返回日期的引用19Chargen返回字符串53Nameserver域名服务67Bootps下载引导程序信息的服务器端口68Bootpc下载引导程序信息的客户端口69TFTP简单文件传输协议111RPC远程过程调用123NTP网络时间协议161SNMP简单网络管理协议162SNMP简单网络管理协议(自陷)UDP使用了一些熟知端口 :6.2.2 UDP的操作 1无连接服务UDP发送出的每一个用户数据报都是独立的数据报,每一个用户数据报可以走不同的路径。使用UDP的进程不能向UDP发送数据流,也不能期望UDP将这个数据流分割成为许多不同的相关联的用户数据报。6.2.2 UDP的操作 2流量控制和差错控制UDP没有流量控制,因而也没有窗口机制。除检验和外,UDP也没有差错控制机制。缺少流量控制和差错控制意味着使用UDP的进程必须要提供这些机制。3排队在UDP中,队列是与端口相关联在一起的 :UDP中的队列 (1)客户端每次当进程启动时,它就从操作系统请求一个端口号,有的实现是创建一个入队列和一个出队列与每一个进程相关联。而有的实现只创建与每一个进程相关联的入队列。客户进程使用在请求中指明的源端口号把报文发送到出队列。UDP逐个地把报文取出,加上UDP首部,交付给IP。当报文到达客户端时,UDP要检查一下,对应于这个用户数据报中目的端口号字段指明的端口号是否已经创建了。若已经有了这样的队列,UDP就把收到的用户数据报放在该队列的末尾。若没有这样的队列,UDP就丢弃这个用户数据报,并请求ICMP协议向服务器端发送不可达报文。所有发送给特定客户程序的入报文,不管是来自同样的或不同的服务器,都被放入同一个队列。 (2)服务器端 在最简单的情况下,服务器在它开始运行的时候就用它的熟知端口创建入队列和出队列。只要服务器进程在运行,这些队列就一直是打开的。当报文到达服务器进程时,UDP要检查一下,对应于这个用户数据报中目的端口号字段指明的端口号是否入队列已经创建了。若已经有这样的队列,UDP就把收到的用户数据报放在这个队列的末尾。若没有这样的队列,UDP就丢弃这个用户数据报,并请求ICMP协议向客户端发送端口不可达报文。所有发送给特定服务器程序的入报文,不管是来自同样的或不同的客户,都被放入同一个队列。当服务器想要回答客户时,它就使用在请求中指明的源端口号将报文发送到出队列。UDP逐个地把报文取出,加上UDP首部,交付给IP。 6.3 传输控制协议(TCP) 1.TCP报文段首部格式TCP对所有的消息采用了一种简单的格式,包括携带数据的消息,确认以及三次握手中用于创建和终止一个连接的消息。TCP使用段来指明一个消息。TCP报文段首部 首部各字段的意义如下:(1)源端口和目的端口:跟UDP相似,分别是源端口号和 目的端口号,各占两个字节。 端口协议说明 7Echo把收到的数据报回送到发送站 9Discard丢弃收到的任何数据报 11Users活跃的用户 13Daytime返回日期和时间 17Quote返回日期的引用 19Chargen返回字符串 20FTP,数据文件传送协议(数据连接) 21FTP,控制文件传送协议(控制连接) 23TELNET终端网络 25SMTP简单邮件传送协议 53DNS域名服务器 67BOOTP引导程序协议 79FingerFinger 80HTTP超文本传输协议 111RPC远程过程调用TCP使用的熟知端口号 (2)序号:占4字节。TCP是面向数据流的。TCP把在一个TCP连接中传 送的数据流中的每一个字节都编上一个序号。(3)确认号:占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号,也就是期望收到的下一个报文段首部的序号字段的值。 (4)数据偏移:占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这实际上就是TCP报文段首部的长度。(5)保留:占6bit,保留为今后使用,但目前应置为0。 下面有6个比特是说明本报文段性质的控制比特。(6)紧急比特URG:当URG1时,表明紧急指针字段有效。它告诉系统 此报文段中有紧急数据,应尽快传送(相当于优先级高的数据),而不是按原来的排队顺序来传送。(7)确认比特ACK:当ACK1时确认号字段才有效。当ACK0时,确认号 无效。(8)推送比特PSH:发送端TCP将推送比特PSH置1,并立即创建一个 报文段发送出去。接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。(9)复位比特RST:当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其它原因),必须释放连接,然后再重新建立传输连接。 (10)同步比特SYN:在连接建立时用来同步序号。当SYN=1时而ACK0时,表明这是一个连接请求报文段。对 方若同意建立连接,则应在响应的报文段中使SYN=1和ACK=1。(11)终止比特FIN:用来释放一个连接。当FIN=1时,表明此报文段的发送端的数据已发送完
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号