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网络的现状。
GPRS网络条件下TCP、UDP的比较的更多相关文章
- [网络] SOCKET, TCP/UDP, HTTP, FTP
(一)TCP/UDP,SOCKET,HTTP,FTP简析 TCP/IP是个协议组,可分为三个层次:网络层.传输层和应用层: 网络层:IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议 传 ...
- 网络协议-网络分层、TCP/UDP、TCP三次握手和四次挥手
网络的五层划分是什么? 应用层,常见协议:HTTP.FTP 传输层,常见协议:TCP.UDP 网络层,常见协议:IP 链路层 物理层 TCP 和 UDP 的区别是什么 TCP/UDP 都属于传输层的协 ...
- 4.Java网络编程之TCP/UDP
常见传输协议: UDP , TCP UDP协议: 特点: 1.将数据及源和目的封装成数据包中,不需要建立连接 2.每个数据包的大小限制在64K内 ...
- 网络编程之TCP/UDP及其流程比较(转)
TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式TCP保证数据正确性,UDP可能丢包TCP保证数据顺序,UDP不保证 具体编程 ...
- 网络协议HTTP TCP/UDP 浏览器缓存 Restful(十)
一 TCP网络协议 1 建立TCP连接:三次握手原则 客户端通过向服务器端发送一个SYN来创建一个主动打开,作为三次握手的一部分.客户端把这段连接的序号设定为随机数 A. 服务器端应当为一个合法的SY ...
- 31.网络协议介绍tcp/udp
网络协议 TCP:网络中传输数据的协议,打电话 解决了我可能在网络中找不到别人(数据无法传输到) 保证数据传输的稳定性,可靠性 保证数据的安全性,完整性 对方要有响应 尝试重新发送 UDP:传输数据的 ...
- day27 网络通信协议 tcp/udp区别
今日主要内容: 一.网络通信协议 二.tcp udp协议下的socket 一.网络通信协议 1.1互联网的本质就是一系列的网络协议 本机IP地址('127.0.0.1',xxxx) 互联网连接的电脑互 ...
- TCP UDP 协议的选择
行业应用中TCP/IP传输协议和UDP协议的选择! 中国移动.中国联通推行的GPRS网络.CDMA网络已覆盖大量的区域,通过无线网络实现数据传输成为可 能.无线Modem采用GPRS.CDMA模块通过 ...
- [原][JSBSim]基于qt代码实现:TCP|UDP与飞行模拟软件JSBSim的通信,现实模型飞行!
废话没有,上关键代码 头文件 #include <QUdpSocket> #include <qtcpsocket.h> #ifndef vrUDP #define vrUDP ...
随机推荐
- 《架构设计之[CAP定理]》读后感
现在有许多互联网项目都是采用分布式结构进行部署.而cap定理是分布式系统中最近出的原则.所以对于哦我们来说,学习cap非常重要.CAP定理又称为布鲁尔定理.CAP定理是指对于一个分布式系统,不能同时满 ...
- display和overflow
一.display <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- mysql 02
CREATE TABLE emp(eid INT,ename VARCHAR(20),egender CHAR(2),ebirthday DATE,eemail CHAR(10),eramark VA ...
- easyUI----纵向合并单元格
使用Easyui-DataGrid过程用.做统计/报表等时经常会使用到合并单元格,原生态Easyui-DataGrid没有合并单元格的属性或方法. 解决方案: 代码一 onLoadSuccess: f ...
- Java中break、continue及标签等跳转语句的使用[下]
作为上一篇使用for循环演示的跳转,这一篇将使用while.相比较来说,while比for循环更简单.代码如下: public class LabeledWhile { public static v ...
- 【c++】类中带默认参数的函数
反思两个问题 1. 带默认参数的函数,为何声明.定义不能同时有参数? 2. 带默认参数的函数, 为何带默认参数的参数靠后站? 上程序 #include <iostream> #includ ...
- spring中使用quartz时注入时出现的错误
错误1: 配置文件: <!-- 任务执行器的线程池 --> <bean id="taskExecutor" class="org.springframe ...
- 很小的一个函数执行时间调试器Timer
对于函数的执行性能(这里主要考虑执行时间,所耗内存暂不考虑),这里写了一个简单的类Timer,用于量化函数执行所耗时间. 整体思路很简单,就是new Date()的时间差值.我仅仅了做了一层简单的封装 ...
- java 线程池(2)
ScheduledThreadPoolExecutor概述 ScheduledThreadPoolExecutor下文简称 STPE. public class ScheduledThreadPool ...
- nodejs中引入art-template模板
使用Webstorm创建nodejs express应用时,默认使用的是jade或者ejs模板,对于不习惯这两种模板语法的人来说确实不是很方便.没关系,这里我们使用art-template模板引擎,使 ...