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 ...
随机推荐
- EPC sequence
nps-epc-term-2.7.0 eNodeB: /root/b2b/eutran/01/bin ./clean_log.sh ./set_ip.sh [root@CEN6- bin]# ./cl ...
- Linux and Shell 实用命令
-name '*.jar' -printf '%p:' ### 查看CPU使用率 mpstat -P ALL
- 【测试的艺术】+测试分析&测试计划+模板
一.项目概述 1.1.项目背景 #就是说一下为什么要做这个项目 1.2.项目目标 #这个项目最终要达到的目标是什么 二.项目整体分析 #项目分为哪些部分?各部分之间的关联是什么?各部分的目标是什么? ...
- TensorFlow模型转为caffe模型
最近由于要将训练好的模型移植到硬件上,因此需要将TensorFlow转为caffe模型. caffe模型需要两个文件,一个是定义网络结构的prototxt,一个是存储了参数的caffemodel文件. ...
- mysql 导入 excel 数据
客户准备了一些数据存放在 excel 中, 让我们导入到 mysql 中.先上来我自己把数据拷贝到了 txt 文件中, 自己解析 txt 文件,用 JDBC 循环插入到数据库中. 后来发现有更简单 ...
- 实现JS继承的几种方法
总的来说,JS的继承大体上分为两种:借用构造函数方式和原型方式 首先,我们来看看借用构造函数方式的几种做法: //方式一function Person(name, sex){ this.name = ...
- django中多个字段的模糊查询
django中多个字段的模糊查询 使用Entity.objects.filter(name_contains='kris').filter(address='beijing') 这个方法是指名字包含k ...
- 2018年javaee学习目标
我打算在本学期的学习中把java ee掌握并能熟练应用,如果可以的话还打算编写一个后台服务程序,增加自己的实战经验.
- [PY3]——找出一个序列中出现次数最多的元素/collections.Counter 类的用法
问题 怎样找出一个序列中出现次数最多的元素呢? 解决方案 collections.Counter 类就是专门为这类问题而设计的, 它甚至有一个有用的 most_common() 方法直接给了你答案 c ...
- C# dynamic json
对应普通对象,写个扩展方法,ToJson蛮方便. 但是 dynamic 类型就不行了,因为是运行时解析,只能转换为强类型 IDictionary<string, object> 才可以. ...