TCP与UDP协议

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
然而问题并没有那么简单,因为子网不是理想的,不 是所有子网都能保证分组能正确及时地传到信宿端,因为 分组可能在传送过程中丢失。解决分组丢失的常用方法是 使用超时重传。 最难解决的问题是,请求根本没有丢失,而是在子网 中存储起来,过一段时间后,又突然出现在服务器端。在 无连接数据报子网中,尤其可能出现这种情况。这就是所 谓延迟重复问题。 消除重复连接有三种方法:消除重复连接本身,消除 重复连接请求,三次握手建立连接。 (1)消除重复连接。遵循消除重复连接的思路,有两种具 体方法可以考虑,即利用过时连接表和非重复TSAP地址。 (2)消除重复连接请求。消除重复连接请求总的想法是删 除在网络中滞留的陈旧分组,方法是给每一分组赋予一个
传输层连接管理
以上建立传输连接的模型是由ARPANET首先提出来的, 称ARPANET初始连接协议。显而易见的缺点是,客户怎么 能知道某台服务器上正好能提供它所需要的服务呢(即是 否存在相应的应用程序)。一种改进的模型是取消进程服 务器,对每一具体服务器均分配一个公认TSAP。再提供一 个名字服务器,它也占用一个公认TSAP。根据服务名字, 可以从名字服务器中查出对应的公认TSAP。客户先从名字 服务器中查出具体服务器的公认TSAP,再直接与具体服务 器建立连接,即可获得所需服务。 3.建立连接 在理想的情况下,一个成功的建立传输连接的过程如 图8.45所示。图中,T-CONNECT表示传输层连接类原语, request、indication、response和confirm分别是连接请求、指 示、响应与确认原语。比如T-CONNECT request表示层连 接请求原语。建立连接时,客户发送一个请求报文,服务
用户数据报协议UDP
用户数据报协议UDP(User Datagram Protocol)建立在IP协议之上, 提供无连接的数据报传送。相对于IP协议,它唯一增加的能力是提供协 议端口,以保证进程通信。基于UDP的应用程序在不可靠子网上必须自 己解决可靠性(如报文丢失、重复、失序、流控等)。UDP虽然不可靠 而TCP/IP依然还要采用它的理由是UDP的高效率。 一条UDP报文就叫一条用户数据报,分为头标和数据区,如图UDP报 文格式所示。各字段的意义如下: 信源端口(SOURCE PORT):发送端UDP端口,当不需要返回数据时, 该域置0。 信宿端口(DESTINATION PORT):接收端UDP端口。 长度(LENGTH):以字节计的整个报文长度,最小值为8(头标长)。
传输层连接源自文库理
CR(初始序号=X) 第一次 CR(初始序号=X) CC(初始序号=Y, 确认=X)
CC(初始序号=Y, 确认=X) DATA(序号=X, 确认=Y)
第二次
第三次
DATA(序号=X, 确认=Y)
图8.46 三次握手示意
传输层连接管理
4.撤除连接 撤除连接比建立连简单,但也可能造成数据丢失,因 为连接的双方都可以发起撤除连接操作。 假设A、B两机建立连接并传输报文。在A机毫无准备 的情况下,B机单方面发出断连请求,并立刻终止接收该连 接上数据。在A机未收到断连请求之前,随时可能向B机发 送数据,于是便有了数据丢失的可能性。 为了解决此问题,要再次使用三次握手法。一方发出 断连请求后并不立即撤除连接,而要等待对方确认;对方 收到请求后,发送确认报文,并撤除连接;发起方收到确 认后最后撤除连接。
传输层连接管理
面向连接的传输要求A机和B机以同步方式进行报文传输, 双方发出的第一个报文均给出一个本地独立的初始序号。在 双方一来一回的报文交换过程中,回报文要对收到的上一个 来报文加以确认。 在三次握手法的第一次中,A机向B机发出连接请求(简 称CR),其中包含A机端的初始报文序号(比如X)。第二 次,B机收到CR后,发回连接确认(CC),其中,包含B机 端的初始报文序号(比如Y),以及B机对A机初始序号X的 确认。第三次,A机向B机发送X序号数据,其中包含对B机 初始Y的确认。三次握手法的操作过程如图8.46所示。 由于A机在本端对报文进行编号,它知道哪些序号是过 时的。假如B收到一个过时连接请求CR(初始序号=X1),并 确认之。A机判断出CC(确认=X1)是过时的,将发送一个拒 绝报文REJ(确认=Y),表示对来自B机的CC(初始序号=Y, 确认=X1)的拒绝。于是便不会在旧的重复连接请求上建立 错误连接了。
传输层连接管理
传输层连接管理,包括连接端点的标识、建立传输连接 的模型、建立连接与撤除连接这样几个问题。 1.连接端点的标识 在建立连接的时候,必须显式地给出全局唯一的信宿端 的地址。一个全局的传输服务用户应该用以下四个域来标识: {TSAP,NSAP,主机地址,网络号} 当网络层是无连接的(IP协议就是),NSAP便可以忽略。 TCP/IP把TSAP叫做端口(port)。一个端口拥有一个本地唯 一的端口号。作为一种逻辑结构,TCP/IP端口可以随机分配, 但有一部分保留下来供系统专用。前者称为自由端口,后者 称为保留端口。保留端口只占很小一部分,以全局方式进行 分配,就是后面我们要提到的服务器进程。每一个标准的服 务器都拥有一个全局公认的端口号,不同机器上同样的服务 器,其端口号相同。自由端口占全部端口的绝大部分,以本 地方式进行分配。TCP/IP传输层的两个协议(TCP与UDP),
用户数据报协议UDP
0 15 16 31
UDP头标 UDP数据区
UDP源端 口 UDP
传输层连接管理
广泛使用的客户-服务器模型巧妙地解决了这个问题。 客户(发起连接的一方)发出连接请求。服务器(接受连 接的一方)中有一个特殊的后台进程,叫进程服务器。进 程服务器随系统一起启动并常驻内存,它拥有一个全局公 认的TSAP。客户根据对方的主机地址和进程服务器TSAP 向对方进程服务器发起连接请求,在请求报文中同时给出 自己的TSAP及所在的主机地址。进程服务器监听其公认 TSAP,一旦收到连接请求,便建立一条临时连接。 客户通过临时连接向进程服务器发送一个报文,告诉 它希望得到的服务。进程服务器便选择一个自由TSAP, 并fok一个运行具体服务程序的新进程,将新TSAP传给新 进程。进程服务器再向客户发回新TSAP,并终止临时连 接,继续监听公认TSAP。客户再与具体服务器之间通过 新TSAP建立新连接,并在新连接上开始正式通信。
用户数据报协议UDP
校验和(CHECKSUM):这是一个可选域,置0时表示未选,全1 (负0的反码)表示校验和为0。 UDP建立在IP之上,意味着整个UDP报文封装在IP数据报中传送,如 图UDP报文封装所示。所谓封装实际上是发送端UDP软件将UDP报文交 给IP软件后,IP软件在前面加一个头标,构成IP数据报,这一过程相 当于将UDP报文装入IP数据报数据区。值得注意的是,UDP数据报中不 指定信源主机和信宿主机地址,因为这没有必要,传输层只需识别端 口,而不用识别主机,识别主机的工作由互联网层(IP软件)完成。 UDP校验和是一个可选域,这是其效率的又一体现,因为计算校验 和是很花费时间的,如果应用程序对效率的兴趣远远高于对可靠性的 兴趣,就可以不选此域。UDP校验和还有一个与众不同的特点:除UDP 数据报本身外,它还覆盖一个附加头标,该头标并非UDP数据报的有效 成分,称为伪头标(pseudo header),其格式如图UDP伪头标所示。
传输层连接管理
器若愿意接收请求,则发回一个响应报文。这样连接就建 立起来。这是一个合情合理的过程,很容易理解。
T-CONNECT Request
T-CONNECT Indication T-CONNECT Response
T-CONNECT Confirm
图8.45 建立连接的理想过程
传输层连接管理
传输层的其他问题
传输层的其他几个问题包括滑动窗口协议、传输层多路复用以及崩 溃恢复,下面分别叙述。 (1)滑动窗口协议。滑动窗口协议的作用有二:其一是保证数据传输的可 靠性,其二是实现流量控制。网关和接收端可以通过某种方式通知发送 方改变其窗口大小,以限制发方报文注入网络的速度,达到流控之目的。 (2)传输层多路复用。TCP/IP的网络层不提供连接,所以不存在向下多路 复用问题。向上多路复用指多个传输连接使用一个网络连接,其目的在 于充分利用虚电路带宽,降低传输开销。TCP/IP就属此种类型。 (3)崩溃恢复。这是传输层最难解决的问题之一。有两种情况,一是网络 连接崩溃,一是主机崩溃。不管是那种崩溃,主机都会丢失未确认的数 据或关于传输状态的信息。为了恢复崩溃,发送端向所有主机广播一个 查询报文,宣告自己已经崩溃,希望得知其它主机所有打开连接的状态, 以此为依据进行恢复。
传输层连接管理
他们各有自己的保留端口与自由端口,且保留端口号的范围 都是0~255。不同协议的端口之间没有任何联系,不会互相 干扰。同一个保留端口在TCP和UDP中可能对应于不同类型 的应用进程,也可能对应于相同类型的应用进程。 我们进一步来分析一下端口号。在同一台计算机上,当 一个应用程序运行的时候,就分配给它一个端口。这里有三 个问题。第一,什么时候、哪一个应用程序运行,是随机的。 第二,同一个应用程序在不同时刻运行所分配的端口号一般 不会相同,也就是说,一个应用程序并不拥有固定的端口号。 第三,同一台主机上拥有的应用程序是有限的,不可能你需 要什么程序就有什么程序。 2.建立传输连接的模型 传输连接必须面向进程,必须用到对方的端点地址 TSAP。问题是,发起连接的一方如何知道对方哪个应用程 序正在运行;即使正在运行,分配给它的端口号又是多少呢?
传输层连接管理
生存时间(Time To Live,简称TTL)。分组一进入网络, 立刻开始生存时间计数,到时候尚未到达信宿机者,一律被 抛弃,从网间网中被清除。 (3)三次握手建立连接。即便是有了TTL这样的机制,也难保 没有重复请求报文出现,最后的解决办法是在建立连接的机 制上做文章,三次握手(three-way handshaking)方法就 是一种很常用的机制。 三次握手方法首先要求对本次连接的所有报文进行编号, 常用的方法是取当前时钟的最低n位作为初始序号。由于序 号域具有足够的长度,可以绝对保证序号循环一周回来时, 使用同一序号的旧报文早已传输完毕。这样网络中不会出现 关于同一连接、同一序号的两个不同报文。 三次握手解决的问题是:假设A机向B机发出连接请求, 但请求报文丢失,而一个延迟的重复的旧请求报文到达B, 如果B接受此请求,连接就会错误地建立起来。
TCP与UDP
IP数据报采用无连接的数据报机制,对数据只是尽力 传送,至于传输是否正确、有序,不采取任何措施。因此, TCP/IP的可靠性体现在传输层。传输层有两个协议,其中 UDP协议是无连接的,因此传输层向它的上层协议提供的 服务质量主要依靠TCP协议来保证,因为TCP提供面向连 接的服务,称为端到端可靠性。
TCP与UDP
TCP/IP传输层有两个并列的协议,TCP和UDP。其中, TCP ( Transport Control Protocol ,传输控制协议)是 面向连接的,相当于OSI的TP4,而且两者确实有许多相似 之处。 UDP ( User Datagram Protocol ,用户数据报协议) 是无连接的,相当于OSI的TP0。一般情况下,TCP和UDP共 存于一个网间网中,前者提供高可靠性服务,后者提供高 效率服务。高可靠性的 TCP 用于一次传输大量报文的情形 (如文件传输、远程登录等);高效率的 UDP 用于一次传 输少量报文(尤其是交易型应用)的场合,其可靠性由应 用程序提供。 TCP 要解决各种可靠性问题,因而比较复杂; UDP 几乎直接建立在 IP 协议之上,相对简单得多。 TCP 和 UDP 共存于一个网间网中的事实告诉我们,在计算机网络 中,可靠性并不比效率更重要,只有可靠性而无效率的协 议在某些应用场合下是根本没有用的,对二者的选择取决 于应用的环境和需要。
相关文档
最新文档