一般来说,client和server之间的数据交换,分为几个优先级,大部分情况下是下面3种:
1. 不可以丢失,但是不要求速度。
2. 不可以丢失,但是要求速度,确并不是非常严格。
3. 可以丢失,但是要求速度
对于1来说,最直接的例子就是聊天信息,动态的地图信息。这些数据不是time-critical的,所以应该使用TCP连接。 在大多数情况下,有专门的 voice/chat server和map server,client到每个server有个TCP连接。一个client有多少个连接根据需要决定。同时有2-3个连接并没有多大开销。当然,如果开销很大,就是程序设计的问题了。其实你想想开BT的时候同时有4,50个连接,你用其他程序的速度并没有慢多少。
对于2来说,比较显著的例子是战斗信息,动作序列。 比如一个人玩游戏,用鼠标点了下地图上的一个坐标,那么人物向这个坐标前进。这个信息从server转发到其他的client,当然越快越好,如果client没收到,就要重发,否则client就看不到这个动作。如果你玩过wow的盗贼,就会发现在网络卡的时候,经常先偷袭,按下键盘以后要等一会才看到攻击动作,就是这个原理。当然这里数据需要经过server的处理,每次打包多个client的动作,和顺序,然后发送。需要复杂的server端逻辑处理。这种应该使用UDP,同时对所有的UDP包编号(用来防止2次处理),使用slide window类似的协议进行重传。
对于3来说,就是位置信息。 位置信息可以丢失,但是由于这种信息更新的最频繁,所以即使丢失其中一个,也可以根据 dead reckoning 算法进行位置预测和修正。 dead reckoning算法有很多变种,适合多类情况。 比如你见过wow里,如果一个人掉线,但是一直往前不停的跑,那多半就是算法进行的预测。偶尔你会发现网络卡的时候,刚刚走到一个地方就退回到原来的位置,就是因为你的动作数据包(2里的)没发送出去,导致update world position的时候,算法进行位置修正的结果。这类数据应该使用UDP.
需要说明的是 UDP和TCP无明显分界。 TCP相比UDP,有3个主要缺点,1是slow start, 2是 throughput jitter, 3是insistence on reliability(相对的,不时绝对缺点). 在数据传送量比较小,网络状况比较稳定的情况下,使用TCP和UDP无大分别。
对于防火墙穿透,如果你是做client的,不需要关心这个问题,因为你往Server发数据,建立连接,都不会受到防火墙的影响。不过server端对于放火墙可以有几种实现方式:
1. 最差的方式是client发送SYN包给服务器,在防火墙或网关上建立NAT地址,然后 Server之需要取得这个NAT地址,把所有的数据包都封装成SYN-ACK包,发给client就行拉。这样做比较省事。但是无法穿透 stateful firewall
2. 是比较好的方式。 不过需要先建立TCP连接,然后对server发送正常的UDP包。大部分的NAT网关会为UDP专门建立个NAT地址,那么通过这个地址,server就可以发UDP包了。但是并不是所有的firewall都会为UDP建立单独的NAT地址。
3. 是最好的方式,由于防火墙不会阻止内部网发起的TCP连接,所以TCP进行数据传输没有任何问题。对于Server/Client来说,只要使用 Raw Socket模拟TCP协议,但是这个模拟的TCP协议使用UDP的本质,没有slide window, 没有 congestion control, 没有flow control等等,这种实现最麻烦,但是几乎能处理所有的防火墙。
4. 其实没有4,不过实在想提下这种最强技术. 就是所有的Server到Client的数据包都可以是ICMP echo reply message. 由于种种原因,firewall不太可能禁止ICMP echo,所以这类消息也是很容易传送到client,但是。。。。。。。。Client如果有 IDS system,很容易把你的sever归类到入侵扫描的范围。所以不用最好。
如果你们不是采用第3种方式,并且你只写client,那么防火墙跟你就没有什么关系。都是server的事。
分享到:
相关推荐
从开滦集团网络工程的实施出发提出了隧道穿越方案,并用此方案来实现了数据对NAT和防火墙的穿越。该工程在林南仓矿和唐山矿企业网络内设立2个服务器:林西矿Server和唐山矿Server,并在这2个服务器之间建立了数据传输的...
1. **网络协议**:网络游戏中的数据流传输主要基于TCP/IP协议栈,包括TCP(传输控制协议)用于提供可靠的数据传输,UDP(用户数据报协议)则常用于实时性要求高的场景,如语音和视频流。此外,游戏开发者还会利用...
许多人反映Remoting不能穿越防火墙,不能用在公网应用中,效率很差,我相信MICROSOFT,我用了Remoting,在一个第三方的项目中,本人用Remoting在公网运行与内部运行同时进行,其实是我外网的数据传输是自己编码,效率还不错,...
1 控制在计算机网络中,不同信任程度区域间传送的数据流 2 网络安全的屏障 3 强化网络安全策略 4 防止内部信息的外泄 防火墙的功能 5 监控网络存取和访问 防火墙与网络安全全文共23页,当前为第7页。 防火墙的功能 ...
在IT行业中,网络通信是至关重要的一个领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种主要的传输层协议。然而,在实际应用中,尤其是涉及到P2P(点对点)通信时,NAT(网络地址转换)会成为一个挑战。本篇...
TCP保证了数据传输的可靠性,确保了即使在网络不稳定的情况下,数据也能准确无误地送达。 穿越NAT是TCP P2P通信的关键环节,因为大多数家庭和企业网络都使用NAT来分配内部IP地址并保护内部网络。NAT将私有IP地址...
其次,NAT转换仅限于TCP/IP协议层面,对于一些依赖于动态协商的协议,如H.323、SIP、H.248、MGCP等,NAT无法处理动态协商的媒体流端口,导致信令中的私有IP地址无法在公网中正确路由,进而影响到媒体流数据的传输。...
1. **支持复杂网络环境**: 在IPsec隧道中存在NAT设备的情况下,仍能保证IPsec连接的正常建立与数据传输。 2. **适应性强**: 特别适合于IP地址不固定的远程访问用户与总部之间建立IPsec隧道。 3. **灵活性高**: IKE...
STUN服务器帮助终端发现其公共IP地址和端口,而TURN服务器作为中继,当两个NAT后的终端无法直接通信时,通过TURN服务器进行数据传输。ICE是WebRTC等实时通信技术的基础,能够有效地处理各种类型的NAT。 3.2 注册...
此外,思科SD-WAN还具备高级安全特性,如集成防火墙功能,确保了数据传输的安全性。 使用思科SD-WAN,企业可以实现多种WAN连接类型的有效整合,包括宽带互联网、4G LTE、MPLS等,实现了基于策略的智能路径选择,...
它负责寻址和路由选择,确保数据能够穿越不同的网络达到目的地。 4. **传输速率单位bps**:bps(Bits Per Second)代表每秒位数,是传输速率的基本单位,表示每秒钟传输的二进制位数量。 5. **防火墙系统采用的...
**正文** "FogConnect"是一种专门设计用于企业级网络设备之间进行高效、安全、...开发者可以通过研究这些资源,进一步了解FogConnect的工作原理,并将其集成到自己的企业网络解决方案中,提升数据传输效率和安全性。
RTP本身并不保证数据的可靠传输,而是依赖于上层的UDP(User Datagram Protocol)或TCP(Transmission Control Protocol)来提供基本的数据传输服务。RTP通过时间戳和序列号确保数据的有序接收和同步,这对于多媒体...
- **传输层**:负责确保数据可靠地从源主机传输到目的主机,提供两种服务模式:TCP(面向连接的服务,保证数据按序、无损地传输)和UDP(无连接的服务,适用于实时数据传输,不保证数据送达顺序)。 - **网络层**:...
GRE通常用于在不同的网络层之间封装数据包,而IPSec则提供了安全的数据传输,包括加密和身份验证。 GRE是一种协议,它允许不同网络协议的数据包在另一个网络协议中被封装和传输。这种技术常用于穿透NAT(网络地址...
- **连接建立**:TCP连接用于稳定的数据传输,或者使用UDP实现更快的传输速度。 - **数据交换**:使用Socket类进行数据的发送和接收,可能需要实现自定义的协议解析。 - **安全性**:SSL/TLS加密确保通信内容不被...
6. **安全问题**:VOIP通信涉及数据传输,因此需要考虑安全措施。SSL/TLS加密、SRTP(安全实时传输协议)和防火墙策略等用于保护通话隐私和防止窃听。 7. **软硬件设备**:VOIP可以借助硬件设备如IP电话,或者软件...