`
soardragon
  • 浏览: 316783 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

基于混合TCP-UDP的HTTP协议实现方法

阅读更多

摘要:目前,用于Web页面访问的应用都是基于HTTP应用协议的,而在下层则使用传输控制协议(TCP)[1]作为传输协议;但TCP并不适合于短会话,即只有少量的数据交换的情况。因为建立、撤销TCP链接的开销即使对于短会话也是必需的。在用于PDA(个人数字助理)中浏览器的设计中,根据无线网络延迟大、带宽窄的特点提出了一种混合TCP-UDP传输协议的方法来解决这一问题。本方法使用UDP[2]作为短会话时的传输层协议,而对于有大量数据需要传输时则使用TCP作为传输层的协议。这样,对于短会话可以避免TCP的额外开销,而对于长会话又可以得到由TCP提供的可靠传输和拥塞控制。
关键词:TCPUDPHTTPPDA

引言

  超文本传输协议(HTTP)是目前通过Internet进行信息交换最主要的方式。HTTP协议是建立在请求/响应(request/response)模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME(MultipurposeInternetMailExtensions)样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息(包含服务器的信息、资源实体的信息和可能的资源内容)。图1给出了HTTP协议实现的一个简单模型。HTTP/1.0[3]为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1[4]提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。


  可持续链接减少了每次TCP链接建立的时间,但是一个空闲的TCP链接将需要一个Socket和相应的存储缓冲区。一个Socket缓冲区的最小长度必须大于一个TCP包的最大长度,即64KB,而且很多实现方法在链接建立时将预分配一些缓冲区。可用的Socket的数量是有限的,很多基于BSD的操作系统对于能够同时打开的链接数都有一个缺省的最大值。

  无线掌上设备PDA的应用(如浏览器)[5]特点表现在:①因为页面是针对掌上设备制作的,一般在1K~2K字节,比较小;②目前无线通信网络的带宽很窄,GSM的数据信道带宽只有9.6K。当前Web页面的访问大多通过HTTP协议,并使用TCP作为下层的传输控制协议。但不幸的是,TCP并不适合短会话的应用情况,不同于现在采用的使用单一TCP传输协议进行数据传输的方式。本文提出了采用动态选择传输层协议(TCP、UDP)的方法来改善取回页面的延迟、网络拥塞以及服务器的负荷。


  这种混合TCP-UDP的方法结合两个方面的优点:首先,对于需要比较少数据传输的情况,它将使用UDP作为传输层的协议,从而避免了TCP链接的多次握手开销;另外,对于需要较多数据传输的情况,它将使用可靠的带有重排序和拥塞控制的TCP协议作为传输层的协议。混合TCP-UDP的实现方法只需要对应用层的改动,而操作系统的核心代码不用任何更改。仅采用UDP协议的缺点在于,需要在应用层建立一套类似于TCP复杂的控制协议,从而进行重排序和拥塞控制来保证传输的可靠性。

1背景

  HTTP是一个请求/响应协议,客户端的应用程序通过提供一个URL可以从服务器上得到所需的数据。HTTP可以用来访问各种不同类型的资源,其中包括文本、图形、影音、可执行文件、数据库查询结果等等。

  图2给出了在客户端发起HTTPGET请求后,在客户端和服务器之间进行数据包交换的示意。图中只有两个数据包是有用的(即携带了数据):一个是HTTPGET请求,另一个是HTTP的响应。其它的都是TCP用来进行握手操作的数据包。为了减轻Web服务器的负荷,经常采用重定向机制。这样从服务器发来的重定向响应报文是很短的数据包。使用TCP作为传输协议需要至少7个数据包,而使用UDP则只需要2个数据包就足够了。


2设计

  我们使用混合传输层[6]的方法即对于少量数据传输的链接采用UDP,而对于大量数据传输的链接采用TCP作为传输层协议。这样对于短链接而言就避免了TCP经常性的握手开销,而对于长链接则仍可获得TCP的优点,如超时重传、拥塞控制、错误恢复机制等。这种方法中,客户端首先尝试使用UDP作为传输层的协议,如果对于所请求的URLUDP并不适合,则再次使用TCP链接。这种方法提供了以下保证:

◇如果初始的UDP数据包丢失,将采用TCP重新链接而不会受到影响。

◇如果所链接的服务器没有使用混合传输层的实现机制,客户端将使用TCP重新进行链接。

  图3给出了混合TCP、UDP的实现算法。一个采用混合算法的HTTP客户端首先使用UDP作为传输层的协议发出HTTPGET请求,同时启动超时定时器。

  当服务器处理客户端发来的请求时,它可以从以下两点做出选择:


①如果响应的数据足够小(比如,可放到一个数据包中),服务器将使用UDP发回响应。像比较小的网页或HTTPREDIRECT响应就属于这一类。

②如果响应的数据很大,无法放进一个UDP数据包中,服务器则要求客户端使用TCP重试。这可以通过添加一个HTTP的头部字段来解决如TCPRETR。

  在客户端,将会出现以下三种情况:

◇客户端从服务器接收到响应。如果响应中包含了所需的HTTP响应,客户端将对数据进行处理。如果服务器要求客户端重试,客户端将使用TCP作为传输层重试。

◇如果服务器没有处理通过UDP传输的HTTP包,客户端就会收到ICMP错误消息(目的地址无法到达/协议无法到达)。此时客户端将会使用TCP重试。

◇如果定时器超时,客户端应使用TCP重试。

  图4给出了在定时器超时情况下,客户端和服务器之间数据包的交换。这种超时机制提供了可靠性,以及与未使用混合TCP-UDP方法的服务器的兼容性。

  图5示意了服务器要求客户端使用TCP重发请求时,客户端和服务器之间的数据包交换。

3结语

  混合TCP-UDP方法改善了参与HTTP传输的三个方面:客户端、服务器和网络。

◇对于客户端而言,可以避免由于TCP而引入的三向握手的时间,从而减少了浏览的延迟时间。

◇对于服务器而言,由于所需的TCP的链接数量减少,从而降低了由于建立、维护、撤销TCP链接所带来的服务器的负荷。

◇对于网络而言,由于TCP控制数据包的减少从而减少了网络的拥塞。

分享到:
评论

相关推荐

    TCP-UDP.rar_TCP UDp_TCP 实现 HTTP_tcp/udp

    本主题主要关注如何基于混合TCP-UDP的HTTP协议实现方法,这对于理解网络通信机制以及优化网络应用性能至关重要。 TCP是一种面向连接的、可靠的传输协议。它通过三次握手建立连接,确保数据传输前双方已经准备好,...

    通信与网络中的基于混合TCP-UDP的HTTP协议实现方法

    混合TCP-UDP协议的提出,进一步优化了资源使用,尤其对于带宽受限的PDA应用。 在实现混合TCP-UDP的HTTP协议时,应用程序需要具备动态选择传输层协议的能力。这意味着在应用层需要处理UDP的不可靠性,实现类似TCP的...

    TCP-IP技术大全

    IP协议家族 77 9.1 TCP/IP模型 77 9.1.1 解剖TCP/IP模型 78 ...TCP做什么 83 9.4 理解用户数据报协议(UDP) 85 9.4.1 UDP头结构 85 9.4.2 UDP能做什么 85 9.4.3 TCP和UDP 86 9.5 小结 86 ...

    行业分类-设备装置-基于UDP的TDMA协议控制方法与平台.zip

    该压缩包包含的“基于UDP的TDMA协议控制方法与平台.pdf”很可能是一个详细的白皮书或研究报告,探讨如何在设备装置中应用这种混合协议来优化通信效率。 在理解这个技术概念之前,我们先了解一下TDMA和UDP的基础知识...

    UDP/TCP聊天程序

    UDP/TCP聊天程序是一种网络通信应用,它结合了两种传输层协议——用户数据报协议(UDP)和传输控制协议(TCP)。这两种协议在互联网通信中扮演着不同...这为学习网络编程和理解TCP/UDP协议的应用提供了很好的实践案例。

    TCP-IP详解卷 二:实现 1

    传输层有TCP和UDP协议;网络层主要由IP协议负责;链路层则处理物理网络的连接,如以太网或令牌环网络。 4. **TCP连接与断开**:TCP连接通过三次握手建立,即SYN-SYN-ACK,而断开连接则涉及四次挥手,即FIN-ACK-FIN-...

    [最新] TCP_UDP, COM口调试工具集

    在IT行业中,网络通信是至关重要的一个领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的...在实际工作中,了解TCP和UDP协议的原理,以及掌握有效的COM口调试方法,是提升工作效率和解决问题的关键。

    tcp.udp高级编程

    在IT行业中,网络编程是至关重要的一个领域,TCP(传输控制协议)和UDP(用户数据报协议)作为网络通信的两大基石,对于任何涉及到网络应用的开发者来说都是必须掌握的知识。本篇将深入探讨TCP与UDP的高级编程,旨在...

    网络游戏-基于混合协议的多级网络拓扑智能发现及生成方法和系统.zip

    《网络游戏-基于混合协议的多级网络拓扑智能发现及生成方法和系统》这篇文档主要探讨了网络游戏在复杂网络环境中的网络拓扑发现与生成技术。网络拓扑是描述网络中设备、节点间连接关系的结构,对于网络游戏的运行...

    Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例

    主要介绍了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能,结合实例形式分析了Python基于TCP UDP协议的IPv4 IPv6模式客户端和服务端数据发送与接收相关操作技巧,需要的朋友可以参考下

    TCP/IP技术大全

    24.4.3 混合TCP/IP安装 268 24.5 IP迁移辅助工具 268 24.5.1 NDS 268 24.5.2 DNS 269 24.5.3 DHCP 269 24.5.4 DDNS 269 24.5.5 SLP 269 24.5.6 兼容模式 269 24.5.7 迁移代理 270 24.6 迁移策略 270 24.6.1 使用测试...

    TCP-IP转8口485网络转换器UT-681使用说明书.pdf

    1. **网络接口**:UT-681提供一个RJ45接口,支持10/100M自适应以太网连接,兼容TCP和UDP协议。 2. **多端口设计**:具备8个独立的RS-485接口,可以连接多个RS-485设备。 3. **隔离保护**:每个RS-485端口均具有电气...

    tcp 文件传输(集成了UDP消息发送)

    TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而UDP则是一种无连接的、不可靠的、基于数据报的传输协议。在本文中,我们将详细讨论如何在MFC(Microsoft Foundation Classes)框架下实现一个结合TCP...

    计算机网络课程设计报告》.doc

    在文中提到的混合TCP/UDP协议设计,旨在为不同场景选择最佳传输协议。 4. **数据包捕获与分析**: - Wireshark是一款强大的网络协议分析工具,用于捕获和查看网络流量。学生需要学会使用Wireshark来抓取HTTP和TCP/...

Global site tag (gtag.js) - Google Analytics