基于混合tcp-udp的简单通讯程序的实现

基于混合tcp-udp的简单通讯程序的实现

ID:31199231

大小:319.72 KB

页数:10页

时间:2019-01-07

基于混合tcp-udp的简单通讯程序的实现_第1页
基于混合tcp-udp的简单通讯程序的实现_第2页
基于混合tcp-udp的简单通讯程序的实现_第3页
基于混合tcp-udp的简单通讯程序的实现_第4页
基于混合tcp-udp的简单通讯程序的实现_第5页
资源描述:

《基于混合tcp-udp的简单通讯程序的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于混合TCP/UDP的简单通讯程序的实现本文将描述一种基于TCP的局域网通信小程序的设计与实现方法。一、功能实现了局域网屮消息的通讯,该网络程序能穿越个人防火墙,即当前运行时,防火墙不会有发现,也不会拦截。二、设计思路首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求屮包含请求方法、URI、协议版本以及相关的MIME(MultipurposeInternetMai1Extensions)样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息(包含

2、服务器的信息、资源实体的信息和可能的资源内容)。图1给出了HTTP协议实现的一个简单模型。HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)o每一次链接的建立需要这种经常性的开销,而其并不帯有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链

3、接而重复地使用它传输一系列的请求/响应消息,因此减少了链接建立的次数和经常性的链接开销。请求链按'寥UAVO<……响应链接UA:useragent何户代理)O:originserved®务器)图1HTTP协议实现的简单模型可持续链接减少了每次TCP链接建立的时间,但是一个空闲的TCP链接将需耍一个Socket和相应的存储缓冲区。一个Socket缓冲区的最小长度必须大于一个TCP包的最大长度,即64KB,而且很多实现方法在链接建立时将预分配一些缓冲区。可用的Socket的数量是有限的,很多基于BSD的操作系统对

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

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

6、了TCP经常性的握手开销,而对于长链接则仍可获得TCP的优点,如超时重传、拥塞控制、错误恢复机制等。这种方法屮,客户端首先尝试使用UDP作为传输层的协议,如果对于所请求的URLUDP并不适合,则再次使用TCP链接。这种方法提供了以下保证:O如果初始的UDP数据包丢失,将采用TCP重新链接而不会受到影响。O如果所链接的服务器没有使用混合传输层的实现机制,客户端将使用TCP重新进行链接。图3给出了混合TCP、UDP的实现算法。一个采用混合算法的HTTP客户端首先使用UDP作为传输层的协议发出HTTPGET请求,同

7、时启动超时定时器。图3混合TCP-UDP当服务器处理客户端发来的请求时,它可以从以下两点做出选择:①如果响应的数据足够小(比如,可放到一个数据包中),服务器将使用UDP发回响应。像比较小的网页或HTTPREDIRECT响应就属于这一类。②如果响应的数据很大,无法放进一个UDP数据包中,服务器则要求客户端使用TCP重试。这可以通过添加一个HTTP的头部字段来解决如TCPRETRo在客户端,将会出现以下三种情况:◊客户端从服务器接收到响应。如果响应中包含了所需的HTTP响应,客户端将对数据进行处理。如果服务器要求

8、客户端重试,客户端将使用TCP作为传输层重试。◊如果服务器没有处理通过UDP传输的HTTP包,客户端就会收到ICMP错误消息(目的地址无法到达/协议无法到达)。此吋客户端将会使用TCP重试。◊如果定时器超时,客户端应使用TCP重试。图4给出了在定时器超时情况下,客户端和服务器之间数据包的交换。这种超时机制提供了可靠性,以及与未使用混合TCP-UDP方法的服务器的兼容性。服务器客户瑞UDP:HTTPG

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。