客户端到服务器端工作原理(客户端与服务端的通信协议)

什么是客户端与服务端的通信协议

无论使用Netty还是使用原始的Socket编程,基于TCP通信的数据包格式均为二进制,协议指的就是客户端与服务端事先商量好的,每一个二进制数据包中的每一段字节分别代表什么含义的规则。一个简单的登录指令如下图所示。

客户端到服务器端工作原理(客户端与服务端的通信协议)(1)

在这个数据包中,第一个字节为1表示这是一个登录指令,接下来是用户名和密码,这两个值以\0分割,客户端发送这段二进制数据包到服务端,服务端就能根据这个协议来取出用户名和密码,执行登录逻辑。在实际的通信协议设计中,我们会考虑更多细节,比这个协议稍微复杂一些。

那么,协议设计好之后,客户端与服务端的通信过程又是怎样的呢?

客户端与服务端的通信如下图所示。

客户端到服务器端工作原理(客户端与服务端的通信协议)(2)

1. 客户端把一个Java对象按照通信协议转换成二进制数据包。

2. 通过网络,把这段二进制数据包发送到服务端。在数据的传输过程中,由TCP/IP协议负责数据的传输,与应用层无关。

3. 服务端接收到数据之后,按照协议取出二进制数据包中的相应字段,包装成Java对象,交给应用逻辑处理。

4. 服务端处理完之后,如果需要生成响应给客户端,则按照相同的流程进行。

本文摘自《跟闪电侠学Netty》

客户端到服务器端工作原理(客户端与服务端的通信协议)(3)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页