首页 理论教育网络协议的重要性及TCP/IP与UDP协议的应用

网络协议的重要性及TCP/IP与UDP协议的应用

【摘要】:网络协议即网络中传递、管理信息的一些规范,在计算机之间相互通信需要共同遵守一定的规则,这些规则称为网络协议。之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,所以以TCP/IP命名。UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程序传给网络上另一台主机上的某一个应用程序。

网络协议即网络中传递、管理信息的一些规范,在计算机之间相互通信需要共同遵守一定的规则,这些规则称为网络协议。

TCP/IP不是一个协议,而是一个协议簇的统称,里面包含TCP协议、IP协议、UDP协议及http、FTP等。之所以命名为TCP/IP协议,因为TCP、IP协议是两个很重要的协议,所以以TCP/IP命名。

1)TCP/IP协议的四层参考模型

(1)应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet),以及超文本传输协议(http)等。

(2)传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据包协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已送达并接收。

(3)互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

(4)网络接口层:对实际的网络媒体的管理,定义如何使用实际网络来传送数据。

2)长连接

长连接是客户端与服务器建立连接后,进行业务报文的收发,始终保持连接状态,在没有报文收发的情况下,可以使用心跳包来确认连接状态的保持,很多移动端游戏类型都采用长连接,例如RPG、SLG、ACT等需要即时交互的游戏类型,使用TCP长连接协议。

3)短连接

短连接是客户端与服务器需要进行报文交互时进行连接,交互完毕后断开连接。例如,在某种推图游戏对战回合中,进行不联网的单机计算,当在本关卡结束时再联机交互结算报文,所以例如卡牌、回合制还有例如页游等使用http短连接协议。

4)TCP协议和UDP协议对比

TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据前,必须和对方建立可靠的连接。

客户端主机和服务器经过三次握手进行连接简单描述如下:

第一次,客户端向服务器发送连接请求。

第二次,服务器做出收到请求和允许发送数据的应答。

第三次,客户端再次送一个确认应答,表示现在开始传输数据了。

UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程序传给网络上另一台主机上的某一个应用程序。UDP协议有如下的特点:

(1)UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。(www.chuimin.cn)

(2)UDP不对收到的数据进行排序,在UDP报文的头中并没有关于数据顺序的信息(如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排起。

(3)UDP对接收到的数据包不发送确认信号,发送端不知道数据是否被正确接收,也不会重发数据。

(4)UDP传送数据较TCP快速,系统开销也少。

总结:

从以上特点可知,UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交互服务,而TCP是长连接、较可靠的网络协议。

Socket本质是对TCP/IP封装的编程接口(API),使得程序员更方便使用TCP/IP协议。Socket类提供了各种网络连接、接收数据、发送数据等相关方法给程序开发人员使用。

5)Socket类常用方法

Protocolbuffer也叫Googlebuffer,protobuf是谷歌的数据交换格式,独立于语言,原生支持Java、C++、Python等语言,一种高效率和优秀兼容性二进制数据传输格式,使用第三方工具可以良好支持C#语言,由于它独立于语言和平台,可以在Unity客户端和C++服务器,或Python服务器之间进行良好交互,故而是目前Unity移动端网络游戏开发的主流数据交互协议。

Protocolbuffer的基本语法

字段关键字:

Package:包定义,名空间。

required:表示该值是必须要设置的。

optional:可选字段,消息格式中该字段可以有0个或1个值(不超过1个)。

repeated:重复的值的顺序会被保留,表示该值是一个集合。

注释:

Proto文件可以使用//注释不需要编译的内容。

序列化proto数据参考代码: