zoukankan      html  css  js  c++  java
  • GPRS网络条件下TCP、UDP的比较

      使用场景:使用GPRS的场合。

      名词解释:NAT(Network Address Translation,网络地址转换)

      中国移动的GPRS网络是使用的虚拟IP地址,需要通过移动的虚拟地址转换路由器进行与internet之间消息的转发,具体实现过程:

      1、NAT路由器得到从内网IP地址发来的请求;

      2、把该请求的IP源地址,端口号替换成一个真实的internet IP地址和一个空闲端口号,并在内部表格中添加相应翻译信息的表项;

      3、把信息传递给远端

      今后NAT 路由器将维护该表格中的表项,如果从远端收到指向该表项端口号的信息,将把真实的虚拟IP地址和端口号翻译回来。
      因此使用GPRS网络进行与internet通信需要gprs虚拟IP侧首先发起tcp连结或发udp数据包给远端server,这样才能让NAT router 建立起正确的翻译表项。今后就可以进行双向网络数据传输了。
      从NAT协议的实现上,对UDP翻译表项和TCP翻译表项的保持时间不同,因为UDP没有类次TCP的连接撤销报文协议,因此采用超时无消息包传送即释放的方式,实测中国移动的网络UDP表项保持时间只有几秒钟。也就是说,如果几秒钟双方没有通信,如果是internet server侧发送信息给GPRS虚拟ip,该信息因为相应的NAT router表项已经释放的原因将丢失。为避免这个问题,除非用户仅实现gprs网络侧的上传等待回应这种消息传送方式,否则为了保持NAT路由器的翻译表项,GRPR需要不停发送信息(一般称为heartbeat信息,或称心跳信息)来获得该连结表项的保持。这样会带来额外的流量费用。
      而tcp做为一个连接型的协议,因此nat route 可以知道何时双方连接结束,因此会一直保持该连结,就不需要不停发heartbeat来保持该连结。当然也有可能需要重新刷新该表项的情况,如NAT 路由器掉电或复位,或资源不足而释放相应表项,但这种情况的概率是非常小的。可以使用发送超时或一个较长时间的heartbeat来解决。
      另外GPRS网络的时延和误码率相对较高,TCP协议实现了重发,排序和流控,而UDP需要用户自己在应用程序中做这些工作,用户自己的实现不可能比已经广泛应用了几十年的TCP协议更可靠,因此可知,tcp协议更适合gprs网络的现状。

  • 相关阅读:
    观《归来》,写《后感》
    断言(Assert)与异常(Exception)
    diff/merge configuration in Team Foundation
    【转】程序员/开发人员的真实生活[多图预警]
    【转】被诅咒的程序员的七宗罪
    【转】如此心机的老婆,不教出一个优秀的女儿才怪了
    【转】根据中国气象局提供的API接口实现天气查询
    asp.net设置默认打开页面,Web.config,defaultDocument
    强制浏览器使用兼容模式,Web.config,httpProtocol
    文献标识码、文献载体类型标识
  • 原文地址:https://www.cnblogs.com/sarafill/p/5423954.html
Copyright © 2011-2022 走看看